anchor.diff:  }
   
   tokens {
  -	CONSTANT_DEF;
  -	TABLE_DEF;
  +	SPEC;
  +	CONSTANT;
  +	TABLE;
  +	CROSSP;
  +	INSTR;
  +	RTL;
   }
   
   start: specification EOF;
   
   specification
   	: ( part SEMI! )*
  +		{ ## = #(#[SPEC], ##) }
   	;
   
   part
  
positive.code: 
  num: NUM;
  
  constant_def!
  	: name:NAME EQUATE! value=constant_expr
  		{ self.constants[name.getText()] = value }
  	;
  
  constant returns [res]
  	: n:NUM { res = int(n.getText()) }
  	;
  
  constant_expr returns [res]
  	: x=constant { res = x }
  	| x=constant PLUS y=constant { res = x + y }
  	| x=constant MINUS y=constant { res = x - y }
  	;
  
  operands_decl
  	: "OPERAND" operand_decl ( COMMA operand_decl )*
  	;
  
  operand_decl
  	: NAME EQUATE LCURLY parameter_list RCURLY
  	| NAME parameter_list func_parameter ASSIGNSIZE exp
  	;
  	
  func_parameter
  	: LSQUARE parameter_list RSQUARE
  	|
  	;
  
  definition
  
negative.code:     lexer = Lexer()
      parser = Parser(lexer)
      parser.start()
      ast = parser.getAST()
      print ast
  }
  
  header "sslTreeParser.__main__" {
      from sslLexer import Lexer
      from sslParser import Parser
      
      lexer = Lexer()
      parser = Parser(lexer)
      parser.start()
      walker = Walker()
      ast = parser.getAST()
      print ast
      walker.start(ast)
  }
  
  header "sslTreeParser.__init__" {
      self.constants = {}
      self.tables = {}
      self.functions = {}
  