anchor.diff:      |   DefVar
       ;
   
  -// 5.2.4.2 Implements Directive
  -implementsDirective         :   Implements ID;
  -
   // 5.2.3.1 Module Variable Declaration Lists
   variableDeclaration :   (Global | Public | Private | Dim) Shared? variableDclList;
   variableDclList     :   (variableDcl | witheventsVariableDcl) (',' (variableDcl | witheventsVariableDcl))*; 
  
positive.code:     ;
  
  // 5.3.1.3 Procedure Names
  subroutineName  :   ID | prefixedName;
  functionName    :   typedName | ID | prefixedName;
  prefixedName    :   eventHandlerName | implementedName | lifecycleHandlerName;
  
  // 5.3.1.4 Function Type Declarations
  functionType    :   As ID arrayDesignator?;
  arrayDesignator :   '(' ')';
  
  // 5.3.1.5 Parameter Lists
  
negative.code: valueParam              :   positionalParam;
  positionalParam         :   parameterMechanism? paramDcl;
  optionalParam           :   optionalPrefix paramDcl defaultValue?;
  paramArray              :   ParamArray identifier '(' ')' (As (Variant | '[' Variant ']'))?;
  paramDcl                :   untypedNameParamDcl | typedNameDcl;
  untypedNameParamDcl     :   identifier parameterType?;
  typedNameDcl            :   typedName arrayDesignator?;
  optionalPrefix          :   Optional parameterMechanism? | parameterMechanism? Optional;
  parameterMechanism      :   ByRef | ByVal;
  parameterType           :   arrayDesignator? As (typeExpression | Any);
  defaultValue            :   '=' constantExpression;
  
  // 5.3.1.8 Event Handler Declarations
  eventHandlerName        :   identifier;
  
  // 5.3.1.9 Implemented Name Declarations
  implementedName         :   identifier;
  
  // 5.3.1.10 Lifecycle Handler Declarations
  lifecycleHandlerName    :   ClassInit | ClassTerm;
  
  // 5.4 Procedure Bodies and Statements
  procedureBody           :   statementBlock;
  
  // 5.4.1 Statement Blocks
  statementBlock          :   (blockStatement EOS)*;
  blockStatement          
      :   statementLabelDefinition; 
      //|   statement;  //|   remStatement 
  //statement               
  //    :   controlStatement
  //    |   dataManipulationStatement
  //    |   errorHandlingStatement
  //    |   fileStatement
  //    ;
  
  // 5.4.1.1 Statement Labels
  statementLabelDefinition    :   identifier ':' | lineNumberLabel ':'?;
  statementLabel              :   identifier | lineNumberLabel;
  statementLabelList          :   statementLabel (',' statementLabel);
  //identifierStatementlabel    :   identifier;
  lineNumberLabel             :   Integerliteral;  // actually can only be a decimal literal.
  
  /*
  // 5.6 Expressions
  