[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