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); } }
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); } }
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); } }
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); } }
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()); }
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);
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()); }
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 }; }
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()); }
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(); }
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>()); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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)); }
public CalcParser(CalcLexer lexer) : base(lexer, 1) { }