コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }