[antlr-interest] very simple doubt about EXPR grammar

Leonardo K. Shikida shikida at gmail.com
Sat Oct 16 03:27:01 PDT 2010


Hi Jim

but I´ve actually posted the grammar twice in this thread. :-)

the problem here seems to be exactly what John has noticed: I can´t
rely on ANTLR Works because its interpreter does not give me what the
generated java code actually does.

Is there anywhere I can send ANTLR Works team some bug report?

TIA

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 Fri, Oct 15, 2010 at 2:07 PM, Jim Idle <jimi at temporal-wave.com> wrote:
> 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
>
>
> 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