[antlr-interest] Empty Quoted String Literal

Sam Harwell sharwell at pixelminegames.com
Wed Jul 27 14:27:35 PDT 2011


Hi Richard,

The double quote escape character in a verbatim string is "", so what you're
actually passing to the parser is a single (unmatched) quote. To pass an
empty string, you'll need to use @"""""".

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 4:14 PM
To: antlr-interest at antlr.org
Subject: Re: [antlr-interest] Empty Quoted String Literal

Bart,

When I escape the quotes things work on my end as well - you'll note that
I'm passing a set of non-escaped quotes... (C# Verbatim String), so you'll
not be able to test this on your end (since Java doesn't have an equivalent
to the Verbatim String).

Thanks again.

-rb

On 7/27/2011 2:10 PM, Bart Kiers wrote:
> Hi Richard,
>
> Both ANTLRWorks' debugger, and my Java test rig:
>
>     import org.antlr.runtime.*;
>
>     public class Main {
>       public static void main(String[] args) throws Exception {
>         WhitespaceInSymbolsLexer lexer = new
>     WhitespaceInSymbolsLexer(new ANTLRStringStream("\"\""));
>         WhitespaceInSymbolsParser parser = new
>     WhitespaceInSymbolsParser(new CommonTokenStream(lexer));
>         parser.compileUnit();
>       }
>     }
>
>
> produce no errors when parsing "" (2 double quotes) as input:
>
>     bart at hades:~/Programming/ANTLR/Demos/WhitespaceInSymbols$ java -cp
>     antlr-3.3.jar org.antlr.Tool WhitespaceInSymbols.g
>     bart at hades:~/Programming/ANTLR/Demos/WhitespaceInSymbols$ javac
>     -cp antlr-3.3.jar *.java
>     bart at hades:~/Programming/ANTLR/Demos/WhitespaceInSymbols$ java -cp
>     .:antlr-3.3.jar Main
>     bart at hades:~/Programming/ANTLR/Demos/WhitespaceInSymbols$
>
>
> Then there must be something going differently in the CSharp3 target 
> than in the Java target (note that I am not able to test the CSharp3 
> target here...).
>
> Regards,
>
> Bart.
>
>
> On Wed, Jul 27, 2011 at 11:01 PM, G. Richard Bellamy 
> <rbellamy at pteradigm.com <mailto:rbellamy at pteradigm.com>> wrote:
>
>     Sam, Bart & Jim, I really appreciate your help on this.
>
>     Here's a more complete example, without the greedy confusion. I'm
>     including the combined grammar and a test rig.
>
>     I get: CombinedLexer:line 1:2 mismatched character '<EOF>'
>     expecting '"'
>     just before a NullReferenceException.
>
>     GRAMMAR:
>     ----------------------------
>     grammar Combined;
>
>     options {
>     language=CSharp3;
>     TokenLabelType=CommonToken;
>     output=AST;
>     ASTLabelType=CommonTree;
>     }
>
>     @lexer::namespace{StringLiteralLexerTest}
>     @parser::namespace{StringLiteralLexerTest}
>
>     /*
>     * Parser Rules
>     */
>
>     public
>     compileUnit
>     : STRING
>     ;
>
>     /*
>     * Lexer Rules
>     */
>     STRING : '"' ('""' | ~'"')* '"';
>
>     TEST RIG:
>     ------------------------------
>     static void Main()
>     {
>     CombinedLexer lexer = new CombinedLexer(new ANTLRStringStream(@""""));
>     //lexer.TraceDestination = new
>     ConsoleTextWriter(typeof(CombinedLexer));
>
>     CommonTokenStream tokenStream = new CommonTokenStream(lexer);
>
>     CombinedParser parser = new CombinedParser(tokenStream);
>     //parser.TraceDestination = new
>     ConsoleTextWriter(typeof(CombinedParser));
>
>     CommonTree parseTree = parser.compileUnit().Tree;
>     Console.WriteLine(parseTree.ToStringTree());
>     }
>
>     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