[antlr-interest] very simple doubt about EXPR grammar

Jim Idle jimi at temporal-wave.com
Fri Oct 15 10:07:45 PDT 2010


You need to post your grammar and code, not screen shots. First though,
delete everything the was generated and start from a clean directory. You
are just doing something silly somewhere, but we can’t see what it is unless
you post all your code. Also, as you are using Java, you should look at
Maven for your builds.

Jim 

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Leonardo K. Shikida
> Sent: Thursday, October 14, 2010 5:19 PM
> To: John B. Brodie
> Cc: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] very simple doubt about EXPR grammar
> 
> Hi John
> 
> here are some screenshots of what I am doing with ANTLR Works.
> 
> not ok: http://img833.imageshack.us/img833/7586/noviable.png
> 
> ok: http://img194.imageshack.us/img194/7260/viable.png
> 
> so strange it only happens to the MINUS sign.
> 
> thanks
> 
> Leo
> 
> 
> 
> 
> 
> On Thu, Oct 14, 2010 at 5:17 PM, John B. Brodie <jbb at acm.org> wrote:
> > Greetings!
> > On Thu, 2010-10-14 at 09:31 -0300, Leonardo K. Shikida wrote:
> >> Hi Kevin
> >>
> >> You´re right. So I´ve changed the grammar to include a stopword
> (semicolon).
> >>
> >> Still the same problem.
> >>
> >> 1-1+1; generates a NoViableAltException
> >
> > very strange...
> >
> >>
> >> while
> >>
> >> 1+1-1; does not
> >>
> >> This is very strange because according to the rule
> >>
> >> expr
> >>     :   e=multExpr
> >>         (   '+' multExpr
> >>         |   '-' multExpr
> >>         |   '*' multExpr
> >>         |   '/' multExpr
> >>         )*
> >>     ;
> >>
> >> it does not matter what symbol comes. In fact, for all other
> >> combinations of symbols in the same expression, only those starting
> >> with 1-1 throws the exception.
> >>
> >> 1*1-1; OK
> >> 1*1/1; OK
> >> 1-1-1; NOT OK
> >> 1*1+1; OK
> >
> > unable to reproduce. attached please find a complete test grammar
> > including a test driver that contains your grammar.
> >
> > this test grammar parses all four of the above without any problem.
> >
> > (does your test input happen to (incorrectly) include a blank(s)? your
> > lexer accepts white space but your parser does not....)
> >
> >>
> >> and so on...
> >>
> >> Can anyone help me? Is it an ANTLR bug or am I missing something here
> >> in this grammar?
> >>
> >> Thanks in advance
> >>
> >> Leo.
> >>
> >> >>>>>>>>>>>>>>>>>
> >>
> >> grammar Expr;
> >>
> >> @header {
> >> }
> >>
> >> @members {
> >> }
> >>
> >>
> >> stat:   comp ';'
> >>     ;
> >>
> >> comp
> >>     :   e=expr
> >>         (   '>' expr
> >>         |   '<' expr
> >>         |   '=' expr
> >>         )*
> >>     ;
> >>
> >> expr
> >>     :   e=multExpr
> >>         (   '+' multExpr
> >>         |   '-' multExpr
> >>         |   '*' multExpr
> >>         |   '/' multExpr
> >>         )*
> >>     ;
> >>
> >> multExpr
> >>       :       atom
> >>       (       atom
> >>       )*
> >>     ;
> >>
> >> atom
> >>     :   INT
> >>     |   ID
> >>     |  '(' comp ')'
> >>     ;
> >>
> >> ID  :   ('a'..'z'|'_')+ ;
> >> INT :   '0'..'9'+ ;
> >> WS  :   (' '|'\t')+  ;
> >>
> >> []
> >>
> >> Leonardo K. Shikida
> >>
> >>
> >>
> >>
> >>
> >> On Wed, Oct 13, 2010 at 3:14 PM, Kevin J. Cummings
> >> <cummings at kjchome.homeip.net> wrote:
> >> > On 10/13/2010 01:29 PM, Leonardo K. Shikida wrote:
> >> >> Hi
> >> >>
> >> >> This is something stupid, I guess. I have a grammar like this
> >> >> below and I would like to know why
> >> >>
> >> >> "1+1-1" works
> >> >>
> >> >> and
> >> >>
> >> >> "1-1+1" does not work (NoViableAltException)
> >> >
> >> > NoViableAltException is thrown in your stat rule when it can't
> >> > predict an INT, ID, (, or NEWLINE in the lookahead.  Does your test
> >> > case end in a NEWLINE?
> >> >
> >> >> Thanks
> >> >>
> >> >> Leo K.
> >> >
> >> > --
> >> > Kevin J. Cummings
> >> > kjchome at rcn.com
> >> > cummings at kjchome.homeip.net
> >> > cummings at kjc386.framingham.ma.us
> >> > Registered Linux User #1232 (http://counter.li.org)
> >> >
> >
> >
> 
> 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