public static TResult TryAcceptVisitor <TResult>(this Body body, dynamic visitor)
        {
            // Это нужно, чтобы компилятор не возражал против вызова ещё не добавленного метода Accept
            dynamic dynamicBody = body;

            return((TResult)dynamicBody.Accept(visitor));
        }
Example #2
0
        public DynamicRemoteClient Accept()
        {
            dynamic client = listener.Accept();
            dynamic remote = GetRemoteClient();

            return(new DynamicRemoteClient(remote, client));
        }
Example #3
0
        public static Dimensions GetDimensions(this Body body)
        {
            var visitor = new DimensionsVisitor();

            dynamic dynamicBody = body;

            dynamicBody.Accept(visitor);
            return(visitor.Dimensions);
        }
Example #4
0
        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);
        }
Example #7
0
        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
            {
            }
        }
Example #8
0
        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);
            }));
        }
Example #9
0
        /// <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);
        }
Example #10
0
 public override bool Dispatch(dynamic listener) => listener.Accept(this);
Example #11
0
        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;
        }
Example #12
0
 public override void Dispatch(dynamic listener)
 {
     listener.Accept(this);
 }