[antlr-interest] Re: native rules?
Alexey Demakov
demakov at ispras.ru
Fri Oct 22 02:55:58 PDT 2004
'-' '\n' will be processed incorrectly
Regards,
Alexey
> Wolfgang--
>
> Why not
>
> COMMENT
> :
> "--"
> ( ~( '\n' | '-' )
> | '-' ~'-'
> )*
> ( "--" )? // NEWLINE or whatever picks up '\n'
> ;
>
> The greedy/non-greedy stuff is much overused.
>
> --Loring
>
>
> --- In antlr-interest at yahoogroups.com, "whaefelinger"
> <ora.et.labora at w...> wrote:
> >
> > Hello,
> > my language allows a comment to start with "--" and end with ither "-
> > -" or with an EOL character ('\n'). So I wrote this two rules:
> >
> > protected
> > UNTIL_END_OF_COMMENT
> > : ( options {greedy=false;} : . )* ("--"|"\n")
> > ;
> >
> > COMMENT
> > : "--" UNTIL_END_OF_COMMENT
> > ;
> >
> > ANTLR warns me then (as written in the manual) about "nongreedy
> > block may exit incorrectly due to limitations of linear approximate
> > lookahead [..].
> >
> > Here's a snippet of what ANTLR generates for rule
> > UNTIL_END_OF_COMMENT
> >
> > _loop53:
> > do {
> > // nongreedy exit test
> > if ( (LA(1)=='\n'||LA(1)=='-') && (true))
> > break _loop53;
> > // ...
> > } while (true);
> >
> > Hmm, that's almost fine. If I just could rewrite this as
> >
> > _loop53:
> > do {
> > // nongreedy exit test
> > if ( LA(1)=='\n' || (LA(1)=='-' && LA(2)=='-') )
> > break _loop53;
> > // ...
> > } while (true);
> >
> > then I would be done (BTW: I do have the feeling that I can attack
> > the problem with a predicate - but haven't found the right solution
> > yet).
> >
> > Now I was wondering whether ANTLR would allow me to tweak in my own
> > handcraftet rules? What I'm thinking about is something like:
> >
> > protected UNTIL_END_OF_COMMENT ;
> >
> > That means: If a protected rule with no "body" exists then ANTLR
> > will not generate a method but will rather assume that such a method
> > already exists.
> >
> > This seems trivial to implement but does not exist. Therefore I
> > assume that there must be specific reasons for not having this
> > native rule escape.
> >
> > Can someone give me a hint on this??
> >
> >
> > Thanks,
> > Wolfgang.
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list