anchor.diff:      rule struct_arg:
           [ "numeric" ] "type" type_variable
   
  +    rule struct_arg_list:
  +        LPAREN struct_arg (COMMA struct_arg)* RPAREN
  +
       rule typedef_statement:
           "typedef" 
           Member
   
       rule Member:
  -        ( ( "type" | Type_item_or_name | NUM ) [Type_name]
  -            [ HASH LPAREN struct_arg (COMMA struct_arg)* RPAREN ] SEMICOLON
  -        | "enum" LBRACE Elements ( COMMA Elements )* RBRACE Type_name
  +        ( ( "type" | Type_item_or_name | NUM ) [VAR]
  +            [ HASH struct_arg_list ] SEMICOLON
  +        | "enum" LBRACE Elements ( COMMA Elements )* RBRACE VAR
               [ deriving_clause ] SEMICOLON
           | "struct" LBRACE
               ( Type_item_or_name VAR SEMICOLON )* RBRACE
  -            Type_name [ HASH LPAREN struct_arg (COMMA struct_arg)* RPAREN ]
  +            VAR [ HASH struct_arg_list ]
               [ deriving_clause ] SEMICOLON
           | "union" "tagged"
               LBRACE (Member)+ RBRACE
  -            Type_name [ HASH [ "numeric" ] "type" type_variable ]
  +            VAR
  +            [ HASH
  +                ( struct_arg
  +                | struct_arg_list
  +                )
  +            ]
               [ deriving_clause ] SEMICOLON
           )
   
  
positive.code:         ( function_body_statement )*
          "endaction" [ COLON VAR]
  
      rule Type_name: VAR
  
      rule Type_item_basic:
          ( "Bit#" | "Int#" | "Uint#" | "ComplexF#" | "Reg#" | "FIFO#" | "Maybe#" )
             LPAREN expression RPAREN
  
negative.code:         "endactionvalue"
  
      rule function_header:
          FUNCTION Type_item_or_name [function_name] [ argument_list ]
  
      rule function_statement:
          function_header
  