     o "Expression . . .",                       -> new SplatNode $1
   ]
   
+  # Variables and properties that can be assigned to.
   SimpleAssignable: [
     o "Identifier",                             -> new ValueNode $1
     o "Value Accessor",                         -> $1.push $2

  ]

  # The source of a comprehension is an array or object with an optional filter
  # clause. If it's an array comprehension, you can also choose to step throug
  # in fixed-size increments.
  ForSource: [
    o "IN Expression",                          -> {source:   $2}
    o "OF Expression",                          -> {source:   $2, object: true}
    o "ForSource WHEN Expression",              -> $1.filter: $3; $1
    o "ForSource BY Expression",                -> $1.step:   $3; $1
  ]

  # The CoffeeScript switch/when/else block replaces the JavaScript

    o "Super"
  ]

  # Binds a function call to a context and/or arguments.
  Curry: [
    o "Value <- Arguments",                     -> new CurryNode $1, $3
  ]
