public ParseNodeUses(EPLModuleParseItem item, String uses) : base(item) { Uses = uses; }
public ParseNodeImport(EPLModuleParseItem item, String imported) : base(item) { Imported = imported; }
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)); }
public ParseNodeModule(EPLModuleParseItem item, String moduleName) : base(item) { ModuleName = moduleName; }