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
class Object
trait Matchable
class Any

Type members

Classlikes

class ScriptParser(source: SourceFile)(using `x$2`: Context) extends Parser