anchor.diff:        anonymousFunction
         { $expression = new Expression(null);
           $expression.setTerm($anonymousFunction.function); }
  -    | conditionalExpression
  -      { $expression = new Expression(null); 
  -        $expression.setTerm($conditionalExpression.term); }
  +    | let
  +      { $expression = new Expression(null);
  +        $expression.setTerm($let.let); }
  +    | ifExpression
  +      { $expression = new Expression(null);
  +        $expression.setTerm($ifExpression.term); }
       | switchExpression
         { $expression = new Expression(null); 
           $expression.setTerm($switchExpression.term); }
  
positive.code:     ;
  
  conditionalBranch returns [Expression expression]
      : conditionalExpression
        { $expression = new Expression(null);
          $expression.setTerm($conditionalExpression.term); }
      | disjunctionExpression
        { $expression = new Expression(null);
          $expression.setTerm($disjunctionExpression.term); }
  
negative.code:       conditionalBranch
        { $letClause.setExpression($conditionalBranch.expression); 
          $letClause.setEndToken(null); }
      ;
  
  switchExpression returns [SwitchExpression term]
  