[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