public Questionnaire BuildAST(string inputString) { MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString ?? "")); AntlrInputStream antlrInputStream = new AntlrInputStream(inputStream); QLLexer lexer = new QLLexer(antlrInputStream); CommonTokenStream tokens = new CommonTokenStream(lexer); _parser = new QLParser(tokens); //Replaxe lexer/parser error listeners lexer.RemoveErrorListeners(); _parser.RemoveErrorListeners(); lexer.AddErrorListener(new LexerErrorListener() { OnError = LexerErrors.Add }); _parser.AddErrorListener(new ParserErrorListener() { OnError = ParserErrors.Add }); //set manager on partial parser class _parser.SetIdManager(Memory); //build AST _parseTree = _parser.questionnaire(); AST = _parser.GetAST(); //check for lexer/parser errors if (!LexerErrors.Any() && !ParserErrors.Any()) { TypeChecker.Run(AST); } return AST; }
public Questionnaire BuildAST(string inputString) { MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString ?? "")); AntlrInputStream antlrInputStream = new AntlrInputStream(inputStream); QLLexer lexer = new QLLexer(antlrInputStream); CommonTokenStream tokens = new CommonTokenStream(lexer); _parser = new QLParser(tokens); //Replaxe lexer/parser error listeners lexer.RemoveErrorListeners(); _parser.RemoveErrorListeners(); lexer.AddErrorListener(new LexerErrorListener() { OnError = LexerErrors.Add }); _parser.AddErrorListener(new ParserErrorListener() { OnError = ParserErrors.Add }); //set manager on partial parser class _parser.SetIdManager(Memory); //build AST _parseTree = _parser.questionnaire(); AST = _parser.GetAST(); //check for lexer/parser errors if (!LexerErrors.Any() && !ParserErrors.Any()) { TypeChecker.Run(AST); } return(AST); }
public override void EnterQuestionnaire(QLParser.QuestionnaireContext context) { base.EnterQuestionnaire(context); }
private void btnParse_Click(object sender, EventArgs e) { txtOutput.Clear(); string inputString = txtInput.Text; MemoryStream inputStream = new MemoryStream(Encoding.UTF8.GetBytes(inputString ?? "")); AntlrInputStream input = new AntlrInputStream(inputStream); QLLexer lexer = new QLLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); QLParser parser = new QLParser(tokens); lexer.RemoveErrorListeners(); parser.RemoveErrorListeners(); lexer.AddErrorListener(new LexerErrorListener(){OnError = WriteError}); parser.AddErrorListener(new ParserErrorListener(){OnError = WriteError}); IParseTree tree = parser.questionnaire(); //if (parser.NumberOfSyntaxErrors > 0) // txtOutput.Text += string.Format("Parser errors found: {0}", parser.NumberOfSyntaxErrors); QLVisitor visitor = new QLVisitor(); visitor.Visit(tree); txtOutput.Text += string.Format(@"{0}{0} Generated parse tree: {0} {1} {0} {2}" , Environment.NewLine , tree.ToStringTree(parser) , visitor.Visit(tree)); }