Esempio n. 1
0
File: Calc.cs Progetto: 0xb1dd1e/boo
	public static void Main(string[] args) 
	{
		try 
		{
			CalcLexer lexer = new CalcLexer(new CharBuffer(Console.In));
			lexer.setFilename("<stdin>");
			CalcParser parser = new CalcParser(lexer);
			parser.setFilename("<stdin>");

			// Parse the input expression
			parser.expr();
			CommonAST t = (CommonAST)parser.getAST();
			
			// Print the resulting tree out in LISP notation
			Console.Out.WriteLine(t.ToStringTree());
			CalcTreeWalker walker = new CalcTreeWalker();
			
			// Traverse the tree created by the parser
			float r = walker.expr(t);
			Console.Out.WriteLine("value is "+r);
		}
		catch(TokenStreamException e) 
		{
			Console.Error.WriteLine("exception: "+e);
		}
		catch(RecognitionException e) 
		{
			Console.Error.WriteLine("exception: "+e);
		}
	}  
Esempio n. 2
0
File: Main.cs Progetto: 0xb1dd1e/boo
	public static void Main(string[] args) {
		new INTNode();
		try {
			CalcLexer lexer = new CalcLexer(new ByteBuffer(Console.OpenStandardInput()));
			CalcParser parser = new CalcParser(lexer);
			// Parse the input expression
			parser.expr();
			CalcAST t = (CalcAST)parser.getAST();

			// Print the resulting tree out in LISP notation
			Console.Out.WriteLine(t.ToStringTree());

			// XML serialize the tree, showing
			// different physical node class types
			TextWriter w = Console.Out;
			t.xmlSerialize(w);
			w.Write("\n");
			w.Flush();

			// Compute value and return
			int r = t.Value();
			Console.Out.WriteLine("value is "+r);
		} catch(Exception e) {
			Console.Error.WriteLine("exception: "+e);
			Console.Error.WriteLine(e.StackTrace);
		}
	}
Esempio n. 3
0
    public static void Main(string[] args)
    {
        new INTNode();
        try {
            CalcLexer  lexer  = new CalcLexer(new ByteBuffer(Console.OpenStandardInput()));
            CalcParser parser = new CalcParser(lexer);
            // Parse the input expression
            parser.expr();
            CalcAST t = (CalcAST)parser.getAST();

            // Print the resulting tree out in LISP notation
            Console.Out.WriteLine(t.ToStringTree());

            // XML serialize the tree, showing
            // different physical node class types
            TextWriter w = Console.Out;
            t.xmlSerialize(w);
            w.Write("\n");
            w.Flush();

            // Compute value and return
            int r = t.Value();
            Console.Out.WriteLine("value is " + r);
        } catch (Exception e) {
            Console.Error.WriteLine("exception: " + e);
            Console.Error.WriteLine(e.StackTrace);
        }
    }
Esempio n. 4
0
    public static void Main(string[] args)
    {
        try
        {
            CalcLexer lexer = new CalcLexer(new CharBuffer(Console.In));
            lexer.setFilename("<stdin>");
            CalcParser parser = new CalcParser(lexer);
            parser.setFilename("<stdin>");

            // Parse the input expression
            parser.expr();
            CommonAST t = (CommonAST)parser.getAST();

            // Print the resulting tree out in LISP notation
            Console.Out.WriteLine(t.ToStringTree());
            CalcTreeWalker walker = new CalcTreeWalker();

            // Traverse the tree created by the parser
            float r = walker.expr(t);
            Console.Out.WriteLine("value is " + r);
        }
        catch (TokenStreamException e)
        {
            Console.Error.WriteLine("exception: " + e);
        }
        catch (RecognitionException e)
        {
            Console.Error.WriteLine("exception: " + e);
        }
    }
Esempio n. 5
0
        public string evaluate(string expr)
        {
            CalcLexer  lexer  = new CalcLexer(new AntlrInputStream(expr));
            CalcParser parser = new CalcParser(new CommonTokenStream(lexer));
            IParseTree tree   = parser.start();
            double     answer = new CalcVisitor().Visit(tree);

            return(answer.ToString());
        }
Esempio n. 6
0
        public static (ParseTreePattern tree, string) Compile(string input)
        {
            var stream = new AntlrInputStream(input);
            var lexer  = new CalcLexer(stream);
            var tokens = new CommonTokenStream(lexer);
            var parser = new CalcParser(tokens);

            parser.BuildParseTree = true;
            parser.TrimParseTree  = true;

            var listener = new CalculatorListener(default, parser);
Esempio n. 7
0
        public void Interpreter_GivenEquationSolve_7_ShouldFail()
        {
            //Arrange
            var text   = "2^-(4+9*6/7)a";
            var lexer  = new CalcLexer(text);
            var parser = new CalcParser(new CalcLexer(text));

            //Act
            //Assert
            Assert.Throws <Exception>(() => parser.Parse());
        }
Esempio n. 8
0
        private void Setup(string input)
        {
            AntlrInputStream inputStream = new AntlrInputStream(input);

            this._calcLexer = new CalcLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(this._calcLexer);

            this._calcParser = new CalcParser(commonTokenStream)
            {
                BuildParseTree = true
            };
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            var a          = new StreamReader("./root.txt");
            var antlrInput = new AntlrInputStream(a);
            var lexer      = new CalcLexer(antlrInput);
            var tokens     = new BufferedTokenStream(lexer);
            var parser     = new CalcParser(tokens);

            lexer.PushLexerState();
            IParseTree tree = parser.compileUnit();

            Console.WriteLine(tree.ToStringTree());
        }
Esempio n. 10
0
        private void ButCalc_Click(object sender, EventArgs e)
        {
            var        reader = new StringReader(Formula.Text);
            var        input  = new AntlrInputStream(reader.ReadToEnd());
            var        lexer  = new CalcLexer(input);
            var        tokens = new CommonTokenStream(lexer);
            var        parser = new CalcParser(tokens);
            IParseTree tree   = parser.prog();

            Tree.Text = tree.ToStringTree(parser);
            var visitor = new CalcVisitor();

            Result.Text = visitor.Visit(tree).ToString();
        }
Esempio n. 11
0
        public void CsLexGeneratedLexer()
        {
            // '(a + b) - 100' using DFA-lexer
            var sut = new CalcLexer(new StringReader("(a + b) - 100"));

            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.LPARAN, "("));
            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.ID, "a"));
            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.PLUS, "+"));
            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.ID, "b"));
            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.RPARAN, ")"));
            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.MINUS, "-"));
            sut.GetNextToken().ShouldBe(new Token <Sym>(Sym.NUM, "100"));
            sut.GetNextToken().ShouldBe(Token.Eof <Sym>());
        }
Esempio n. 12
0
        public void Interpreter_GivenEquationSolve_6_ShouldPass()
        {
            //Arrange
            var text        = "2^-(4+9*6/7)";
            var lexer       = new CalcLexer(text);
            var parser      = new CalcParser(new CalcLexer(text));
            var tree        = parser.Parse();
            var interpreter = new CalcInterpreter();
            //Act
            var result = interpreter.Interpret(tree);

            //Assert
            Assert.AreEqual(0.0002976107554210143, result);
        }
Esempio n. 13
0
        public void Interpreter_GivenEquationSolve_5_ShouldPass()
        {
            //Arrange
            var text        = "2^(-3)";
            var lexer       = new CalcLexer(text);
            var parser      = new CalcParser(new CalcLexer(text));
            var tree        = parser.Parse();
            var interpreter = new CalcInterpreter();
            //Act
            var result = interpreter.Interpret(tree);

            //Assert
            Assert.AreEqual(0.125, result);
        }
Esempio n. 14
0
        public void Interpreter_GivenEquationSolve_3_ShouldPass()
        {
            //Arrange
            var text        = "2^4+9*6/7";
            var lexer       = new CalcLexer(text);
            var parser      = new CalcParser(new CalcLexer(text));
            var tree        = parser.Parse();
            var interpreter = new CalcInterpreter();
            //Act
            var result = interpreter.Interpret(tree);

            //Assert
            Assert.GreaterOrEqual(result, 23.7);
        }
Esempio n. 15
0
        public void Interpreter_GivenEquationSolve_1_ShouldPass()
        {
            //Arrange
            var text        = "8.23987456*0.3+9-2+45";
            var lexer       = new CalcLexer(text);
            var parser      = new CalcParser(new CalcLexer(text));
            var tree        = parser.Parse();
            var interpreter = new CalcInterpreter();
            //Act
            var result = interpreter.Interpret(tree);

            //Assert
            Assert.AreEqual(54.471962368, result);
        }
Esempio n. 16
0
        public void Interpreter_GivenEquationSolve_13_ShouldPass()
        {
            //Arrange
            var text        = "!((1.3*4 >= 5/2) & (6^2 >= 7^2))";
            var lexer       = new CalcLexer(text);
            var parser      = new CalcParser(new CalcLexer(text));
            var tree        = parser.Parse();
            var interpreter = new CalcInterpreter();
            //Act
            var result = interpreter.Interpret(tree);

            //Assert
            Assert.AreEqual(1, result);
        }
Esempio n. 17
0
        public Calc_node Generate(string text)
        {
            text = text.Replace('×', '*').Replace('÷', '/'); // patch
            TextReader sr = new StringReader(text);

            stream.Reset();
            stream.Load(sr, BaseInputCharStream.InitialBufferSize, BaseInputCharStream.ReadBufferSize);
            var lexer  = new CalcLexer(stream);
            var tokens = new CommonTokenStream(lexer);
            var parser = new CalcParser(tokens);
            var tree   = parser.exp();
            var result = visitor.Visit(tree);

            return(result);
        }
Esempio n. 18
0
        static void Main(string[] args)
        {
            var text   = "9+5*\n7 \n#this is a comment\n";//args[0];
            var lexer  = new CalcLexer(text);
            var tokens = lexer.Tokenize();

            tokens.ForEach(token => Console.WriteLine(token));

            var parser = new CalcParser(new CalcLexer(text));
            // var tree = parser.Parse();
            // Console.WriteLine("\nParse Tree");
            // Console.WriteLine(tree.ToStringTree());

            var interpreter = new CalcInterpreter();
            // Console.WriteLine("\nResult");
            // Console.WriteLine(interpreter.Interpret(tree));
        }
Esempio n. 19
0
        public Argument Calculate(string expression)
        {
            AntlrInputStream inputStream = new AntlrInputStream(expression);
            CalcLexer        calcLexer   = new CalcLexer(inputStream);

            calcLexer.RemoveErrorListeners(); //removes the default console listener
            calcLexer.AddErrorListener(new ThrowExceptionErrorListener());

            CommonTokenStream commonTokenStream = new CommonTokenStream(calcLexer);
            CalcParser        parser            = new CalcParser(commonTokenStream);

            parser.RemoveErrorListeners(); //removes the default console listener
            parser.AddErrorListener(new ThrowExceptionErrorListener());

            CalcParser.ExpressionContext context = parser.expression();

            return(this._visitor.Visit(context));
        }
Esempio n. 20
0
 public CalcParser(CalcLexer lexer) : base(lexer, 1)
 {
 }