public override ICodeNode Parse(Token token) { token = NextToken(); // after method ICodeNode methodNode = IntermediateCodeFactory.CreateICodeNode("method"); StatementParser statementParser = new StatementParser(this); statementParser.ParseList(token, ref methodNode, "end", "missing_end"); token = CurrentToken(); return methodNode; }
public override void Parse() { ICode = IntermediateCodeFactory.CreateICode(); Stopwatch.Start(); Token token = NextToken(); ICodeNode rootNode = null; if (token.Text == "method") { StatementParser parser = new StatementParser(this); rootNode = parser.Parse(token); token = CurrentToken(); //this should now be "end_of_file" } else { ErrorHandler.Singleton.Flag(token, "unexpected_token", this); } if (token.TokenType != "semicolon") { ErrorHandler.Singleton.Flag(token, "missing_end", this); } if (rootNode != null) { ICode.Root = rootNode; } Stopwatch.Stop(); Parser.OnMessage(this, MessageType.ParserSummary, new Dictionary<string, object> { {"LineNumber", token.LineNumber}, {"ErrorCount" , ErrorCount}, {"Elapsed" , Stopwatch.Elapsed} }); }