[antlr-interest] A look-ahead/rewind problem

Lukasz Guminski lguminski+antlr at gmail.com
Mon Mar 23 07:11:28 PDT 2009


2009/3/23 Andreas Meyer <andreas.meyer at smartshift.de>

> Lukasz Guminski schrieb:
> >
> >
> >
> >     I would suggest you try without the syntactic predicate, turn your
> >     semantic predicate into a gated semantic predicate {...}? => such
> that
> >     it is forced to be evaluated:
> >
> >     block_open: {is_block_open()}?=> BLOCK_BOUNDARY
> >
> >
> > I cannot use a function without a parameter, because the decision
> > bases on the name of a block. So the function needs to be of a form:
> > /is_block_open(String blockName)/ function, and retrieving the
> > parameter requires the parser to make a look-ahead. That's what I need
> > the syntactic predicate for.
> Yes, that was meant as an example. If you need lookahead, you may also
> consider using something like
> input.LT(2).getText().equals(mystackofnames.top()).  Anyway, have you
> tried turning the sem. predicate into a gated sem. predicate (just add a
> => after the ?)
>

input.LT(2).getText() does not work because it returns only the next
character. So when I have

BLOCK with_a_very_long_name

then LT(2) does not return the full name. Of course, I can set

options{
   k = 100;
}

but that's not the solution.
Lucas

>
> Andreas
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090323/9f83e4ff/attachment.html 


More information about the antlr-interest mailing list