[antlr-interest] Re: Backtrack option breaks AST rewrite

Thomas Brandon tbrandonau at gmail.com
Mon Jul 24 00:27:16 PDT 2006


And also, this grammar:
grammar ASTOpsErr;
options {
    backtrack=true;
    k=2;
    output=AST;
}
a :( 'b'^ 'i'? 'c'!
  |  'b' 'i'
  )
  ;
results in the exception:
internal error: ASTOpsErr.g : java.lang.IllegalArgumentException:
Can't find template tokenRefRoot.st
org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.java:485)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:372)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.java:384)
org.antlr.codegen.CodeGenTreeWalker.getTokenElementST(CodeGenTreeWalker.java:159)
org.antlr.codegen.CodeGenTreeWalker.atom(CodeGenTreeWalker.java:1917)
org.antlr.codegen.CodeGenTreeWalker.element(CodeGenTreeWalker.java:1348)
org.antlr.codegen.CodeGenTreeWalker.alternative(CodeGenTreeWalker.java:1104)
org.antlr.codegen.CodeGenTreeWalker.block(CodeGenTreeWalker.java:988)
org.antlr.codegen.CodeGenTreeWalker.rule(CodeGenTreeWalker.java:716)
,,,

Backtracking generates syntactic predicates containing tree operators
but the AST templates are removed for syntactic predicates by "rule"
in codegen.g.

Tom.


More information about the antlr-interest mailing list