     o     'ParamVar ASSIGN Expression' ,-> Param $1, $3
   ]
   ParamVar: [
-    o 'IDENTIFIER', -> Literal $1
+    o 'IDENTIFIER' ,-> Literal $1
     o 'ThisProperty'
     o 'Array'
     o 'Object'

    # a single generic "Operand OpSymbol Operand"-type rule,
    # but in order to make the precedence binding possible, separate
    # rules are necessary.
    o 'Expression PLUS_MINUS Expression', -> Op $2, $1, $3
    o 'Expression MATH       Expression', -> Op $2, $1, $3
    o 'Expression SHIFT      Expression', -> Op $2, $1, $3
    o 'Expression COMPARE    Expression', -> Op $2, $1, $3
    o 'Expression LOGIC      Expression', -> Op $2, $1, $3
    o 'Expression IMPORT     Expression', -> Import $1, $3, !$2
    o 'Expression RELATION   Expression', ->
      return if $2.charAt(0) is '!'
      then Op($2.slice 1; $1; $3).invert()
      else Op $2, $1, $3

    o 'ArgList OptComma INDENT ArgList OptComma OUTDENT' ,-> $1.concat $4
  ]
  Array: [
    o '[ ArgList OptComma ]' ,-> Arr $2
  ]

  # A reference to a property on `this`.
  ThisProperty: [
    o 'THISPROP' ,-> Value Literal('this'), [Access Literal $1], true
  ]

  # Parenthetical expressions. Note that the **Parenthetical** is a **Value**,
