/// <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(); }
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); }