#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-fpermissive"
-#include <iostream>
-
#include <libmemcached/options/context.h>
#include <libmemcached/options/parser.h>
#include <libmemcached/options/string.h>
#include <libmemcached/options/symbol.h>
#define YY_EXTRA_TYPE Context*
-#define YY_USER_ACTION yylloc->first_line = yylineno;
}
%}
+%option 8bit
%option bison-bridge
-%option bison-locations
%option case-insensitive
%option debug
%option nounput
%option noyywrap
-%option yylineno
%option outfile="libmemcached/options/scanner.cc" header-file="libmemcached/options/scanner.h"
%option perf-report
-%option prefix="libmemcached_"
+%option prefix="config_"
%option reentrant
%%
}
"--SERVER" { yyextra->begin= yytext; return SERVER; }
-"--SERVERS" { yyextra->begin= yytext; return SERVERS; }
+"--SERVERS" { yyextra->begin= yytext; return SERVERS_OPTION; }
"--VERIFY_KEY" { yyextra->begin= yytext; return VERIFY_KEY; }
"--VERIFY-KEY" { yyextra->begin= yytext; return VERIFY_KEY; }
"--CONNECT_TIMEOUT" { yyextra->begin= yytext; return CONNECT_TIMEOUT; }
"--CONNECT-TIMEOUT" { yyextra->begin= yytext; return CONNECT_TIMEOUT; }
"--CORK" { yyextra->begin= yytext; return _CORK; }
-"--DISTRIBUTION" { yyextra->begin= yytext; return DISTRIBUTION; }
-"--HASH" { yyextra->begin= yytext; return HASH; }
+"--DISTRIBUTION=" { yyextra->begin= yytext; return DISTRIBUTION; }
+"--HASH=" { yyextra->begin= yytext; return HASH; }
"--HASH_WITH_PREFIX_KEY" { yyextra->begin= yytext; return HASH_WITH_PREFIX_KEY; }
"--HASH-WITH-PREFIX_KEY" { yyextra->begin= yytext; return HASH_WITH_PREFIX_KEY; }
"--IO_BYTES_WATERMARK" { yyextra->begin= yytext; return IO_BYTES_WATERMARK; }
"--IO_MSG_WATERMARK" { yyextra->begin= yytext; return IO_MSG_WATERMARK; }
"--IO-MSG-WATERMARK" { yyextra->begin= yytext; return IO_MSG_WATERMARK; }
"--KETAMA" { yyextra->begin= yytext; return KETAMA; }
-"--KETAMA_HASH" { yyextra->begin= yytext; return KETAMA_HASH; }
-"--KETAMA-HASH" { yyextra->begin= yytext; return KETAMA_HASH; }
+"--KETAMA_HASH=" { yyextra->begin= yytext; return KETAMA_HASH; }
+"--KETAMA-HASH=" { yyextra->begin= yytext; return KETAMA_HASH; }
"--KETAMA_WEIGHTED" { yyextra->begin= yytext; return KETAMA_WEIGHTED; }
"--KETAMA-WEIGHTED" { yyextra->begin= yytext; return KETAMA_WEIGHTED; }
"--NOREPLY" { yyextra->begin= yytext; return NOREPLY; }
"--USE_UDP" { yyextra->begin= yytext; return USE_UDP; }
"--USE-UDP" { yyextra->begin= yytext; return USE_UDP; }
-"--PREFIX-KEY" { yyextra->begin= yytext; return PREFIX_KEY; }
-"--PREFIX_KEY" { yyextra->begin= yytext; return PREFIX_KEY; }
+"--PREFIX-KEY=" { yyextra->begin= yytext; return PREFIX_KEY; }
+"--PREFIX_KEY=" { yyextra->begin= yytext; return PREFIX_KEY; }
+
+INCLUDE { yyextra->begin= yytext; return INCLUDE; }
+RESET { yyextra->begin= yytext; return RESET; }
+DEBUG { yyextra->begin= yytext; return PARSER_DEBUG; }
+SERVERS { yyextra->begin= yytext; return SERVERS; }
+END { yyextra->begin= yytext; return END; }
+ERROR { yyextra->begin= yytext; return ERROR; }
+
+TRUE { return TRUE; }
+FALSE { return FALSE; }
+
"--"[[:alnum:]]* {
- std::cerr << "Started at " << yytext << std::endl;
yyextra->begin= yytext;
return UNKNOWN_OPTION;
}
return HOSTNAME_WITH_PORT;
}
-[[:alnum:]]+"."[[:alpha:].]+ {
+[[:alnum:]]+"."[[:alpha:].]+[[:alnum:]] {
yylval->string.c_str = yytext;
yylval->string.length = yyleng;
return HOSTNAME;
}
-[[:digit:]]{1,3}"."[[:digit:]]{1,3}"."[[:digit:]]{1,3}"."[[:digit:]]{1,3}: {
+(([[:digit:]]{1,3}"."){3}([[:digit:]]{1,3})): {
yylval->string.c_str = yytext;
yylval->string.length = yyleng;
return IPADDRESS_WITH_PORT;
}
-[[:digit:]]{1,3}"."[[:digit:]]{1,3}"."[[:digit:]]{1,3}"."[[:digit:]]{1,3} {
+(([[:digit:]]{1,3}"."){3}([[:digit:]]{1,3})) {
yylval->string.c_str = yytext;
yylval->string.length = yyleng;
return IPADDRESS;
return STRING;
}
-\".*\" {
+(\".*\") {
yylval->string.c_str = yytext;
yylval->string.length = yyleng;
return QUOTED_STRING;
{
yylex_destroy(scanner);
}
+