public static ISExpression[] Parse(string input) { AntlrInputStream inputStream = new AntlrInputStream(input); SchemeLexer lexer = new SchemeLexer(inputStream); CommonTokenStream commonTokenStream = new CommonTokenStream(lexer); SchemeParser parser = new SchemeParser(commonTokenStream); var context = parser.body(); var visitor = new SchemeVisitor(); var expr = visitor.Visit(context); ISExpression[] arr; if (expr is ISExpression) { arr = new ISExpression[] { (ISExpression)expr } } ; else if (expr is ISExpression[]) { arr = (ISExpression[])expr; } else { throw new InvalidOperationException("parser error, unknown type: " + expr.GetType().Name); } return(arr); }
public void TestVisitAllLines() { var routes = new SchemeVisitor().VisitAllLines(Scheme); foreach (var r in routes) { WriteRoute(r); } }
public void TestVisitAllLinesByBranchAndBound() { var routes = new SchemeVisitor().VisitAllLinesByBranchAndBound(Scheme); foreach (var r in routes) { WriteRoute(r); } }
public void TestFindRoute() { var from = Scheme.GetStations() .Where(s => s.Name == @"Бунинская аллея").First(); var to = Scheme.GetStations() .Where(s => s.Name == @"Алтуфьево").First(); var route = new SchemeVisitor().FindRoute(from, to); WriteRoute(route); }
public void TestRoute() { var scheme = new Scheme(); var line1 = scheme.AddLine(@"line1"); var line2 = scheme.AddLine(@"line2"); var line3 = scheme.AddLine(@"line3"); var line4 = scheme.AddLine(@"line4"); var line5 = scheme.AddLine(@"line5"); var s1 = line1.AddStation(@"s1"); var s2 = line2.AddStation(@"s2"); var s3 = line3.AddStation(@"s3"); var s4 = line4.AddStation(@"s4"); var s5 = line5.AddStation(@"s5"); var s1s2 = scheme.AddRelation(s1, s2, 20); var s1s3 = scheme.AddRelation(s1, s3, 18); var s1s4 = scheme.AddRelation(s1, s4, 12); var s1s5 = scheme.AddRelation(s1, s4, 8); var s2s3 = scheme.AddRelation(s2, s3, 14); var s2s4 = scheme.AddRelation(s2, s4, 7); var s2s5 = scheme.AddRelation(s2, s5, 11); var s3s4 = scheme.AddRelation(s3, s4, 6); var s3s5 = scheme.AddRelation(s3, s5, 11); var s4s5 = scheme.AddRelation(s4, s5, 12); var routes = new List <IRoute>(); routes.Add(s1s2); routes.Add(s1s3); routes.Add(s1s4); routes.Add(s1s5); routes.Add(s2s3); routes.Add(s2s4); routes.Add(s2s5); routes.Add(s3s4); routes.Add(s3s5); routes.Add(s4s5); var r = new SchemeVisitor().VisitAllLinesByBranchAndBound(scheme); }