anchor.diff:  
       rule port_name2: VAR
   
  -    rule provisos: "provisos" "\\(" expression (',' expression )* "\\)"
  +    rule provisos: "provisos" LPAREN expression (COMMA expression )* RPAREN
   
       rule ready_port: VAR
   
  -    rule return_statement: "return" expression ';'
  +    rule return_statement: "return" expression SEMICOLON
   
       rule rule_name: VAR
   
  -    rule rule_predicate: "\\(" expression "\\)"
  -
  -    rule rule_satements: "RULESST"
  -
  -    rule rule_statements: "RULEST"
  +    rule rule_predicate: LPAREN expression RPAREN
   
       rule rules_name: VAR
   
  
positive.code:         | for_statement
          | variable_declaration_and_initializations
          )*
          "endmodule" [ ":" module_name]
  
      rule package_statement:
          "package" Package_name ';'
          typedef_statements
          import_statements
          interface_declarations
          module_declarations
          "endpackage" [ ":"  Package_name]
  
  #    "Rules"
  #    "Tuple2#" "\\("t1 "," t2"\\)"  ... "Tuple7#" "\\("t1 ","... "," t7"\\)"
  #    "int" | "Nat" | "Maybe#" "\\(" t "\\)"
  #    Type_name
  #    Type_name "#" "\\(" type_variable "\\)"
  
  #    Ifc_type ifc_name "<-" module_name "\\("parameter"\\)" ';'
  #    Ifc_type ifc_name "<-" module_name "\\("[parameter ","
  #        "clocked_by" clock_name ","
  #        "reset_by" reset_name ] "\\)" ';'
  
      rule rule_statement:
          "rule" rule_name [rule_predicate] ';'
          action_statements
          "endrule" [ ":"  rule_name ]
  
      rule rules_statement:
          "rules" [ ":"  rules_name]
          rule_satements
          (variable_declaration_or_call ';')*
          "endrules" [ ":"  rules_name]
  
      rule action_statement:
          "action" [ ":"  action_name] [ ';' ]
          action_statements
          "endaction" [ ":" action_name]
  
      rule Type_name: VAR
  
      rule Type_item:
          ( "Bit#" | "Int#" | "Uint#" | "ComplexF#" | "Reg#" | "FIFO#" | "Maybe#" ) "\\(" expression "\\)"
          | "Integer" | "Bool" | "String" | "Action" | "ActionValue#" "\\(" VAR "\\)"
          | "Nat"
  
  #    "type identifier "<-" expression ';'
  #    identifier "<-" expression ';'
  
      rule let_statement:
          "let" VAR  ( "=" | "<-" ) expression ';'
  
  #    register_name "<=" expression ';'
  
      rule Typeclass: VAR
  
  
negative.code: parser Calculator:
      ignore:    "[ \r\t\n]+"
      ignore:    "\\/\\/.*?\r?\n"
      token BEGIN: "begin"
      token END: "end"
      token ENDTOKEN: "$"
      token NUM: "[0-9]+"
      token VAR: "[a-zA-Z_][a-zA-Z0-9_]*"
      token STR:   r'"([^\\"]+|\\.)*"'
      token LPAREN: "\\("
      token RPAREN: "\\)"
      token HASH: "#"
      token DOT: r"[\\.]"
      token COMMA: ','
      token COMMA2: ","
      token COLON: ':'
      token SEMICOLON: ';'
      token LBRACKET: "\\["
      token RBRACKET: "\\]"
      token LBRACE: "{"
      token RBRACE: "}"
      token QUESTION: "\\?"
      token CARET: "\\^"
      token LESS: "<"
      token LESSLESS: "<<"
      token LEQ: "<="
      token LARROW: "<-"
      token EQEQ: "=="
      token EQUAL: "="
      token STAR: "[*]"
  
      rule case_value:
          "case" LPAREN expression RPAREN
          (VAR COLON 'return' expression SEMICOLON )*
          "endcase"
  
      # Each line can either be an expression or an assignment statement
      rule gggoal:   expr<<[]>> ENDTOKEN            {{ return expr }}
                 | "set" VAR expr<<[]>> ENDTOKEN  {{ globalvars[VAR] = expr }}
                                             {{ return expr }}
  
      # An expression is the sum and difference of factors
  