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

G. Richard Bellamy rbellamy at pteradigm.com
Wed Jul 27 13:19:40 PDT 2011


So, being the confused monkey that I am - Could you help me understand? 
If it doesn't have to do with the greedy option, what DOES it have to do 
with? I get the same behavior whether using the DQUOTE token or the '"' 
string literal.

I should mention that I'm using the 3.3.3.8388 CSharp distribution found 
here:
http://www.antlr.org/wiki/display/ANTLR3/Antlr3CSharpReleases

-rb

On 7/27/2011 1:11 PM, Jim Idle wrote:
> The rule you show below is not what I posted. Remove the DQUOTE token and
> use the literal '"'. This has nothing to do with the greedy option.
>
> Jim
>
>> -----Original Message-----
>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>> bounces at antlr.org] On Behalf Of G. Richard Bellamy
>> Sent: Wednesday, July 27, 2011 11:49 AM
>> To: antlr-interest at antlr.org
>> Subject: [antlr-interest] Quoted String Literal - confused by
>> greed=false behavior.
>>
>> 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 '"'
>>
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
>> email-address
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address


More information about the antlr-interest mailing list