anchor.diff:      ;
   
   exp
  -    : 'nil' | 'false' | 'true' | number | string		
  -	| '...'											
  -	| functiondef								
  -    | prefixexp										
  -	| tableconstructor								
  -	| <assoc=right> exp operatorPower exp			
  -	| operatorUnary exp								
  -	| exp operatorMulDivMod exp		
  -	| exp operatorAddSub exp						
  -	| <assoc=right> exp operatorStrcat exp			
  -	| exp operatorComparison exp					
  -	| exp operatorAnd exp							
  -	| exp operatorOr exp	
  -	;
  +    : 'nil' | 'false' | 'true'
  +    | number
  +    | string
  +    | '...'
  +    | functiondef
  +    | prefixexp
  +    | tableconstructor
  +    | <assoc=right> exp operatorPower exp
  +    | operatorUnary exp
  +    | exp operatorMulDivMod exp
  +    | exp operatorAddSub exp
  +    | <assoc=right> exp operatorStrcat exp
  +    | exp operatorComparison exp
  +    | exp operatorAnd exp
  +    | exp operatorOr exp
  +    | exp operatorBitwise exp
  +    ;
  +
  +prefixexp
  +    : varOrExp nameAndArgs*
  +    ;
  +
  +functioncall
  +    : varOrExp nameAndArgs+
  +    ;
  +
  +varOrExp
  +    : var | '(' exp ')'
  +    ;
   
   var
       : (NAME | '(' exp ')' varSuffix) varSuffix*
       ;
   
  -prefixexp
  -    : varOrExp nameAndArgs*
  -    ;
  -
  -functioncall
  -    : varOrExp nameAndArgs+
  -    ;
  -
  -varOrExp
  -    : var | '(' exp ')'
  +varSuffix
  +    : nameAndArgs* ('[' exp ']' | '.' NAME)
       ;
   
   nameAndArgs
       : (':' NAME)? args
  -    ;
  -
  -varSuffix
  -    : nameAndArgs* ('[' exp ']' | '.' NAME)
       ;
   
   /*
  
positive.code: fragment
  HexEscape
      : '\\' 'x' HexDigit HexDigit
      ;
  
  fragment
  
negative.code: 	: '+' | '-';
  
  operatorMulDivMod
  	: '*' | '/' | '%' | '//';
  
  operatorBitwise
  	: '&' | '|' | '~' | '<<' | '>>';
  
  operatorUnary
      : 'not' | '#' | '-' | '~';
  
  operatorPower
      : '^';
  