Ejemplo n.º 1
0
        /// <summary>
        ///     Internal entry point
        /// </summary>
        private void internalParseEntryPoint()
        {
            _lexer = new CqlLexer(Query, ParserOptions);
#if ENTITYSQL_PARSER_YYDEBUG
            CqlLexer.Token tk = lexer.yylex();
            while (null != tk)
            {
                Console.WriteLine("{0} := {1}", tk.TokenId, lexer.yytext());
                tk = lexer.yylex();
            }
#endif
            yyparse();
        }
Ejemplo n.º 2
0
        private void yyerror(string s)
        {
            if (s.Equals(_internalYaccSyntaxErrorMessage, StringComparison.Ordinal))
            {
                var    errorPosition     = _lexer.IPos;
                string syntaxContextInfo = null;
                var    term = _lexer.YYText;
                if (!String.IsNullOrEmpty(term))
                {
                    syntaxContextInfo = Strings.LocalizedTerm;
                    ErrorContext errCtx  = null;
                    var          astNode = yylval as Node;
                    if (null != astNode &&
                        (null != astNode.ErrCtx) &&
                        (!String.IsNullOrEmpty(astNode.ErrCtx.ErrorContextInfo)))
                    {
                        errCtx        = astNode.ErrCtx;
                        errorPosition = Math.Min(errorPosition, errorPosition - term.Length);
                    }

                    if ((yylval is CqlLexer.TerminalToken) &&
                        CqlLexer.IsReservedKeyword(term) &&
                        !(astNode is Identifier))
                    {
                        syntaxContextInfo = Strings.LocalizedKeyword;
                        term          = term.ToUpperInvariant();
                        errorPosition = Math.Min(errorPosition, errorPosition - term.Length);
                    }
                    else if (null != errCtx)
                    {
                        syntaxContextInfo = EntityRes.GetString(errCtx.ErrorContextInfo);
                    }

                    syntaxContextInfo = String.Format(CultureInfo.CurrentCulture, "{0} '{1}'", syntaxContextInfo, term);
                }

                var errorMessage = Strings.GenericSyntaxError;
                throw EntitySqlException.Create(
                          _query,
                          errorMessage,
                          errorPosition,
                          syntaxContextInfo,
                          false,
                          null);
            }
            var errorPosition1 = _lexer.IPos;

            throw EntitySqlException.Create(_query, s, errorPosition1, null, false, null);
        }