Esempio n. 1
0
 public ParseNodeUses(EPLModuleParseItem item, String uses)
     : base(item)
 {
     Uses = uses;
 }
Esempio n. 2
0
 public ParseNodeImport(EPLModuleParseItem item, String imported)
     : base(item)
 {
     Imported = imported;
 }
Esempio n. 3
0
        public static ParseNode GetModule(EPLModuleParseItem item, String resourceName)
        {
            var input = new NoCaseSensitiveStream(item.Expression);

            var lex         = ParseHelper.NewLexer(input);
            var tokenStream = new CommonTokenStream(lex);

            tokenStream.Fill();

            var tokens       = tokenStream.GetTokens();
            var beginIndex   = 0;
            var isMeta       = false;
            var isModule     = false;
            var isUses       = false;
            var isExpression = false;

            while (beginIndex < tokens.Count)
            {
                var t = tokens[beginIndex];
                if (t.Type == EsperEPL2GrammarParser.Eof)
                {
                    break;
                }

                if ((t.Type == EsperEPL2GrammarParser.WS) ||
                    (t.Type == EsperEPL2GrammarParser.SL_COMMENT) ||
                    (t.Type == EsperEPL2GrammarParser.ML_COMMENT))
                {
                    beginIndex++;
                    continue;
                }
                var tokenText = t.Text.Trim().ToLower();
                switch (tokenText)
                {
                case "module":
                    isModule = true;
                    isMeta   = true;
                    break;

                case "uses":
                    isUses = true;
                    isMeta = true;
                    break;

                case "import":
                    isMeta = true;
                    break;

                default:
                    isExpression = true;
                    break;
                }
                beginIndex++;
                beginIndex++; // skip space
                break;
            }

            if (isExpression)
            {
                return(new ParseNodeExpression(item));
            }
            if (!isMeta)
            {
                return(new ParseNodeComment(item));
            }

            // check meta tag (module, uses, import)
            var buffer = new StringWriter();

            for (int i = beginIndex; i < tokens.Count; i++)
            {
                var t = tokens[i];
                if (t.Type == EsperEPL2GrammarParser.Eof)
                {
                    break;
                }

                if ((t.Type != EsperEPL2GrammarParser.IDENT) &&
                    (t.Type != EsperEPL2GrammarParser.DOT) &&
                    (t.Type != EsperEPL2GrammarParser.STAR) &&
                    (!t.Text.Matches("[a-zA-Z]*")))
                {
                    throw GetMessage(isModule, isUses, resourceName, t.Type);
                }
                buffer.Write(t.Text.Trim());
            }

            String result = buffer.ToString().Trim();

            if (result.Length == 0)
            {
                throw GetMessage(isModule, isUses, resourceName, -1);
            }

            if (isModule)
            {
                return(new ParseNodeModule(item, result));
            }
            else if (isUses)
            {
                return(new ParseNodeUses(item, result));
            }
            return(new ParseNodeImport(item, result));
        }
Esempio n. 4
0
 public ParseNodeModule(EPLModuleParseItem item, String moduleName)
     : base(item)
 {
     ModuleName = moduleName;
 }