1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvernamespace Antlr3.Runtime.Test.Composition 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{ 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using System; 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using Antlr.Runtime; 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver using Antlr.Runtime.Tree; 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver internal class Program 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver private static void _Main(string[] args) 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver // input "x = 2*(3+3)" 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver ICharStream input; 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (args.Length > 0) 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (args[0].Equals("-i")) 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (args.Length > 1) 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver input = new ANTLRFileStream(args[1]); 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver throw new Exception("No input file specified."); 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver input = new ANTLRStringStream(args[0]); 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver { 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver input = new ANTLRInputStream(Console.OpenStandardInput()); 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var lex = new VecMathLexer(input); 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var tokens = new CommonTokenStream(lex); 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var g = new VecMathParser(tokens); 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver IAstRuleReturnScope<CommonTree> r = g.prog(); 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver CommonTree t = r.Tree; 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Console.WriteLine("Original tree: " + t.ToStringTree()); 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var simplify = new Simplify(new CommonTreeNodeStream(t)); 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t = (CommonTree)simplify.Downup(t); 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver var reduce = new Reduce(new CommonTreeNodeStream(t)); 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver t = (CommonTree)reduce.Downup(t); 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Console.WriteLine("Simplified tree: " + t.ToStringTree()); 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver Console.ReadKey(); 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 55