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);
 }
Esempio n. 3
0
        /// <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);
        }