anchor.diff:  
   expr: log_expr;
   
  -endianness: "ENDIANNESS"^ ( "BIG" | "LITTLE" );
  -
  -fastlist: "FAST"^ fastentry (COMMA! fastentry)*;
  -
  -fastentry: NAME INDEX^ NAME;
  +expr_list: (expr (COMMA! expr)* )?;
  +
  +fast_list: "FAST"^ fast_entry (COMMA! fast_entry)*;
  +
  +fast_entry: NAME INDEX^ NAME;
   
   
   class sslTreeParser extends TreeParser;
  
positive.code:     parser.start()
      walker = Walker()
      ast = parser.getAST()
      print ast
      walker.start(ast)
      
      /*
      for n, (p, b) in walker.functions.iteritems():
          print "%s(%s) %s" % (n, ','.join(p), b.toStringList())
      */
      for n, (p, b) in walker.instructions.iteritems():
          print "%s(%s) %s" % (n, ','.join(p), b.toStringList())
  }
  
  header "sslTreeParser.__init__" {
  
negative.code: ASSIGN: "::=";
  SEMI: ';';
  
  COMMA: ',';
  
  LPAREN: '(';
  RPAREN: ')';
  LSQUARE: '[';
  RSQUARE: ']';
  LCURLY: '{';
  RCURLY: '}';
  
  INDEX: "->";
  THEN: "=>";
  TO: "..";
  AT: '@';
  ASSIGNTYPE: '*' /* ('a'..'z')?*/ ('0'..'9')* '*';
  
  PRIME: '\'';
  
  NOT: '~';
  OR: '|';
  AND: '&';
  XOR
  	: '^'
  		( ('"' ('A'..'Z'|'a'..'z')('A'..'Z'|'a'..'z')* '"') => 
  			'"'! ('A'..'Z'|'a'..'z')('A'..'Z'|'a'..'z')* '"'! { $setType(DECOR); }
  		| )
  	;
  
  