anchor.diff:      ;
   
   iterationStatement
  -    :   While '(' expression ')' statement
  -    |   Do statement While '(' expression ')' ';'
  -//    |   For '(' forCondition ')' statement
  -    ;
  -
  -//forCondition
  -//	:   forDeclaration ';' forExpression? ';' forExpression?
  -//	|   expression? ';' forExpression? ';' forExpression?
  -//	;
  -//
  -//forDeclaration
  -//    :   declarationSpecifiers initDeclaratorList
  -//	| 	declarationSpecifiers
  -//    ;
  -
  -forExpression
  -    :   assignmentExpression
  -    |   forExpression ',' assignmentExpression
  +    :   'while' '(' expression ')' statement
  +    |   'do' statement 'while' '(' expression ')' ';'
       ;
   
   jumpStatement
       :   'continue' ';'
       |   'break' ';'
       |   'return' expression? ';'
  -    |   'goto' unaryExpression ';' // GCC extension
  -    ;
  -
  -//compilationUnit
  -//    :   translationUnit? EOF
  -//    ;
  -//
  -//translationUnit
  -//    :   externalDeclaration
  -//    |   translationUnit externalDeclaration
  -//    ;
  -//
  -//externalDeclaration
  -//    :   functionDefinition
  -//    |   declaration
  -//    |   ';' // stray ;
  -//    ;
  -//
  -//functionDefinition
  -//    :   declarationSpecifiers? declarator declarationList? compoundStatement
  -//    ;
  -//
  -//declarationList
  -//    :   declaration
  -//    |   declarationList declaration
  -//    ;
  -
  -Break : 'break';
  -Case : 'case';
  -Const : 'const';
  -Continue : 'continue';
  -Default : 'default';
  -Do : 'do';
  -Else : 'else';
  -Enum : 'enum';
  -For : 'for';
  -If : 'if';
  -Return : 'return';
  -Short : 'short';
  -Signed : 'signed';
  -Sizeof : 'sizeof';
  -Static : 'static';
  -Switch : 'switch';
  -While : 'while';
  -
  -
  -LeftParen : '(';
  -RightParen : ')';
  -LeftBracket : '[';
  -RightBracket : ']';
  -LeftBrace : '{';
  -RightBrace : '}';
  -
  -Less : '<';
  -LessEqual : '<=';
  -Greater : '>';
  -GreaterEqual : '>=';
  -LeftShift : '<<';
  -RightShift : '>>';
  -
  -Plus : '+';
  -PlusPlus : '++';
  -Minus : '-';
  -MinusMinus : '--';
  -Star : '*';
  -Div : '/';
  -Mod : '%';
  -
  -And : '&';
  -Or : '|';
  -AndAnd : '&&';
  -OrOr : '||';
  -Caret : '^';
  -Not : '!';
  -Tilde : '~';
  -
  -Question : '?';
  -Colon : ':';
  -Semi : ';';
  -Comma : ',';
  -
  -Assign : '=';
  -// '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|='
  -StarAssign : '*=';
  -DivAssign : '/=';
  -ModAssign : '%=';
  -PlusAssign : '+=';
  -MinusAssign : '-=';
  -LeftShiftAssign : '<<=';
  -RightShiftAssign : '>>=';
  -AndAssign : '&=';
  -XorAssign : '^=';
  -OrAssign : '|=';
  -
  -Equal : '==';
  -NotEqual : '!=';
  -Dot : '.';
  -Ellipsis : '...';
  +    ;
   
   Identifier
       :   IdentifierNondigit
  
positive.code: IdentifierNondigit
      :   Nondigit
      |   UniversalCharacterName
      //|   // other implementation-defined characters...
      ;
  
  fragment
  
negative.code:     :   Constant
      ;
  
  typeName
      :   Identifier
      ;
  
  statement
  