[antlr-interest] Problem with carriage returns in c# stringtemplate

Terence Parr parrt at cs.usfca.edu
Tue Oct 25 07:50:01 PDT 2005


oh, right.  There is a bug in my server software that forgets to put  
the full hostname...hang on...

Ter
On Oct 24, 2005, at 11:39 PM, Tech wrote:

> Thanks Luis,
>                I've just tried downloading the patch, but the link  
> is broken. Thanks for the explanation though, it's always good to  
> know about these kinds of subtle differences.
>
> Mark
>
> Luis Leal wrote:
>
>
>> Hi Mark,
>>
>> Some investigation has revealed the following:
>>
>> 1. When you use a string literal the template actually contains a  
>> carriage
>> return and a new line
>> 2. When you read the template from an embedded resource the template
>> contains "\r\n" instead of a carriage return and a new line
>>
>> The second case sends the lexer down a path where \r is not  
>> defined as a
>> valid escape character. I've just uploaded a new C# version to
>> www.stringtemplate.org which fixes this problem.
>>
>> Regards
>>
>> Luis
>>
>> -----Original Message-----
>> From: Tech [mailto:tech at swingkid.fsnet.co.uk]
>> Sent: 23 October 2005 11:32 PM
>> To: antlr-interest at antlr.org
>> Subject: [antlr-interest] Problem with carriage returns in c#
>> stringtemplate
>>
>>
>> Thanks for your reply Luis.
>>
>> No, this is not my whole template group, but I was trying to  
>> reduce the
>> problem. I agree with you that your code works. However, if you  
>> copy the
>> string into a text file (removing the escape characters from the
>> quotation marks) and include it as an embedded resource, it  
>> doesn't work!
>>
>>     //StringReader sr = new StringReader("group TestOutput;
>>    program(statements)::= << class Wrapper { <statements;
>>    separator=\"\r\n\"> } >>");
>>     Stream s =
>>    typeof(Class1).Assembly.GetManifestResourceStream 
>> ("Project1.Test.stg");
>>    StreamReader sr = new StreamReader(s);
>>    StringTemplateGroup stg = new StringTemplateGroup(sr,
>>    typeof(antlr.stringtemplate.language.AngleBracketTemplateLexer));
>>
>> where Test.stg contains
>>
>>    group TestOutput; program(statements)::= << class Wrapper {
>>    <statements; separator="\r\n"> } >>
>>
>> I have tried copying the StreamReader contents into a string before
>> constructing the StringTemplateGroup, but that doesn't help. It seems
>> more like a .Net issue than a StringTemplate issue, but I can't  
>> figure
>> it out. I wonder if it is an encoding thing?
>>
>> Always curious,
>>
>> Mark
>>
>>
>>
>> --
>> No virus found in this outgoing message.
>> Checked by AVG Free Edition.
>> Version: 7.1.361 / Virus Database: 267.12.4/146 - Release Date:  
>> 21/10/2005
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
> -- 
> No virus found in this outgoing message.
> Checked by AVG Free Edition.
> Version: 7.1.361 / Virus Database: 267.12.5/147 - Release Date:  
> 24/10/2005
>
>
>



More information about the antlr-interest mailing list