private void TryParseExpression() { InterpreterParser parser = new InterpreterParser(); ExecutedResult = parser.ParseExpression(Framework.SavedProgram); StateButtonClicked(CalcState.EXE); }
public void TestMethod1() { string s = "(13hh5)&(4)|(9)"; var interpreter = new InterpreterParser(); var result = InterpreterParser.Lex(s); var res = InterpreterParser.Parse(result); }
/// <summary> /// 解释一个查询程序 /// </summary> /// <param name="input">查询程序代码</param> /// <returns>是否运行了语句</returns> public bool Interpret(string input) { //新建一个输入流 stream = new AntlrInputStream(input + "\n"); //新建一个词法分析器 lexer = new InterpreterLexer(stream); //新建一个词法符号缓冲区 tokens = new CommonTokenStream(lexer); //新建一个语法分析器 parser = new InterpreterParser(tokens); //针对程序规则,开始分析 var tree = parser.prog(); //清空栈 QueryStack.Clear(); ParamsStack.Clear(); ParamStack.Clear(); FunctionStack.Clear(); //输出解析结果 //Console.WriteLine(tree.ToStringTree(parser)); var walker = new ParseTreeWalker(); //遍历树并触发监听器 walker.Walk(this, tree); return(true); }