anchor.diff:          )
   
   #    "Type" variable_name  EQUAL "Type" LBRACE member COLON expression RBRACE
  -#        "Coord" c1  EQUAL Coord{x COLON 1 COMMA2 y COLON foo}SEMICOLON
  +#        "Coord" c1  EQUAL Coord{x COLON 1 COMMA y COLON foo}SEMICOLON
   
   #    "Type" variable_name  EQUAL Member expression SEMICOLON
   #    "tagged" "Member" [ pattern ]
   #    "tagged" "Type" [ member COLON pattern ]
  -#    "tagged" { pattern COMMA2 pattern }
  +#    "tagged" { pattern COMMA pattern }
   #    "case"  LPAREN f LPAREN a RPAREN RPAREN  matches
   #        "tagged" "Valid" .x  COLON  return x SEMICOLON
   #        "tagged" "Invalid"  COLON  return 0 SEMICOLON
  
positive.code:         "match"
          LBRACE match_arg (COMMA match_arg)* RBRACE EQUAL expression SEMICOLON
  
      rule module_declaration:
          "module" [ LBRACKET "Module" RBRACKET ] module_name [ HASH  argument_list ]
          LPAREN [ Type_item_or_name ] [ VAR ] [ STAR ] RPAREN provisos
          module_item
          "endmodule" [ COLON module_name]
  
      rule package_statement:
          "package" Package_name SEMICOLON
          package_statement_list
          "endpackage" [ COLON  Package_name]
  
  #    Type_item_or_name VAR LARROW module_name argument_list SEMICOLON
  #    Type_item_or_name VAR LARROW module_name argument_list COMMA2
  #        "clocked_by" clock_name COMMA2
  #        "reset_by" reset_name ] RPAREN SEMICOLON
  
      rule tagged_match_arg:
  
negative.code: 
  ###########jca
  
      rule expression: expr<<[]>>
  
      rule function_name: VAR
  