[antlr-interest] Bug in DFA matching?
C. Scott Ananian
cscott at cscott.net
Mon Feb 9 15:21:44 PST 2009
On Mon, Feb 9, 2009 at 3:17 PM, Jim Idle <jimi at temporal-wave.com> wrote:
> C. Scott Ananian wrote:
>
> I have a grammar for a configuration file where indentation is
> significant, as in Python. It contains the following lexer rules:
>
> WS
> : {getCharPositionInLine()!=1}? // not start-of-line whitespace
> ( ' ' | TAB )
> { $channel=HIDDEN; }
> ;
> // whitespace at start of line used for INDENT processing
> INITIAL_WS
> : {getCharPositionInLine()==1 && !afterIndent}? // at start of line.
> ( ' ' | TAB )*
> { this.afterIndent=true; }
> ;
> First try a gated predicate rather than straight semantic predicate and fix
> your INITIAL_WS so that it does not match a completely empty sequence (+ not
> *) :
>
> {getCharPositionInLine()!=1}?=>
The gated predicate did the trick, thanks! (The * to + change wasn't
necessary; ANTLR's fine with matching an empty sequence, as long as
you use a gated predicate I guess.)
--scott
--
( http://cscott.net/ )
More information about the antlr-interest
mailing list