[antlr-interest] tree rewrite - tokenRefRootTrack.st?
r m
flybypsy at yahoo.com
Fri Nov 17 11:59:27 PST 2006
Hi,
On running the grammar below with antlr3.0-b5, I get
the errors:
>java -classpath ..\..\lib\antlr-2.7.7.jar;..\..
\lib\antlr-3.0b5.jar;..\..\lib\stringtemplate-3.0.jar;.
org.antlr.Tool SLang
.g
ANTLR Parser Generator Version 3.0b5 (November 15,
2006) 1989-2006
error(10): internal error: SLang.g :
java.lang.IllegalArgumentException: Ca
n't find template tokenRefRootTrack.st
org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.
java:485)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.j
ava:372)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.j
ava:384)
org.antlr.stringtemplate.StringTemplateGroup.lookupTemplate(StringTemplateGroup.
java:464)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.j
ava:372)
org.antlr.stringtemplate.StringTemplateGroup.getInstanceOf(StringTemplateGroup.j
ava:384)
org.antlr.codegen.CodeGenTreeWalker.getTokenElementST(CodeGenTreeWalker.java:160
)
org.antlr.codegen.CodeGenTreeWalker.atom(CodeGenTreeWalker.java:2105)
org.antlr.codegen.CodeGenTreeWalker.element(CodeGenTreeWalker.java:1371)
org.antlr.codegen.CodeGenTreeWalker.alternative(CodeGenTreeWalker.java:1116)
org.antlr.codegen.CodeGenTreeWalker.block(CodeGenTreeWalker.java:1000)
org.antlr.codegen.CodeGenTreeWalker.rule(CodeGenTreeWalker.java:728)
org.antlr.codegen.CodeGenTreeWalker.rules(CodeGenTreeWalker.java:519)
org.antlr.codegen.CodeGenTreeWalker.grammarSpec(CodeGenTreeWalker.java:461)
org.antlr.codegen.CodeGenTreeWalker.grammar(CodeGenTreeWalker.java:308)
org.antlr.codegen.CodeGenerator.genRecognizer(CodeGenerator.java:404)
org.antlr.Tool.processGrammar(Tool.java:329)
org.antlr.Tool.process(Tool.java:266)
org.antlr.Tool.main(Tool.java:69)
/*------------------------*/
grammar SLang;
options {
language = CSharp;
output = AST;
}
tokens {
ASSIGN;
EXPR;
ASSERT;
}
lang
: statement+
;
statement
: assign
| expression
;
assign: lhs EQ aRhs -> ^(ASSIGN lhs aRhs)
;
expression: lhs EQ eRhs -> ^(EXPR lhs eRhs)
;
lhs : ID ;
aRhs
: constant(SEMI!)
;
eRhs
: NUM PRED^ conditions(SEMI!) -> ^(ASSERT NUM ^(PRED
conditions))
| expr(PRED^ conditions)?(SEMI!) -> ^(ASSERT expr
^(PRED conditions?))
;
expr: variable((MULT^|DIV^|PLUS^|MINUS^)variable^)* ;
conditions
: condition (('and'^|'&&'^|'or'^|'||'^) condition)*
;
condition
: ID((LOGICOP^|EQ^|NEQ^)term)
;
term:
(variable^|constant^)((MULT^|DIV^|PLUS^|MINUS^)term)?
;
variable
: ID
;
constant
: NUM
;
PRED: WHEN ;
ID : ('a'..'z'|'A'..'Z'|'_')
('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
NUM : ('0'..'9')+ ;
LOGICOP
: '<'
| '<='
| '>'
| '>='
;
fragment
WHEN: 'when' ;
fragment
AND : 'and'
| '&&'
;
fragment
OR : 'or'
| '||'
;
PLUS: '+' ;
MINUS
: '-'
;
MULT: '*' ;
DIV : '/' ;
EQ : '=' ;
NEQ : '!=' ;
SEMI: ';' ;
/*------------------------*/
I'll look further into what I'm doing wrong, but if
anyone knows ...
Thanks, bfn.
____________________________________________________________________________________
Sponsored Link
Mortgage rates near 39yr lows.
$510k for $1,698/mo. Calculate new payment!
www.LowerMyBills.com/lre
More information about the antlr-interest
mailing list