Пример #1
0
        private Object ParseLoadJson(String expression)
        {
            Pair <ITree, CommonTokenStream> parsed = ParseJson(expression);

            EsperEPL2GrammarParser.StartJsonValueRuleContext tree = (EsperEPL2GrammarParser.StartJsonValueRuleContext)parsed.First;
            Assert.AreEqual(EsperEPL2GrammarParser.RULE_startJsonValueRule, ASTUtil.GetRuleIndexIfProvided(tree));
            ITree root = tree.GetChild(0);

            ASTUtil.DumpAST(root);
            return(ASTJsonHelper.Walk(parsed.Second, tree.jsonvalue()));
        }
Пример #2
0
        public static ExprTimePeriod TimePeriodGetExprAllParams(EsperEPL2GrammarParser.TimePeriodContext ctx, IDictionary <ITree, ExprNode> astExprNodeMap, VariableService variableService, StatementSpecRaw spec, ConfigurationInformation config)
        {
            var nodes = new ExprNode[8];

            for (var i = 0; i < ctx.ChildCount; i++)
            {
                var unitRoot = ctx.GetChild(i);

                ExprNode valueExpr;
                if (ASTUtil.IsTerminatedOfType(unitRoot.GetChild(0), EsperEPL2GrammarLexer.IDENT))
                {
                    var ident = unitRoot.GetChild(0).GetText();
                    valueExpr = ASTExprHelper.ResolvePropertyOrVariableIdentifier(ident, variableService, spec);
                }
                else
                {
                    var        @ref   = new Atomic <ExprNode>();
                    ExprAction action = (exprNode, astExprNodeMapX, nodeX) => {
                        astExprNodeMapX.Remove(nodeX);
                        @ref.Set(exprNode);
                    };
                    ASTExprHelper.RecursiveFindRemoveChildExprNode(unitRoot.GetChild(0), astExprNodeMap, action);
                    valueExpr = @ref.Get();
                }

                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_millisecondPart)
                {
                    nodes[7] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_secondPart)
                {
                    nodes[6] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_minutePart)
                {
                    nodes[5] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_hourPart)
                {
                    nodes[4] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_dayPart)
                {
                    nodes[3] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_weekPart)
                {
                    nodes[2] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_monthPart)
                {
                    nodes[1] = valueExpr;
                }
                if (ASTUtil.GetRuleIndexIfProvided(unitRoot) == EsperEPL2GrammarParser.RULE_yearPart)
                {
                    nodes[0] = valueExpr;
                }
            }

            ExprTimePeriod timeNode = new ExprTimePeriodImpl(config.EngineDefaults.ExpressionConfig.TimeZone,
                                                             nodes[0] != null, nodes[1] != null, nodes[2] != null, nodes[3] != null, nodes[4] != null, nodes[5] != null, nodes[6] != null, nodes[7] != null);

            if (nodes[0] != null)
            {
                timeNode.AddChildNode(nodes[0]);
            }
            if (nodes[1] != null)
            {
                timeNode.AddChildNode(nodes[1]);
            }
            if (nodes[2] != null)
            {
                timeNode.AddChildNode(nodes[2]);
            }
            if (nodes[3] != null)
            {
                timeNode.AddChildNode(nodes[3]);
            }
            if (nodes[4] != null)
            {
                timeNode.AddChildNode(nodes[4]);
            }
            if (nodes[5] != null)
            {
                timeNode.AddChildNode(nodes[5]);
            }
            if (nodes[6] != null)
            {
                timeNode.AddChildNode(nodes[6]);
            }
            if (nodes[7] != null)
            {
                timeNode.AddChildNode(nodes[7]);
            }
            return(timeNode);
        }