public string GetTypeName(string code) { IEnumerable <ITokenMatch <SymbolEnum> > tokens = lexer.ScanText(code); if (tokens.Any(it => it.Token == SymbolEnum.Error)) { return(null); } else { return(parser.Parse(tokens, new ParserOptions()).FirstOrDefault() as string); } }
public AltRegex GetRegex(string strRegex) { IEnumerable <ITokenMatch <SymbolEnum> > tokens = lexer.ScanText(strRegex); ITokenMatch <SymbolEnum> err_token = tokens.FirstOrDefault(it => it.Token == SymbolEnum.Error); if (err_token != null) { throw ParseControlException.NewAndRun("Invalid regex input " + (err_token.ErrorMessage != null?"(" + err_token.ErrorMessage + ")":"") + ": " + strRegex.EscapedString()); } var regex = parser.Parse(tokens, new ParserOptions()).FirstOrDefault() as AltRegex; if (regex == null) { throw ParseControlException.NewAndRun("Invalid regex syntax: " + strRegex.EscapedString()); } return(regex); }