[antlr-interest] testing subrules and noviable alt upon eof
Felix Dorner
felix_do at web.de
Wed Jun 4 05:58:38 PDT 2008
Hi,
I am aware of gunit, but since it doesnt support custom AST nodes, I
won't use it.
My toplevel rule is:
body : statement* EOF
When I try to test subrules (expressions, see below) against input
snippets, in all cases I get NoViableAlts when the EOF token is
encountered. For most inputs all input is consumed before the Exception
(e.g. "3+4" "call()" "variable"), and for all cases that end with
".anIdentifier" it doesnt even consume this part. Now I dont know if
this is unavoidable, or if something is wrong with my grammar. The
problem occurs in the "selectorSequence" rule:
expression
: setModifierExpr
;
setModifierExpr
: conditionalExpression (setModifier^ conditionalExpression)*;
conditionalExpression
: condAndExpr (OR^ condAndExpr)*;
condAndExpr
: relationalExpression (AND^ relationalExpression)*;
relationalExpression
: additiveExpression (relationalOp^ additiveExpression)*;
additiveExpression
: multExpr ((PLUS|MINUS)^ multExpr)*;
multExpr
: prefixExpression ((MULT|DIV)^ prefixExpression)*;
prefixExpression
: prefixOp prefixExpression -> ^(PRE prefixOp prefixExpression)
| '(' qualifiedName ')' selectorExpression -> ^(CAST qualifiedName
selectorExpression)
| selectorExpression
;
selectorExpression
: (primaryExpression -> primaryExpression)
(selectorSequence -> ^(DOT primaryExpression selectorSequence))?
;
selectorSequence
: ('.' ID -> ID) (selectorSequence -> ^(DOT ID selectorSequence))?
| ('.' ID arguments -> ^(CALL ID arguments))
(selectorSequence -> ^(DOT ^(CALL ID arguments) selectorSequence))?
;
arguments
: '('expressionList? ')' -> ^(ARGS expressionList?);
primaryExpression
: (ID -> ID) (arguments -> ^(CALL ID arguments))?
More information about the antlr-interest
mailing list