anchor.diff:  // equal to ufixedConst, but nice to separate semantically
   statementNumber     : NUMBER;
   
  +// TODO incomplete
  +// http://www.fortran.com/FortranForTheIBM704.pdf#16
   expression : sign? unsigned=unsignedExpression;
   unsignedExpression : '(' expression ')' | variable | subscript | functionCall | ufixedConst | ufloatConst;
   
  +// http://www.fortran.com/FortranForTheIBM704.pdf#14
   functionCall : function=FUNC_CANDIDATE '(' expression (',' expression)* ')';
   
  +// http://www.fortran.com/FortranForTheIBM704.pdf#11
   ufixedConst : NUMBER ;
   ufloatConst : integer=NUMBER? '.' (fraction=NUMBER
                 | fractionE=FLOAT_FRAC expSign=sign? exponent=ufixedConst)? ;
  
positive.code:                         on=statementNumber ',' off=statementNumber;
  ifSenseSwitch         : 'IF' '(' 'SENSE' 'SWITCH' senseSwitch=ufixedConst ')'
                          down=statementNumber ',' up=statementNumber;
  ifAccumulatorOverflow : 'IF' 'ACCUMULATOR' 'OVERFLOW'
                          on=statementNumber ',' off=statementNumber;
  ifQuotientOverflow    : 'IF' 'QUOTIENT' 'OVERFLOW'
  
negative.code: 
  // parser rules
  
  // http://www.fortran.com/FortranForTheIBM704.pdf#9
  program : card*;
  card : STMTNUM? statement NEWCARD?;
  statement : arithmeticFormula
  