[antlr-interest] Quoted String Literal - confused by greed=false behavior.

G. Richard Bellamy rbellamy at pteradigm.com
Wed Jul 27 11:48:35 PDT 2011


I've got a lexer rule that should be gobbling everything after the 
double quote '"' except for the last double quote - I basically stole 
the rule from a post from Jim Idle 
(http://www.antlr.org/pipermail/antlr-interest/2010-March/038051.html).

I've also tried other variations on the same rule, and I'm a bit 
confused as it seems the {greedy=false;} option is being ignored.

Any help is appreciated

-----------------------------------------------
INPUT: @"(FOO="")"
-----------------------------------------------

lexer grammar Lexer

options
{
     language=CSharp3;
     TokenLabelType=CommonToken;
}

DQUOTE : '"';

STRING_LITERAL
     : DQUOTE (options { greedy = false; }
          : (
             (
                 {input.LA(1) == '"' && input.LA(2) == '"'}? DQUOTE DQUOTE
                 | ~DQUOTE
             )*
         )
     )
     DQUOTE
     ;
-----------------------------------------------

LEXER TRACE (excerpt):
enter STRING_LITERAL " line=1:7
enter DQUOTE " line=1:7
exit DQUOTE ) line=1:8
enter DQUOTE ? line=1:9
exit DQUOTE ? line=1:9
exit STRING_LITERAL ? line=1:9
line 1:10 mismatched character '<EOF>' expecting '"'



More information about the antlr-interest mailing list