Exemplo n.º 1
0
        public void TestCalculator()
        {
            var testString = @"a=1+2*3; print a;";

            CalculatorLexer   lexer  = new CalculatorLexer(new AntlrInputStream(testString));
            CommonTokenStream tokens = new CommonTokenStream(lexer);
            CalculatorParser  p      = new CalculatorParser(tokens);

            p.BuildParseTree = true;
            p.AddParseListener(new CalculatorListener());
            ParserRuleContext t = p.program();
        }
Exemplo n.º 2
0
        static int Evaluate(string input)
        {
            var stream  = new AntlrInputStream(input);
            var lexer   = new CalculatorLexer(stream);
            var tokens  = new CommonTokenStream(lexer);
            var parser  = new CalculatorParser(tokens);
            var program = parser.program();
            var visitor = new CalcGrammarVisitor();
            var result  = visitor.Visit(program);

            return(result);
        }
Exemplo n.º 3
0
        public object Execute(string script)
        {
            AntlrInputStream  stream      = new AntlrInputStream(script);
            CalculatorLexer   lexer       = new CalculatorLexer(stream);
            CommonTokenStream tokenStream = new CommonTokenStream(lexer);
            CalculatorParser  parser      = new CalculatorParser(tokenStream);
            var root = parser.program();

            if (root.IsEmpty && root.exception != null)
            {
                if (root.exception is RecognitionException)
                {
                    throw new Exception("null");
                }
                else
                {
                    throw new InvalidOperationException();
                }
            }
            object result = root.Accept(m_processor);

            return(result);
        }