final object ScriptParsers

Performs the following context-free rewritings:

- Places all pattern variables in Bind nodes. In a pattern, for identifiers x: 


x  => x @ _
x:T  => x @ (_ : T)



  • Removes pattern definitions (PatDef's) as follows: If pattern is a simple (typed) identifier: 

    
    val x = e     ==>  val x = e
    val x: T = e  ==>  val x: T = e
    
    

    if there are no variables in pattern 

    
    val p = e  ==>  e match (case p => ())
    
    

    if there is exactly one variable in pattern 

    
    val x_1 = e match (case p => (x_1))
    
    

    if there is more than one variable in pattern 

    
    val p = e  ==>  private synthetic val t$ = e match (case p => (x_1, ..., x_N))
    val x_1 = t$._1
    ...
    val x_N = t$._N
    
    

- Removes function types as follows: 


(argtpes) => restpe   ==>   scala.Function_n[argtpes, restpe]



- Wraps naked case definitions in a match as follows: 


{ cases }   ==>   (x => x.match {cases}), except when already argument to match



Constructors

Members

class ScriptParser