diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/CommonWalker.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/CommonWalker.cs index 4f07aa7..bd23e25 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/CommonWalker.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/CommonWalker.cs @@ -133,6 +133,11 @@ namespace Twiglet.CS2J.Translator.Transform // Routines to parse strings to ANTLR Trees on the fly, used to generate fragments needed by the transformation public CommonTree parseString(string startRule, string inStr) + { + return parseString(startRule, inStr, true); + } + + public CommonTree parseString(string startRule, string inStr, bool includeNet) { if (Cfg.Verbosity > 5) Console.WriteLine("Parsing fragment "); @@ -181,25 +186,28 @@ namespace Twiglet.CS2J.Translator.Transform TreeRuleReturnScope javaSyntaxRet = (TreeRuleReturnScope) mi.Invoke(javaMaker, new object[0]); - CommonTree javaSyntaxAST = (CommonTree)javaSyntaxRet.Tree; + CommonTree retAST = (CommonTree)javaSyntaxRet.Tree; - CommonTreeNodeStream javaSyntaxNodes = new CommonTreeNodeStream(javaSyntaxAST); + if (includeNet) { + CommonTreeNodeStream javaSyntaxNodes = new CommonTreeNodeStream(retAST); - javaSyntaxNodes.TokenStream = csTreeStream.TokenStream; + javaSyntaxNodes.TokenStream = csTreeStream.TokenStream; - NetMaker netMaker = new NetMaker(javaSyntaxNodes); - netMaker.TraceDestination = Console.Error; + NetMaker netMaker = new NetMaker(javaSyntaxNodes); + netMaker.TraceDestination = Console.Error; - netMaker.Cfg = Cfg; - netMaker.AppEnv = AppEnv; - netMaker.InitParser(); + netMaker.Cfg = Cfg; + netMaker.AppEnv = AppEnv; + netMaker.IsJavaish = true; + netMaker.InitParser(); - CommonTree javaAST = (CommonTree)netMaker.class_member_declarations().Tree; + retAST = (CommonTree)netMaker.class_member_declarations().Tree; - // snaffle additional imports - this.AddToImports(netMaker.Imports); - - return javaAST; + // snaffle additional imports + this.AddToImports(netMaker.Imports); + } + + return retAST; } // If true, then we are parsing some JavaIsh fragment diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g index eb8bb1a..0893171 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g @@ -1623,7 +1623,7 @@ scope TypeContext; magicMultiInvokerMethod[$d.token, $return_type.tree, $return_type.thetext == "Void" || $return_type.thetext == "System.Void", ifTree, $formal_parameter_list.tree, mkArgsFromParams($d.token, $formal_parameter_list.tree), $variant_generic_parameter_list.tyargs] { multiDelName = "__Multi" + delName; - delClassMemberNodes = this.parseString("class_member_declarations", this.MultiDelegateMethods(mkTypeString(delName, $variant_generic_parameter_list.tyargs), mkTypeString(multiDelName, $variant_generic_parameter_list.tyargs),mkTypeArgString($variant_generic_parameter_list.tyargs))); + delClassMemberNodes = this.parseString("class_member_declarations", this.MultiDelegateMethods(mkTypeString(delName, $variant_generic_parameter_list.tyargs), mkTypeString(multiDelName, $variant_generic_parameter_list.tyargs),mkTypeArgString($variant_generic_parameter_list.tyargs)), false); AddToImports("java.util.List"); AddToImports("java.util.LinkedList"); AddToImports("java.util.ArrayList");