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 <[email protected]> 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
>> <[email protected]> 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
>> > [email protected]
>> > [email protected]
>> > [email protected]
>> > 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

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to