[antlr-interest] Promoting root nodes

Sean Walton swalton at cs.utah.edu
Fri Aug 4 11:14:00 PDT 2006


I have tried this in several configurations without success:

stdc_AssignmentExpression
    : stdc_Lvalue ('='^ | '*='^ | '/='^ | '%='^ | '+='^ | '-='^ | '<<='^ 
| '>>='^ | '&='^ | '^='^ | '|='^) stdc_AssignmentExpression
    | stdc_ConditionalExpression
    ;

Instead I get:

 >java -classpath 
"antlr-3.0b3.jar;stringtemplate-2.3b9.jar;antlr-2.7.6.jar" 
org.antlr.Tool ANesC.g
ANTLR Parser Generator   Early Access Version 3.0b3 (July 21, 2006)  
1989-2006
ANesC.g:610:52: Decision can match input such as "'else'" using multiple 
alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
internal error: ANesC.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.ebnf(CodeGenTreeWalker.java:2161)
org.antlr.codegen.CodeGenTreeWalker.element(CodeGenTreeWalker.java:1619)
org.antlr.codegen.CodeGenTreeWalker.alternative(CodeGenTreeWalker.java:1104)
org.antlr.codegen.CodeGenTreeWalker.block(CodeGenTreeWalker.java:988)
org.antlr.codegen.CodeGenTreeWalker.rule(CodeGenTreeWalker.java:716)
org.antlr.codegen.CodeGenTreeWalker.rules(CodeGenTreeWalker.java:507)
org.antlr.codegen.CodeGenTreeWalker.grammarSpec(CodeGenTreeWalker.java:449)
org.antlr.codegen.CodeGenTreeWalker.grammar(CodeGenTreeWalker.java:301)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:406)
org.antlr.Tool.processGrammar(Tool.java:320)
org.antlr.Tool.process(Tool.java:251)
org.antlr.Tool.main(Tool.java:70)

which seems to be an internal defect.  I also tried the '^^' without 
success.
Also, if a nonterminal resolves to a finite terminal list (like the 
operators above), why can't I use '^' or '^^'?
-Sean


More information about the antlr-interest mailing list