[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