1 namespace Antlr3.Runtime.Test.Composition 2 { 3 using System; 4 using Antlr.Runtime; 5 using Antlr.Runtime.Tree; 6 7 internal class Program 8 { _Main(string[] args)9 private static void _Main(string[] args) 10 { 11 // input "x = 2*(3+3)" 12 13 ICharStream input; 14 if (args.Length > 0) 15 { 16 if (args[0].Equals("-i")) 17 { 18 if (args.Length > 1) 19 { 20 input = new ANTLRFileStream(args[1]); 21 } 22 else 23 { 24 throw new Exception("No input file specified."); 25 } 26 } 27 else 28 { 29 input = new ANTLRStringStream(args[0]); 30 } 31 } 32 else 33 { 34 input = new ANTLRInputStream(Console.OpenStandardInput()); 35 } 36 37 var lex = new VecMathLexer(input); 38 var tokens = new CommonTokenStream(lex); 39 var g = new VecMathParser(tokens); 40 IAstRuleReturnScope<CommonTree> r = g.prog(); 41 CommonTree t = r.Tree; 42 Console.WriteLine("Original tree: " + t.ToStringTree()); 43 44 var simplify = new Simplify(new CommonTreeNodeStream(t)); 45 t = (CommonTree)simplify.Downup(t); 46 47 var reduce = new Reduce(new CommonTreeNodeStream(t)); 48 t = (CommonTree)reduce.Downup(t); 49 50 Console.WriteLine("Simplified tree: " + t.ToStringTree()); 51 Console.ReadKey(); 52 } 53 } 54 } 55