[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