public static TResult TryAcceptVisitor <TResult>(this Body body, dynamic visitor) { // Это нужно, чтобы компилятор не возражал против вызова ещё не добавленного метода Accept dynamic dynamicBody = body; return((TResult)dynamicBody.Accept(visitor)); }
public DynamicRemoteClient Accept() { dynamic client = listener.Accept(); dynamic remote = GetRemoteClient(); return(new DynamicRemoteClient(remote, client)); }
public static Dimensions GetDimensions(this Body body) { var visitor = new DimensionsVisitor(); dynamic dynamicBody = body; dynamicBody.Accept(visitor); return(visitor.Dimensions); }
public static double GetSurfaceArea(this Body body) { var visitor = new SurfaceAreaVisitor(); dynamic dynamicBody = body; dynamicBody.Accept(visitor); return(visitor.SurfaceArea); }
public static double GetSurfaceArea(this Body body) { var visitor = new SurfaceAreaVisitor(); // см описание этого трюка в GetDimensions dynamic dynamicBody = body; dynamicBody.Accept(visitor); return(visitor.SurfaceArea); }
public static Dimensions GetDimensions(this Body body) { var visitor = new DimensionsVisitor(); // Этот трюк с dynamic нужен, чтобы код компилировался, // пока вы выполняете первую задачу и ещё не создали метод Body.Accept. // В реальном коде он не нужен, а можно просто вызывать body.Accept(...) dynamic dynamicBody = body; dynamicBody.Accept(visitor); return(visitor.Dimensions); }
private void Compile(dynamic c) { if (c.Catagory == Syntax.SyntaxCatagory.Declaration) { var v = new EvalutionVisitor(); c.Accept(v, _evp); setResult(c.Name, ""); } else if (c.Catagory == Syntax.SyntaxCatagory.Expression) { var aa = ((List <Tech.QScript.Syntax.SyntaxNode>)Content).Where(x => ((Syntax.SyntaxNode)x).Catagory == Syntax.SyntaxCatagory.Declaration).ToList(); foreach (Syntax.Declare ss in aa) { Syntax.Declare d = (Syntax.Declare)ss; c.ReplaceWith(d.Name, d.GetResult(d.Name)); } var v = new EvalutionVisitor(); c.Accept(v, _evp); AssignTo(c, v.result.Value); } else if (c.Catagory == Syntax.SyntaxCatagory.function) { var v = new EvalutionVisitor(); var rslt = GetValue(((Tech.QScript.Syntax.Fun)c).Datasource); c.AddSource(rslt); c.Accept(v, _evp); AssignTo(c, v.result.Value); } else if (c.Catagory == Syntax.SyntaxCatagory.Literal) { var v = new EvalutionVisitor(); c.Accept(v, _evp); AssignTo(c, v.result.Value); } else if (c.Catagory == Syntax.SyntaxCatagory.Query) { var v = new EvalutionVisitor(); c.Accept(v, _evp); AssignTo(c, v.result.Value); } else if (c.Catagory == Syntax.SyntaxCatagory.Statement) { var aa = ((List <Tech.QScript.Syntax.SyntaxNode>)Content).Where(x => ((Syntax.SyntaxNode)x).Catagory == Syntax.SyntaxCatagory.Declaration).ToList(); foreach (Syntax.Declare ss in aa) { Syntax.Declare d = (Syntax.Declare)ss; c.addText(c.Text.Replace("[" + d.Name + "]", d.GetResult(d.Name))); } var v = new EvalutionVisitor(); c.Accept(v, _evp); AssignTo(c, v.result.Value); } else { } }
public SymbolicValue <TModel, TVar, TBool, TInt, TString> VisitZenCreateObjectExpr <TObject>(ZenCreateObjectExpr <TObject> expression, SymbolicEvaluationEnvironment <TModel, TVar, TBool, TInt, TString> parameter) { return(LookupOrCompute(expression, () => { var fields = ImmutableDictionary <string, SymbolicValue <TModel, TVar, TBool, TInt, TString> > .Empty; foreach (var fieldValuePair in expression.Fields) { var field = fieldValuePair.Key; dynamic fieldValue = fieldValuePair.Value; fields = fields.Add(field, fieldValue.Accept(this, parameter)); } return new SymbolicClass <TModel, TVar, TBool, TInt, TString>(this.Solver, fields); })); }
/// <summary> /// Given a clause which has a Lucene based phrase, creates a KQL query. /// </summary> /// <param name="queryStringClause">The given clausse.</param> /// <returns>A KQL query string.</returns> private string CreateKqlFromLucenePhrase(QueryStringClause queryStringClause) { // we need to parse the phrase using var analyzer = new WhitespaceAnalyzer(); var queryParser = new QueryParser( Lucene.Net.Util.Version.LUCENE_30, queryStringClause.Default, analyzer) { AllowLeadingWildcard = queryStringClause.Wildcard, LowercaseExpandedTerms = false, }; // escaping special charachters from the pharse before parsing. // we would call QueryParser.Escape() method, but it escapes all charachters and // in our case we only have to worry about backslash. // implementation is based on: https://github.com/apache/lucenenet/blob/0eaf76540b8de326d1aa9ca24f4b5d6425a9ae38/src/Lucene.Net.QueryParser/Classic/QueryParserBase.cs var escapedPhrase = queryStringClause.Phrase.Replace(@"\", @"\\\", StringComparison.OrdinalIgnoreCase); // we parse and get the Lucene.Net query model var query = queryParser.Parse(escapedPhrase); // We make our own 'visitable' Lucence.Net query model var luceneQuery = VisitableLuceneQueryFactory.Make(query); // Visit var luceneVisitor = new LuceneVisitor(); luceneQuery.Accept(luceneVisitor); dynamic esQuery = luceneQuery.ESQuery; esQuery.Accept(this); return(esQuery.KustoQL); }
public override bool Dispatch(dynamic listener) => listener.Accept(this);
private void Compile(dynamic c) { if (c.Catagory == Syntax.SyntaxCatagory.Declaration) { var v = new EvalutionVisitor(); c.Accept(v); Result.Add(v.result); //var d = new Domain.Declaration(); //var v = new EvalutionVisitor(); //d.Accept(c, v); //return d; } else if (c.Catagory == Syntax.SyntaxCatagory.Expression) { var v = new EvalutionVisitor(); c.Accept(v); AssignTo(c, v.result); Result.Add(v.result); } else if (c.Catagory == Syntax.SyntaxCatagory.function) { var v = new EvalutionVisitor(); var rslt = GetValue(c); c.AddSource(rslt); c.Accept(v); AssignTo(c, v.result); Result.Add(v.result); //var d = new Domain.Function(); //var v = new EvalutionVisitor(); //d.Accept(c, v); //return d; // System.Data.DataTable dt = new System.Data.DataTable(); } else if (c.Catagory == Syntax.SyntaxCatagory.Literal) { //var d = new Domain.Value(); //var v = new EvalutionVisitor(); //d.Accept(c, v); //return d; } else if (c.Catagory == Syntax.SyntaxCatagory.Query) { var v = new EvalutionVisitor(); var rslt = GetValue(c); c.AddSource(rslt); c.Accept(v); Result.Add(v.result); //var d = new Domain.Query(); //var v = new EvalutionVisitor(); //d.Accept(c, v); //return d; } else if (c.Catagory == Syntax.SyntaxCatagory.Statement) { //var d = new Domain.LogicalStatement(); //var v = new EvalutionVisitor(); //d.Accept(c, v); //return d; } // return null; }
public override void Dispatch(dynamic listener) { listener.Accept(this); }