X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcsl%2Fparser.yy;h=87fe4f3b4f9b706cbf429f166fdafd428562b1fd;hb=4a35931d46dadb5d664389b0fbe1498c5567e15f;hp=243c4fcd835209b526ba76f76461b396e90fb507;hpb=8ac61ad3afe5a174549645a3997aa59139f8a82b;p=awesomized%2Flibmemcached diff --git a/libmemcached/csl/parser.yy b/libmemcached/csl/parser.yy index 243c4fcd..87fe4f3b 100644 --- a/libmemcached/csl/parser.yy +++ b/libmemcached/csl/parser.yy @@ -42,18 +42,17 @@ class Context; %} -%error-verbose +%define parse.error verbose +%define api.pure +%define api.prefix {config_} +%define api.value.type {union CONFIG_STYPE} %debug %defines %expect 0 -%output "libmemcached/csl/parser.cc" -%defines "libmemcached/csl/parser.h" %lex-param { yyscan_t *scanner } -%name-prefix="config_" -%parse-param { Context *context } +%parse-param { class Context *context } %parse-param { yyscan_t *scanner } -%pure-parser -%require "2.4" +%require "2.5" %start begin %verbose @@ -66,33 +65,34 @@ class Context; #include #ifndef __INTEL_COMPILER -#pragma GCC diagnostic ignored "-Wold-style-cast" +# pragma GCC diagnostic ignored "-Wold-style-cast" #endif #ifndef __INTEL_COMPILER -#ifndef __clang__ -#pragma GCC diagnostic ignored "-Wlogical-op" -#endif +# ifndef __clang__ +# pragma GCC diagnostic ignored "-Wlogical-op" +# pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations" +# endif #endif -int conf_lex(YYSTYPE* lvalp, void* scanner); +int config_lex(YYSTYPE* lvalp, void* scanner); #define select_yychar(__context) yychar == UNKNOWN ? ( (__context)->previous_token == END ? UNKNOWN : (__context)->previous_token ) : yychar #define stryytname(__yytokentype) ((__yytokentype) < YYNTOKENS ) ? yytname[(__yytokentype)] : "" -#define parser_abort(__context, __error_message) do { (__context)->abort((__error_message), yytokentype(select_yychar(__context)), stryytname(YYTRANSLATE(select_yychar(__context)))); YYABORT; } while (0) +#define parser_abort(__context, __error_message) do { (__context)->abort((__error_message), config_tokentype(select_yychar(__context)), stryytname(YYTRANSLATE(select_yychar(__context)))); YYABORT; } while (0) // This is bison calling error. inline void __config_error(Context *context, yyscan_t *scanner, const char *error, int last_token, const char *last_token_str) { if (not context->end()) { - context->error(error, yytokentype(last_token), last_token_str); + context->error(error, config_tokentype(last_token), last_token_str); } else { - context->error(error, yytokentype(last_token), last_token_str); + context->error(error, config_tokentype(last_token), last_token_str); } } @@ -291,7 +291,7 @@ behaviors: parser_abort(context, "--NAMESPACE can only be called once"); } - if ((context->rc= memcached_set_namespace(context->memc, $2.c_str, $2.size)) != MEMCACHED_SUCCESS) + if ((context->rc= memcached_set_namespace(*context->memc, $2.c_str, $2.size)) != MEMCACHED_SUCCESS) { parser_abort(context, memcached_last_error_message(context->memc)); }