anchor.diff:  /** variable declarations, which are really constant declarations at this point */
   variabledecls: VARIABLES^ LBRACE! (variabledecl SEMI!)* RBRACE!;
   /** feedback for one goalnode */
  -nodefeedback: nodeid LBRACE! ((hintdecl | jitdecl | answerdecl | propertydecl) SEMI!)* RBRACE!
  +nodefeedback: nodeid LBRACE! ((hintdecl | jitdecl | compdecl | answerdecl | propertydecl) SEMI!)* RBRACE!
   {
   	#nodefeedback = #([NODEFEEDBACK, "NODEFEEDBACK"], #nodefeedback);
   };
  
positive.code: jitdecl:
  	JIT^ (LBRACE! valexpr RBRACE!) COLON! stringlit
  	| JIT^ COLON! s:stringlit { #jitdecl = #(JIT, s); };
  answerdecl: ANSWER^ COLON! constructor;
  constructor: literal | callconstructor;
  callconstructor: ID^ LPAREN! literal (COMMA literal)* RPAREN!;
  
negative.code: 	UNTIL="until";
  	AND="and";
  	OR="or";
  	ONCOMPLETE="OnComplete";
  }
  
  // ID component
  