anchor.diff:                            | LBRACE dot_field_item (COMMA dot_field_item)* RBRACE
                             | VAR
                             )
  -                     |  "%"  nterm<<V>>
  +                     |  TOKPERCENT  nterm<<V>>
                        )*                   {{ return v }}
   
       rule fieldname: VAR
   
       rule nterm<<V>>:
  -        [ ("!" | "~" | "-" ) ] term<<V>> {{ return term }}
  +        [ (TOKEXCLAIM | TOKTILDE | TOKMINUS ) ] term<<V>> {{ return term }}
   
       rule call_params<<V>>:
           LPAREN ( assign_value [VAR]( COMMA assign_value [VAR])* RPAREN | RPAREN )
  
positive.code:         [ VAR COLON ] dot_item
  
      rule tdot_field_item:
          "tagged" VAR [ dot_item ]
  
      rule dot_field_list:
          dot_item
  
negative.code:         DOT ( term<<[]>> | STAR )
  
      rule match_statement:
          TOKMATCH
          LBRACE match_arg (COMMA match_arg)* RBRACE ( EQUAL | LARROW ) assign_value SEMICOLON
  
      rule module_param:
          Type_item_or_name [ VAR ] [ STAR ]
  
      rule module_declaration:
          TOKMODULE [ LBRACKET assign_value RBRACKET ] VAR [ HASH  argument_list ]
          LPAREN [ module_param (COMMA module_param)* ] RPAREN
          [ provisos ]
          SEMICOLON
          [
              module_item
              TOKENDMODULE [ COLON VAR]
          ]
  
      rule package_statement:
          TOKPACKAGE VAR SEMICOLON
          ( package_statement_item )*
          TOKENDPACKAGE [ COLON  VAR]
  
      rule tagged_match_arg:
          VAR COLON DOT VAR
  