I will take a look. Jim
> -----Original Message----- > From: [email protected] [mailto:antlr-interest- > [email protected]] On Behalf Of Marco Trudel > Sent: Tuesday, January 04, 2011 6:15 AM > To: [email protected] > Subject: Re: [antlr-interest] How to recognize unmatchable input? > > On a second thought, I think the Java target is doing it perfectly > fine. > There might be a bug in the C target. > Is there a workaround for that? I'm actually working with the C target, > not with the Java one. > > Thanks and happy new year > Marco > > > On 04.01.2011 15:06, Marco Trudel wrote: > > Dear all > > > > ##### grammar ##### > > > > grammar Demo; > > main : ONE* ; > > ONE : '1' {System.out.print("(1) ");} ; > > A : 'a' {System.out.print("(a) ");} ; > > WS : ' ' {$channel=HIDDEN;} ; > > > > ##### code ##### > > > > public static void main(String[] args) throws Exception { > > DemoLexer lexer = new DemoLexer(new ANTLRStringStream("a 1 1")); > > DemoParser parser = new DemoParser(new > CommonTokenStream(lexer)); > > parser.main(); > > System.out.println("Lexer: " + lexer.getNumberOfSyntaxErrors()); > > System.out.println("Parser: " + > > parser.getNumberOfSyntaxErrors()); > > } > > > > > > Working with antlr-3.3-complete.jar and > > libantlr3c-3.3-SNAPSHOT.tar.gz, for the input "a 1 1" I get: > > - Java target: (a), Lexer: 0, Parser: 0 > > - C target: (1) (1), Lexer: 0, Parser: 0 > > > > Am I doing something undefined here? I'm surprised that the two > > targets produce a different result. I would expect an error since the > > input seems unmatchable to me. > > > > If I change "main" to > > main : ONE* EOF ; > > I get: > > - Java target: (a) (1), Lexer: 0, Parser: 1 > > -> With the warning: line 1:0 missing EOF at 'a' > > - C target: (1) (1), Lexer: 0, Parser: 0 > > > > > > Questions: > > - How do I recognize if an input did not match my grammar? > > - Which of the targets is doing it right? None, only one or both? > > > > > > In my real project I have something very similar but with completely > > different behavior. The Java target tells me "no viable alternative > at > > input" and gives me a parser error. The C target just segfaults :-/ > So > > I'm really interested how to do that right. > > > > > > Thanks > > Marco > > > > 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 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.
