anchor.diff:  
   arg : (OPTIONAL WS)? ((BYVAL | BYREF) WS)? (PARAMARRAY WS)? ambiguousIdentifier (WS? LPAREN WS? RPAREN)? (WS? asTypeClause)? (WS? argDefaultValue)?;
   
  -argDefaultValue : EQ WS? (literal | ambiguousIdentifier);
  +argDefaultValue : EQ WS? valueStmt;
   
   subscripts : subscript (WS? ',' WS? subscript)*;
   
  
positive.code: 	END_FUNCTION
  ;
  
  getStmt : GET WS valueStmt WS? ',' WS? valueStmt? WS? ',' WS? valueStmt;
  
  goSubStmt : GOSUB WS valueStmt;
  
  
negative.code: 
  // literals
  STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
  OCTLITERAL : '&O' [0-8]+ '&'?;
  HEXLITERAL : '&H' [0-9A-F]+ '&'?;
  SHORTLITERAL : (PLUS|MINUS)? DIGIT+ ('#' | '&' | '@')?;
  INTEGERLITERAL : SHORTLITERAL (E SHORTLITERAL)?;
  DOUBLELITERAL : (PLUS|MINUS)? DIGIT* '.' DIGIT+ (E SHORTLITERAL)?;
  
  DATELITERAL : '#' DATEORTIME '#';
  fragment DATEORTIME : DATEVALUE WS? TIMEVALUE | DATEVALUE | TIMEVALUE;
  fragment DATEVALUE : DATEVALUEPART DATESEPARATOR DATEVALUEPART (DATESEPARATOR DATEVALUEPART)?;
  fragment DATEVALUEPART : DIGIT+ | MONTHNAME;
  fragment DATESEPARATOR : WS? [/,-]? WS?;
  fragment MONTHNAME : ENGLISHMONTHNAME | ENGLISHMONTHABBREVIATION;
  fragment ENGLISHMONTHNAME : J A N U A R Y | F E B R U A R Y | M A R C H | A P R I L | M A Y | J U N E  | A U G U S T | S E P T E M B E R | O C T O B E R | N O V E M B E R | D E C E M B E R;
  fragment ENGLISHMONTHABBREVIATION : J A N | F E B | M A R | A P R | J U N | J U L | A U G | S E P |  O C T | N O V | D E C;
  fragment TIMEVALUE : DIGIT+ AMPM | DIGIT+ TIMESEPARATOR DIGIT+ (TIMESEPARATOR DIGIT+)? AMPM?;
  fragment TIMESEPARATOR : WS? (':' | '.') WS?;
  fragment AMPM : WS? (A M | P M | A | P);
  
  // whitespace, line breaks, comments, ...
  LINE_CONTINUATION : [ \t]+ '_' '\r'? '\n' -> skip;
  NEWLINE : (':' WS?) | (WS? ('\r'? '\n') WS?);
  COMMENT : WS? ('\'' | ':'? REM WS) (LINE_CONTINUATION | ~('\n' | '\r'))* -> skip;
  WS : ([ \t] | LINE_CONTINUATION)+;
  
  // identifier
  IDENTIFIER :  (~[\[\]\(\)\r\n\t.,'"|!@#$%^&*-+:=; ])+ | L_SQUARE_BRACKET (~[!\]\r\n])+ R_SQUARE_BRACKET;
  
  
  // letters
  fragment LETTER : [a-zA-Z_äöüÄÖÜ];
  fragment DIGIT : [0-9];
  fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
  
  // case insensitive chars
  