[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