Hi Folks, I forgot to mention. The compoundExpression rule has options{backtrack = true;} set that is it reads like
compoundExpression options {backtrack = true;} : ^(sclarSubExpression conversion_clause) | sclarSubExpression ; Thanks, Vasan On 7/21/2011 10:56 AM, srinivasan karthikeyan pitchai wrote: > Jim, Gray, Loring, > Thanks for pitching in to give me some direction to focus on. > > ANTLR Gurus, > > I've solved the issue. Still I am unable to reason out my fix. > > I am providing the offending grammar snippet below and would appreciate > your rationale to get an insight into the problem and how the fix works!! > > The below rule fails with the " > > no viable alt; token=[@-1,0:0='DOWN'" error message > > compoundExpression: > ^(sclarSubExpression conversion_clause) > | sclarSubExpression > ; > > However when I change the rule like the following, i.e make the > conversion_clause optional and then remove the second alternative every > thing works fine!! In my mind both the rules are semantically identical. > > compoundExpression: > ^(sclarSubExpression conversion_clause?) > ; > > Thanks a ton. > > -Vasan > > On 7/21/2011 4:16 AM, Jim Idle wrote: >> Or use the dot description producing methods and create a nice graphic >> with graphviz. Much easier to see that way. >> >> Jim >> >>> -----Original Message----- >>> From: antlr-interest-boun...@antlr.org [mailto:antlr-interest- >>> boun...@antlr.org] On Behalf Of Gary Miller >>> Sent: Wednesday, July 20, 2011 3:44 PM >>> To: antlr-interest@antlr.org >>> Subject: Re: [antlr-interest] Deciphering the TreeWalker error message >>> ... >>> >>> 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<lgcray...@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.pitc...@oracle.com> >>>>> To: antlr-interest@antlr.org >>>>> Cc: Terence Parr<pa...@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 >>> 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 > 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 -- You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to il-antlr-inter...@googlegroups.com. To unsubscribe from this group, send email to il-antlr-interest+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.