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.
