public static Function Parse(string formula) { var formulaObj = new CalculatorVisitor().Visit( new CalculatorParser(new CommonTokenStream( new CalculatorLexer(new AntlrInputStream(formula)))).prog()); return(formulaObj); }
static void Main(string[] args) { var text = "1 + 3 - 1"; var inputStream = new AntlrInputStream(text); var lexer = new ExampleLexer(inputStream); var commonTokenStream = new CommonTokenStream(lexer); var parser = new ExampleParser(commonTokenStream); var context = parser.expression(); var visitor = new CalculatorVisitor(); var result = context.Accept(visitor); Console.WriteLine($"result = {result}"); }
static void Main(string[] args) { try { StreamReader inputStream = new StreamReader(Console.OpenStandardInput()); AntlrInputStream input = new AntlrInputStream(inputStream.ReadToEnd()); CalculatorLexer lexer = new CalculatorLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); CalculatorParser parser = new CalculatorParser(tokens); IParseTree tree = parser.prog(); Console.WriteLine(tree.ToStringTree(parser)); CalculatorVisitor visitor = new CalculatorVisitor(); Console.WriteLine(visitor.Visit(tree)); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); }
static void Main(string[] args) { try { StreamReader inputStream = new StreamReader(Console.OpenStandardInput()); AntlrInputStream input = new AntlrInputStream(inputStream.ReadToEnd()); CalculatorLexer lexer = new CalculatorLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); CalculatorParser parser = new CalculatorParser(tokens); IParseTree tree = parser.input(); Console.WriteLine(tree.ToStringTree(parser)); CalculatorVisitor visitor = new CalculatorVisitor(); Console.WriteLine(visitor.Visit(tree)); } catch (DivideByZeroException ex) { Console.WriteLine("Cannot Divide By Zero"); } Console.ReadLine(); }