[antlr-interest] Quoted Strings in ANTLR 3.0.1 and 3.1.1
Sam Harwell
sharwell at pixelminegames.com
Fri Oct 24 09:14:54 PDT 2008
No time wasted, now we have a great set of test cases for fixing the interpreter bugs. :) Good to hear it's resolved for you.
Sam
-----Original Message-----
From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Fromm, Stefan
Sent: Friday, October 24, 2008 11:13 AM
To: antlr-interest at antlr.org
Subject: Re: [antlr-interest] Quoted Strings in ANTLR 3.0.1 and 3.1.1
Hello,
that's right. I thought that the interpreter delivers reliable results. Sorry for wasting time. I have tested it with the debugger and in fact the test cases are working.
What for is the interpreter in ANTLRworks?
Regards
Stefan
> -----Ursprüngliche Nachricht-----
> Von: Sam Harwell [mailto:sharwell at pixelminegames.com]
> Gesendet: Freitag, 24. Oktober 2008 09:08
> An: Fromm, Stefan; antlr-interest at antlr.org
> Betreff: RE: [antlr-interest] Quoted Strings in ANTLR 3.0.1 and 3.1.1
>
> You're running it in the interpreter, not the debugger. The
> actual generated code works across the board with all three
> versions of the grammar below.
>
> Sam
>
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of Fromm, Stefan
> Sent: Friday, October 24, 2008 1:00 AM
> To: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Quoted Strings in ANTLR 3.0.1 and 3.1.1
>
> I tested it again with ANTLR version 3.0.1, 3.1 and 3.1.1.
> Furthermore I added tests with a slightly changed lexer rule
> for quoted strings.
> Here are my results.
>
> grammar QuotedStringTest1;
>
> QUOTED_STRING
> : '\'' ( '\'\'' | ~('\'') )* '\''
> ;
>
> NUMBER
> : ('+' | '-')? '0'..'9'+ ('.' '0'..'9'+)?
> ;
>
> value_expr
> : (QUOTED_STRING | NUMBER) EOF
> ;
>
> Pattern ANTLR 3.0.1 ANTLR 3.1
> ANTLR 3.1.1
> ANTLRworks 1.1.7 ANTLRworks 1.2
> ANTLRworks 1.2.1
> --------------------------------------------------------------
> ----------
> ---------------------------
> '' matched as expected matched as expected
> matched as expected
> '''' matched as expected matched as expected
> matched as expected
> '''''' matched as expected matched as expected
> matched as expected
> '''a' matched as expected matched as expected
> matched as expected
> '''a''' matched as expected matched as expected
> matched as expected
> '''a''b' matched as expected matched as expected
> matched as expected
> '''a''b''' matched as expected matched as expected
> matched as expected
>
>
> 'a''' matched as expected no match, expected match
> no match, expected match
> 'a''b' matched as expected matched partly, only 'a''
> matched partly, only 'a''
> 'a''b''c' matched as expected no match, expected match
> no match, expected match
>
>
>
> grammar QuotedStringTest2;
>
> QUOTED_STRING
> : '\'' ( ~('\'') | '\'\'')* '\''
> ;
>
> NUMBER
> : ('+' | '-')? '0'..'9'+ ('.' '0'..'9'+)?
> ;
>
> value_expr
> : (QUOTED_STRING | NUMBER) EOF
> ;
>
> Pattern ANTLR 3.0.1 ANTLR 3.1
> ANTLR 3.1.1
> ANTLRworks 1.1.7 ANTLRworks 1.2
> ANTLRworks 1.2.1
> --------------------------------------------------------------
> ----------
> ---------------------------
> '' matched as expected matched as expected
> matched as expected
> '''' matched as expected no match, expected match
> no match, expected match
> '''''' matched as expected no match, expected match
> no match, expected match
> '''a' matched as expected no match, expected match
> no match, expected match
> '''a''' matched as expected no match, expected match
> no match, expected match
> '''a''b' matched as expected no match, expected match
> no match, expected match
> '''a''b''' matched as expected no match, expected match
> no match, expected match
>
> 'a''' matched as expected matched as expected
> matched as expected
> 'a''b' matched as expected matched as expected
> matched as expected
> 'a''b''c' matched as expected matched as expected
> matched as expected
>
> Interestingly changing the order of ('\'\'' | ~('\'')) to (~('\'') |
> '\'\'') makes exactly the opposite test cases fail in 3.1 and 3.1.1.
> First variant lets pass all expressions where first escaped quotes ''
> come before any letter. Second variant lets pass all
> expressions where first escaped quotes come after any letter.
>
>
>
> I have also tried the grammar of Sam with all three versions:
>
> grammar TestQuotedString;
>
> value
> : ( QUOTED_STRING
> | NUMBER
> )*
> EOF
> ;
>
> QUOTED_STRING
> : '\'' ( '\'\'' | ~('\'') )* '\''
> ;
>
> NUMBER
> : ('+' | '-')?
> ('0'..'9')+
> ('.' ('0'..'9')+)?
> ;
>
>
>
> Pattern ANTLR 3.0.1 ANTLR 3.1
> ANTLR 3.1.1
> ANTLRworks 1.1.7 ANTLRworks 1.2
> ANTLRworks 1.2.1
> --------------------------------------------------------------
> ----------
> ---------------------------
> '' matched as expected matched as expected
> matched as expected
> '''' matched as expected matched as expected
> matched as expected
> '''''' matched as expected matched as expected
> matched as expected
> '''a' matched as expected matched as expected
> matched as expected
> '''a''' matched as expected matched as expected
> matched as expected
> '''a''b' matched as expected matched as expected
> matched as expected
> '''a''b''' matched as expected matched as expected
> matched as expected
>
> 'a''' matched as expected matched only EOF
> matched only EOF
> 'a''b' matched as expected matched only 'a''
> matched only 'a''
> 'a''b''c' matched as expected matched 'a'' and 'b''
> matched 'a'' and 'b''
>
> The long test
> '''a'0'''a'''0'''a''b'''0'a'''0'a''b'0'a''b''c'0''0''''0''''''
> 0'''a''b'
> matched exactly as expected in all three versions. In fact
> Sams grammar would not be usable for my use case, because SQL
> does not allow mixing of quoted strings/numbers in value expressions.
>
> Stefan
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-
> email-addr
> ess
>
>
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