[antlr-interest] Deciphering the TreeWalker error message ...

Gary Miller gary at sumwise.com
Wed Jul 20 15:43:45 PDT 2011


I often find it usefully to print out the AST (toStringTree in Java) and
walk through the tree grammar manually.

Regards
Gary

On Thu, Jul 21, 2011 at 3:15 AM, Loring Craymer <lgcraymer at yahoo.com> wrote:

> "UP" and "DOWN" tokens (start/end of child list for tree) do not have
> location information attached so no line/column error reporting.  Mostly the
> error says that you started a subtree that your grammar does not match,
> probably an LPAREN or RPAREN rooted subtree from your report of cases where
> you do or do not get the error.
>
> --Loring
>
>
>
> >________________________________
> >From: srinivasan karthikeyan pitchai <
> srinivasan.karthikeyan.pitchai at oracle.com>
> >To: antlr-interest at antlr.org
> >Cc: Terence Parr <parrt at cs.usfca.edu>
> >Sent: Wednesday, July 20, 2011 9:46 AM
> >Subject: [antlr-interest] Deciphering  the TreeWalker error message  ...
> >
> >Hi Folks,
> >What does the ANTLR walker error message like the following mean?
> >
> >no viable alt; token=[@-1,0:0='DOWN'
> >
> >
> >Would appreciate any general guidance/suggestions to zero in on the
> >errors of this nature.
> >
> >Thanks,
> >Vasan
> >
> >
> >Input sql:
> >-----------
> >
> >select (1) from table1
> >where 2 between 3 and 4;
> >
> >
> >Error Message:
> >--------------------
> >
> >TDWalker1.g: node from after line 2:8 [start1, startStatement, dml,
> >query_term, query_expression, query, query_unit, where_clause,
> >condition_list, condition_subexpression, condition] Walker1: no viable
> >alt; token=[@-1,0:0='DOWN',<2>,0:-1] (decision=127 state 0)
> >decision=<<590:1: condition options {backtrack=true; } : ( ^(
> >comparison_operator ( condition_quantifier )? c1= condition c2=
> >condition ) | ^( BETWEEN expression ^( and_or_operator c1= condition c2=
> >condition ) ) | ^( condition_operator expression c1= condition ^( ESCAPE
> >escape_character ) ) | ^( condition_operator expression c1= condition )
> >| ^( condition_operator expression_list c1= condition ) | ^( NOT c1=
> >condition ) | ^( EXISTS expression ) | ^( IS_NOT_NULL expression ) | ^(
> >IS_NULL expression ) | ^( IS_NOT expression UNTIL_CHANGED ) | ^( IS
> >expression UNTIL_CHANGED ) | ^( IS_NOT expression UNTIL_CLOSED ) | ^( IS
> >expression UNTIL_CLOSED ) | expression | condition_list );>>
> context=......
> >
> >
> >However the following SQL, that just doesn't have the parenthesis around
> >1,  works fine!!!
> >
> >select (1) from table1
> >where 2 between 3 and 4;
> >
> >
> >List: http://www.antlr.org/mailman/listinfo/antlr-interest
> >Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> >
> >
> >
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>


More information about the antlr-interest mailing list