[antlr-interest] Tree Grammar
Sanders, Charles
csanders at hoovers.com
Sat Jul 12 08:54:12 PDT 2008
I have a simple tree walker grammar that I've inlined, which corresponds to the attachment which builds the tree,but Im getting this error from Antlr:
[java] error(100): grammar/Entitlements_tree_walker.g:48:5: syntax error: antlr: grammar/Entitlements_tree_walker.g:48:5: unexpected token: ASSIGN
I've looked compared it to the examples and cant find any differences, any ideas ?
-- Entitlements_tree_walker.g
tree grammar Entitlements_tree_walker;
options {
tokenVocab=Entitlements_ast; // import tokens from Entitlements_ast.g
ASTLabelType=CommonTree;
}
program :
(statement) +
;
statement
:
expression
| ifStatement
| blockStatement
| foreachStatement
;
ifStatement
:
'if' e=expression
s1=statement
( 'else' s2=statement ) ?
;
foreachStatement
:
'foreach' '(' expression 'in' expression ')' statement;
blockStatement
:
'{' (statement)+ '}'
;
expression
:
^(ASSIGN $e)
;
assignmentExpression
:
t=orExpression (
'=' e=expression
| '+=' e=expression
| '-=' e=expression
|'*=' e=expression
|'/=' e=expression
| '.=' e=expression
)*
;
orExpression
:
e1=andExpression
( '||' e2=andExpression
)*
;
andExpression
:
e1=relationalExpression
('&&' e2=relationalExpression
)*
;
relationalExpression
:
e1=addSubtractExpression (
('==' e2=addSubtractExpression
| '!=' e2=addSubtractExpression
| '<=' e2=addSubtractExpression
| '>=' e2=addSubtractExpression
| '<' e2=addSubtractExpression
| '>' e2=addSubtractExpression
)
)*
;
addSubtractExpression
:
e=multiplyDivideExpression
(
'+' e=multiplyDivideExpression
| '-' e=multiplyDivideExpression
| '.' e=multiplyDivideExpression
)*
;
multiplyDivideExpression
:
e=unaryExpression (
'*' e=unaryExpression
| '/' e=unaryExpression
)*
;
unaryExpression
:
t=atom
;
atom
:
StringLiteral
| IntegerLiteral
| FloatingPointLiteral
| Identifier
| TruthLiteral
| '(' e=expression ')'
| f=functionCall
| 'null'
;
functionCall
:
'max' '(' e1=expression ',' e2=expression ')'
| 'min' '(' e1=expression ',' e2=expression ')'
| 'contains' '(' id1=Identifier ',' e2=expression ')'
| 'exists' '(' id1=Identifier ')'
| 'print' '(' e1=expression ')'
| 'append' '(' e1=expression ',' e2=expression ')'
| 'delete' '(' id1=Identifier ')'
;
--
Thanks!
Charlie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080712/76eb7740/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Entitlements_ast.g
Type: application/octet-stream
Size: 3195 bytes
Desc: Entitlements_ast.g
Url : http://www.antlr.org/pipermail/antlr-interest/attachments/20080712/76eb7740/attachment.obj
More information about the antlr-interest
mailing list