[antlr-interest] Quoted String Literal - confused by greed=false behavior.
Sam Harwell
sharwell at pixelminegames.com
Wed Jul 27 12:54:03 PDT 2011
You're reading the greedy option in reverse. :) I'd write the rule this way:
STRING_LITERAL
: '"'
( options{greedy=true;}
: '""'
| ~'"'
)*
'"'
;
Sam
-----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 1:49 PM
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
More information about the antlr-interest
mailing list