From cdecbce4c0daa1b9234d31bf8ba4b656b39a802b Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Sat, 4 Dec 2010 13:00:16 +0100 Subject: [PATCH] fix broken CollectComments, split verbatim strings on carriage returns --- .../antlr3/src/cs2j/CSharp/JavaPrettyPrint.g | 16 +++++++++++----- .../antlr3/src/cs2j/bin/Debug/templates/java.stg | 8 ++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g index f1b4135..4384cfd 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g @@ -56,16 +56,17 @@ options { } EmittedCommentTokenIdx = endIdx+1; } - collectedComments = rets; + CollectedComments = rets; } protected void collectComments() { collectComments(((CommonTokenStream)this.GetTreeNodeStream().TokenStream).GetTokens().Count - 1); } - protected string escapeJavaString(string rawStr) + protected List escapeJavaString(string rawStr) { - StringBuilder buf = new StringBuilder(rawStr.Length * 2); + List rets = new List(); + StringBuilder buf = new StringBuilder(); bool seenDQ = false; foreach (char ch in rawStr) { @@ -90,6 +91,8 @@ options { break; case '\n': buf.Append("\\n"); + rets.Add(buf.ToString()); + buf = new StringBuilder(); break; case '\f': buf.Append("\\f"); @@ -104,7 +107,10 @@ options { if (ch != '"') seenDQ = false; } - return buf.ToString(); + if (buf.Length > 0) { + rets.Add(buf.ToString()); + } + return rets; } } @@ -1170,7 +1176,7 @@ literal: | Hex_number -> string(payload={$Hex_number.text}) | Character_literal -> string(payload={$Character_literal.text}) | STRINGLITERAL -> string(payload={ $STRINGLITERAL.text }) - | Verbatim_string_literal -> string(payload={ "\"" + escapeJavaString($Verbatim_string_literal.text.Substring(1)) + "\"" }) + | Verbatim_string_literal -> verbatim_string(payload={ escapeJavaString($Verbatim_string_literal.text.Substring(1)) }) | TRUE -> string(payload={"true"}) | FALSE -> string(payload={"false"}) | NULL -> string(payload={"null"}) diff --git a/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg b/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg index d42ee9a..8748a36 100644 --- a/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg +++ b/CSharpTranslator/antlr3/src/cs2j/bin/Debug/templates/java.stg @@ -54,7 +54,7 @@ class_member(comments, member) ::= << >> field(modifiers, type, field, comments, init) ::= " = ;" -variable_declarators(varinits) ::= "" +variable_declarators(varinits) ::= "" variable_declarator(typename,init) ::= " = " primary_expression_start_parts(start,follows) ::= "" @@ -91,4 +91,8 @@ imps(types) ::= "implements " cast_expr(type, exp) ::= "()" // ******* UTILITY *********** -string(payload) ::= "" \ No newline at end of file +string(payload) ::= "" + +verbatim_string(payload) ::= << +"" +>> \ No newline at end of file