anchor.diff:  	END_FUNCTION
   ;
   
  -getStmt : GET WS valueStmt WS? ',' WS? valueStmt? WS? ',' WS? valueStmt;
  +getStmt : GET WS fileNumber WS? ',' WS? valueStmt? WS? ',' WS? valueStmt;
   
   goSubStmt : GOSUB WS valueStmt;
   
  
positive.code: 
  // literals
  STRINGLITERAL : '"' (~["\r\n] | '""')* '"';
  DATELITERAL : '#' [0-9]+ '/' [0-9]+ '/' [0-9]+ '#';
  COLORLITERAL : '&H' [0-9A-F]+ '&'?;
  INTEGERLITERAL : (PLUS|MINUS)? ('0'..'9')+ ( ('e' | 'E') INTEGERLITERAL)* ('#' | '&')?;
  DOUBLELITERAL : (PLUS|MINUS)? ('0'..'9')* '.' ('0'..'9')+ ( ('e' | 'E') (PLUS|MINUS)? ('0'..'9')+)* ('#' | '&')?;
  BYTELITERAL : ('0'..'9')+;
  // identifier
  IDENTIFIER :  LETTER (LETTERORDIGIT)* | L_SQUARE_BRACKET (~[\]\r\n])+ R_SQUARE_BRACKET;
  // 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)+;
  
  
  // letters
  fragment LETTER : [a-zA-Z_äöüÄÖÜ];
  fragment LETTERORDIGIT : [a-zA-Z0-9_äöüÄÖÜ];
  
  // case insensitive chars
  
negative.code: 
  unloadStmt : UNLOAD WS valueStmt;
  
  unlockStmt : UNLOCK WS fileNumber (WS? ',' WS? valueStmt (WS TO WS valueStmt)?)?;
  
  // operator precedence is represented by rule order
  valueStmt : 
  