anchor.diff:      : NAME | prefixexp '[' exp ']' | prefixexp '.' NAME
       ;
   prefixexp
  -    : var_ | functioncall | '(' exp ')'
  -    ;
  -functioncall
  +    : var_ | funcall | '(' exp ')'
  +    ;
  +funcall
       : prefixexp args | prefixexp ':' NAME args
       ;
   */
   
   args
  -    : '(' explist? ')' | tableconstructor | string_
  -    ;
  -
  -functiondef
  -    : 'function' funcbody
  -    ;
  -
  -funcbody
  -    : '(' parlist? ')' block 'end'
  -    ;
  -
  -parlist
  -    : namelist (',' '...')? | '...'
  +    : '(' explist? ')'
  +    ;
  +
  +list
  +    : '[' eltlist? ']'
  +    ;
  +
  +tuple
  +    : '(' eltlist? ')'
  +    ;
  +
  +eltlist
  +    : exp (',' exp)* ','?
       ;
   
   tableconstructor
  
positive.code:     : var_OrExp nameAndArgs*
      ;
  
  functioncall
      : var_OrExp nameAndArgs+
      ;
  
  
negative.code: operatorPower
      : '^';
  
  unit
      : '(' ')'
      ;
  
  bool_
      : 'true'
      | 'false'
      ;
  
  int_
      : INT
      ;
  
  hexint
      : HEX
      ;
  
  float_
      : FLOAT
      ;
  
  hexfloat
      : HEX_FLOAT
      ;
  
  string_
  