/// <summary> /// Translates Chunk node to LuaCodeClass. /// </summary> /// <param name="chunk">Instance of Chunk.</param> /// <param name="name">Class name.</param> /// <returns></returns> public LuaCodeClass Translate(Chunk chunk, string name) { rootElement = new LuaCodeClass(dte, parent, name, chunk); rootClass = CreateVirtualFunction(rootElement); AddElementToParent(rootElement, rootClass); try { if (chunk.Block != null) { foreach (Block member in chunk.Block) { if (member.StatementList != null) { foreach (Node node in member.StatementList) { RecurseNode(node); } } } } //TraceDump(rootElement); } catch (ThreadAbortException) { } catch (Exception ex) { Trace.WriteLine(ex); dte.StatusBar.Text = "An error has occured during parsing source."; dte.StatusBar.Highlight(true); } return(rootElement); }
/// <summary> /// Translates Chunk node to LuaCodeClass. /// </summary> /// <param name="chunk">Instance of Chunk.</param> /// <param name="name">Class name.</param> /// <returns></returns> public LuaCodeClass Translate(Chunk chunk, string name) { rootElement = new LuaCodeClass(dte, parent, name, chunk); rootClass = CreateVirtualFunction(rootElement); AddElementToParent(rootElement, rootClass); try { if (chunk.Block != null) foreach (Block member in chunk.Block) { if (member.StatementList != null) foreach (Node node in member.StatementList) { RecurseNode(node); } } //TraceDump(rootElement); } catch (ThreadAbortException) { } catch (Exception ex) { Trace.WriteLine(ex); dte.StatusBar.Text = "An error has occured during parsing source."; dte.StatusBar.Highlight(true); } return rootElement; }
/// <summary> /// Recurse and translate FunctionDeclaration AST node. /// </summary> /// <param name="node">AST node instance.</param> /// <param name="parentElement">Parent of function.</param> private LuaCodeFunction RecurseFunctionDeclaration(CodeElement parentElement, FunctionDeclaration node) { LuaCodeFunction function = LuaCodeElementFactory.CreateLuaCodeFunction( dte, parentElement, node.Name, LuaType.Unknown, node.IsLocal, node); if (node.Body != null && node.Body.StatementList != null) { foreach (var statement in node.Body.StatementList) { RecurseStatement(function, statement); } } if (node.ParameterList != null) { foreach (Identifier param in node.ParameterList.IdentifierList) { function.AddParameter(param.Name, param, -1); } } return(function); }