From 01fdc1d195ee9113281d626838eea9dcf37c8c93 Mon Sep 17 00:00:00 2001 From: Kevin Glynn Date: Sat, 20 Nov 2010 15:28:25 +0100 Subject: [PATCH] convert [,,] to [][][] --- CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g | 13 ++++++++++--- .../antlr3/src/cs2j/CSharp/JavaPrettyPrint.g | 9 +++++---- CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g | 7 ++++--- CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g | 3 +++ 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g index 853c933..90c40a1 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g @@ -245,10 +245,17 @@ variable_reference: expression; rank_specifiers: rank_specifier+ ; +// convert dimension separators into additional dimensions, so [,,] -> [] [] [] rank_specifier: - '[' dim_separators? ']' ; -dim_separators: - ','+ ; + o='[' dim_separators? c=']' -> $o $c dim_separators?; +dim_separators +@init { + CommonTree ret = (CommonTree)adaptor.Nil; +} +@after { + $dim_separators.tree = ret; +}: + (c=',' { adaptor.AddChild(ret, adaptor.Create(OPEN_BRACKET, $c.token, "["));adaptor.AddChild(ret, adaptor.Create(CLOSE_BRACKET, $c.token, "]")); })+ -> ; delegate_creation_expression: // 'new' diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g index 75c6751..b1b0cbb 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g @@ -166,11 +166,12 @@ ref_variable_reference: variable_reference: expression; rank_specifiers: - rank_specifier+ ; + rs+=rank_specifier+ -> template(rs={$rs}) ""; rank_specifier: - '[' dim_separators? ']' ; -dim_separators: - ','+ ; + '[' /* dim_separators? */ ']' -> string(payload={"[]"}) ; +// keving +// dim_separators: +// ','+ ; delegate_creation_expression: // 'new' diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g index 9b588c3..4ff4b42 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g @@ -134,9 +134,10 @@ variable_reference: rank_specifiers: rank_specifier+ ; rank_specifier: - '[' dim_separators? ']' ; -dim_separators: - ','+ ; + '[' /*dim_separators?*/ ']' ; +// keving +// dim_separators: +// ','+ ; delegate_creation_expression: // 'new' diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g index a10ed5d..a5dcf39 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/cs.g @@ -16,6 +16,9 @@ tokens { IN; OUT; + OPEN_BRACKET='['; + CLOSE_BRACKET=']'; + ENUM_BODY; TYPE_PARAM_CONSTRAINT;