[antlr-interest] Re: another nondeterminism question
Adrian Sandor
aditsu at yahoo.com
Wed Jul 16 22:14:00 PDT 2003
well, everything is ok... except that once the lexer starts
recognizing an S, it fails to detect a B:
the grammar:
---8<---
class l1 extends Lexer;
S: ('a' | "bb")=>('a' | "bb")+ | 'b' {$setType(B);};
class p1 extends Parser;
start: (S|B)+;
--->8---
input data: aba
result: exception: line 1:3: expecting 'b', found 'a'
this is still ok for the "//" comments in my grammar, but it's not ok
in other cases, like Sanjiv's message
http://groups.yahoo.com/group/antlr-interest/message/8965
I'm going to read about that linear approximation thing...
Adrian
--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> In fact you may need a syntactic predicate because of the linear
> approximation issue:
>
>
> S: ('a'|"bb")=>('a' | "bb")+
> | 'b' {$setType(B);}
> ;
>
> Let me know, I don't have time to try it out right now.
>
> Monty
> -----Original Message-----
> From: mzukowski at y... [mailto:mzukowski at y...]
> Sent: Wednesday, July 16, 2003 11:46 AM
> To: antlr-interest at yahoogroups.com
> Subject: RE: [antlr-interest] Re: another nondeterminism question
>
>
> OK, this is an linear approximation issue. If you had A:"aa"
| "bb" things
> would work. This example is very abstract. I would code it like
this:
>
> S: ('a' | "bb")+
> | 'b' {$setType(B);}
> ;
>
> Look up linear approximation in the FAQ & archives.
>
> Monty
> -----Original Message-----
> From: Adrian Sandor [mailto:aditsu at y...]
> Sent: Wednesday, July 16, 2003 11:26 AM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] Re: another nondeterminism question
>
>
> ok, I tried with the following grammar:
>
> class l1 extends Lexer;
> options{k=2;}
> protected A: 'a' | "bb";
> B: 'b';
> S: (A)=>(A)+;
>
> and I got:
>
> ANTLR Parser Generator Version 2.7.2 1989-2003 jGuru.com
> t1.g: warning:lexical nondeterminism between rules B and S upon
> t1.g: k==1:'b'
> t1.g: k==2:<end-of-token>
> t1.g:5: warning:Syntactic predicate ignored for single alternative
>
>
> Adrian
>
> --- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> > That's a weird bug you ran into, I think. It should give warnings
> in both
> > cases. You could solve this with a syntactic predicate:
> >
> > S: (A)=>(A)+;
> >
> > -----Original Message-----
> > From: Adrian Sandor [mailto:aditsu at y...]
> > Sent: Friday, July 11, 2003 9:54 AM
> > To: antlr-interest at yahoogroups.com
> > Subject: [antlr-interest] another nondeterminism question
> >
> >
> > why do I get a nondeterminism warning for this grammar:
> >
> > class l1 extends Lexer;
> > options{k=2;}
> > protected A: 'a' | "bb";
> > B: 'b';
> > S: (A)+;
> >
> > but I don't get any warning when I change S to:
> >
> > S: A (A)+;
> >
> > and how can I solve it for the first case?
> > I tried many things but to no avail...
> >
> > thanks
> > Adrian
> >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
>
>
> Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
>
>
>
>
> Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list