anchor.diff:  	| #( APPL post_match_term post_match_term )
   	| #( TRNSF n=id )
   		{
  -            self.writeln("args[%i] = self.%s(args[%i])" % (self.argn, n, self.argn))
  +            self.writeln("_args[%i] = self.%s(_args[%i])" % (self.argn, n, self.argn))
               self.argn += 1
   		}
   	| a:ACTION
   		{
  -            self.writeln("argn = %s " % self.argn)
  -            self.writeln("args[%i] = %s" % (self.argn, #a.getText()))
  +            self.writeln("_argn = %s " % self.argn)
  +            self.writeln("_args[%i] = %s" % (self.argn, #a.getText()))
               self.argn += 1
   		}
   	| NIL
  
positive.code: 	        }
  	| pattern=t:stringify_term
  	        {
                  self.writeln("if not self.factory.match(%r, target, args, kargs):" % pattern)
                  self.indent()
                  self.writeln("raise Failure")
                  self.deindent()
                  if not self.is_static_term(#t):
                      self.argn = 0
                      self.post_match_term(#t)
                      self.writeln("result = self.factory.make(%r, *args, **kargs)" % pattern)
  	        }
  	;
  
  
negative.code: 	| #( APPL c=build_term a=build_term )
  		{ ret = "self.factory.makeAppl(%s,%s)" % (c, a) }
  	| #( TRNSF n=id a=build_trnsf_args)
  		{ ret = "self.%s(_target%s)" % (n, a) }
  	| a:ACTION
  		{ ret = #a.getText() }
  	| NIL
  