From 2a34f4dcac48917e41a1b6aee37edbe886aa9f7b Mon Sep 17 00:00:00 2001 From: Brian Aker Date: Sun, 27 Mar 2011 23:26:52 -0700 Subject: [PATCH] Merge in changes around setting up better syntax for distribution. --- libmemcached/behavior.c | 13 +- libmemcached/constants.h | 9 +- libmemcached/hash.c | 1 + libmemcached/hosts.c | 1 + libmemcached/memcached.c | 9 +- libmemcached/memcached.h | 3 +- libmemcached/options/parser.cc | 555 ++++++----- libmemcached/options/parser.h | 102 +- libmemcached/options/parser.yy | 26 +- libmemcached/options/scanner.cc | 1590 +++++++++++++++---------------- libmemcached/options/scanner.h | 2 +- libmemcached/options/scanner.l | 4 - tests/mem_functions.c | 2 +- tests/parser.cc | 6 +- 14 files changed, 1140 insertions(+), 1183 deletions(-) diff --git a/libmemcached/behavior.c b/libmemcached/behavior.c index 2e2b99e4..2fe17dc8 100644 --- a/libmemcached/behavior.c +++ b/libmemcached/behavior.c @@ -103,7 +103,7 @@ memcached_return_t memcached_behavior_set(memcached_st *ptr, { (void)memcached_behavior_set_key_hash(ptr, MEMCACHED_HASH_MD5); (void)memcached_behavior_set_distribution_hash(ptr, MEMCACHED_HASH_MD5); - ptr->flags.ketama_weighted= set_flag(data); + ptr->ketama.weighted= set_flag(data); /** @note We try to keep the same distribution going. This should be deprecated and rewritten. */ @@ -226,7 +226,7 @@ uint64_t memcached_behavior_get(memcached_st *ptr, case MEMCACHED_BEHAVIOR_VERIFY_KEY: return ptr->flags.verify_key; case MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED: - return ptr->flags.ketama_weighted; + return ptr->ketama.weighted; case MEMCACHED_BEHAVIOR_DISTRIBUTION: return ptr->distribution; case MEMCACHED_BEHAVIOR_KETAMA: @@ -357,6 +357,14 @@ memcached_return_t memcached_behavior_set_distribution(memcached_st *ptr, memcac { if (type < MEMCACHED_DISTRIBUTION_CONSISTENT_MAX) { + if (MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED) + { + ptr->ketama.weighted= true; + } + else + { + ptr->ketama.weighted= false; + } ptr->distribution= type; run_distribution(ptr); return MEMCACHED_SUCCESS; @@ -453,6 +461,7 @@ const char *libmemcached_string_distribution(const memcached_server_distribution case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA: return "MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA"; case MEMCACHED_DISTRIBUTION_RANDOM: return "MEMCACHED_DISTRIBUTION_RANDOM"; case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY: return "MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY"; + case MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED: return "MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED"; default: case MEMCACHED_DISTRIBUTION_CONSISTENT_MAX: return "INVALID memcached_server_distribution_t"; } diff --git a/libmemcached/constants.h b/libmemcached/constants.h index ed588875..ec7c66a2 100644 --- a/libmemcached/constants.h +++ b/libmemcached/constants.h @@ -84,14 +84,19 @@ typedef enum memcached_return_t memcached_return_t; #endif -typedef enum { +enum memcached_server_distribution_t { MEMCACHED_DISTRIBUTION_MODULA, MEMCACHED_DISTRIBUTION_CONSISTENT, MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA, MEMCACHED_DISTRIBUTION_RANDOM, MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY, + MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED, MEMCACHED_DISTRIBUTION_CONSISTENT_MAX -} memcached_server_distribution_t; +}; + +#ifndef __cplusplus +typedef enum memcached_server_distribution_t memcached_server_distribution_t; +#endif typedef enum { MEMCACHED_BEHAVIOR_NO_BLOCK, diff --git a/libmemcached/hash.c b/libmemcached/hash.c index 99a00709..9cb02b07 100644 --- a/libmemcached/hash.c +++ b/libmemcached/hash.c @@ -27,6 +27,7 @@ static uint32_t dispatch_host(const memcached_st *ptr, uint32_t hash) switch (ptr->distribution) { case MEMCACHED_DISTRIBUTION_CONSISTENT: + case MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED: case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA: case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY: { diff --git a/libmemcached/hosts.c b/libmemcached/hosts.c index eb719708..caff9add 100644 --- a/libmemcached/hosts.c +++ b/libmemcached/hosts.c @@ -59,6 +59,7 @@ memcached_return_t run_distribution(memcached_st *ptr) case MEMCACHED_DISTRIBUTION_CONSISTENT: case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA: case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA_SPY: + case MEMCACHED_DISTRIBUTION_CONSISTENT_WEIGHTED: return update_continuum(ptr); case MEMCACHED_DISTRIBUTION_MODULA: break; diff --git a/libmemcached/memcached.c b/libmemcached/memcached.c index 396f34e6..7324de41 100644 --- a/libmemcached/memcached.c +++ b/libmemcached/memcached.c @@ -22,7 +22,6 @@ static const memcached_st global_copy= { .binary_protocol= false, .buffer_requests= false, .hash_with_prefix_key= false, - .ketama_weighted= false, .no_block= false, .no_reply= false, .randomize_replica_read= false, @@ -34,7 +33,6 @@ static const memcached_st global_copy= { .use_udp= false, .verify_key= false, .tcp_keepalive= false, - .ping_service= false } }; @@ -50,7 +48,11 @@ static inline bool _memcached_init(memcached_st *self) if (! hash_ptr) return false; + self->ketama.continuum= NULL; + self->ketama.continuum_count= 0; self->ketama.continuum_points_counter= 0; + self->ketama.next_distribution_rebuild= 0; + self->ketama.weighted= false; self->number_of_hosts= 0; self->servers= NULL; @@ -70,18 +72,15 @@ static inline bool _memcached_init(memcached_st *self) self->poll_timeout= MEMCACHED_DEFAULT_TIMEOUT; self->connect_timeout= MEMCACHED_DEFAULT_CONNECT_TIMEOUT; self->retry_timeout= 0; - self->ketama.continuum_count= 0; self->send_size= -1; self->recv_size= -1; self->user_data= NULL; - self->ketama.next_distribution_rebuild= 0; self->number_of_replicas= 0; hash_ptr= hashkit_create(&self->distribution_hashkit); if (! hash_ptr) return false; - self->ketama.continuum= NULL; self->allocators= memcached_allocators_return_default(); diff --git a/libmemcached/memcached.h b/libmemcached/memcached.h index 35805bdc..435a6f60 100644 --- a/libmemcached/memcached.h +++ b/libmemcached/memcached.h @@ -72,7 +72,6 @@ struct memcached_st { bool binary_protocol:1; bool buffer_requests:1; bool hash_with_prefix_key:1; - bool ketama_weighted:1; bool no_block:1; // Don't block bool no_reply:1; bool randomize_replica_read:1; @@ -84,7 +83,6 @@ struct memcached_st { bool use_udp:1; bool verify_key:1; bool tcp_keepalive:1; - bool ping_service:1; } flags; memcached_server_distribution_t distribution; hashkit_st hashkit; @@ -109,6 +107,7 @@ struct memcached_st { memcached_result_st result; struct { + bool weighted; uint32_t continuum_count; // Ketama uint32_t continuum_points_counter; // Ketama time_t next_distribution_rebuild; // Ketama diff --git a/libmemcached/options/parser.cc b/libmemcached/options/parser.cc index 5f166cdf..a01e6c7f 100644 --- a/libmemcached/options/parser.cc +++ b/libmemcached/options/parser.cc @@ -157,58 +157,56 @@ void Context::start() BUFFER_REQUESTS = 273, CACHE_LOOKUPS = 274, CONNECT_TIMEOUT = 275, - _CORK = 276, - DISTRIBUTION = 277, - HASH = 278, - HASH_WITH_PREFIX_KEY = 279, - IO_BYTES_WATERMARK = 280, - IO_KEY_PREFETCH = 281, - IO_MSG_WATERMARK = 282, - KETAMA = 283, - KETAMA_HASH = 284, - KETAMA_WEIGHTED = 285, - NOREPLY = 286, - NUMBER_OF_REPLICAS = 287, - POLL_TIMEOUT = 288, - RANDOMIZE_REPLICA_READ = 289, - RCV_TIMEOUT = 290, - RETRY_TIMEOUT = 291, - SERVER_FAILURE_LIMIT = 292, - SND_TIMEOUT = 293, - SOCKET_RECV_SIZE = 294, - SOCKET_SEND_SIZE = 295, - SORT_HOSTS = 296, - SUPPORT_CAS = 297, - _TCP_NODELAY = 298, - _TCP_KEEPALIVE = 299, - _TCP_KEEPIDLE = 300, - USER_DATA = 301, - USE_UDP = 302, - VERIFY_KEY = 303, - PREFIX_KEY = 304, - MD5 = 305, - CRC = 306, - FNV1_64 = 307, - FNV1A_64 = 308, - FNV1_32 = 309, - FNV1A_32 = 310, - HSIEH = 311, - MURMUR = 312, - JENKINS = 313, - CONSISTENT = 314, - MODULA = 315, - RANDOM = 316, - TRUE = 317, - FALSE = 318, - NUMBER = 319, - FLOAT = 320, - HOSTNAME = 321, - HOSTNAME_WITH_PORT = 322, - IPADDRESS = 323, - IPADDRESS_WITH_PORT = 324, - STRING = 325, - QUOTED_STRING = 326, - FILE_PATH = 327 + DISTRIBUTION = 276, + HASH = 277, + HASH_WITH_PREFIX_KEY = 278, + IO_BYTES_WATERMARK = 279, + IO_KEY_PREFETCH = 280, + IO_MSG_WATERMARK = 281, + KETAMA_HASH = 282, + KETAMA_WEIGHTED = 283, + NOREPLY = 284, + NUMBER_OF_REPLICAS = 285, + POLL_TIMEOUT = 286, + RANDOMIZE_REPLICA_READ = 287, + RCV_TIMEOUT = 288, + RETRY_TIMEOUT = 289, + SERVER_FAILURE_LIMIT = 290, + SND_TIMEOUT = 291, + SOCKET_RECV_SIZE = 292, + SOCKET_SEND_SIZE = 293, + SORT_HOSTS = 294, + SUPPORT_CAS = 295, + _TCP_NODELAY = 296, + _TCP_KEEPALIVE = 297, + _TCP_KEEPIDLE = 298, + USER_DATA = 299, + USE_UDP = 300, + VERIFY_KEY = 301, + PREFIX_KEY = 302, + MD5 = 303, + CRC = 304, + FNV1_64 = 305, + FNV1A_64 = 306, + FNV1_32 = 307, + FNV1A_32 = 308, + HSIEH = 309, + MURMUR = 310, + JENKINS = 311, + CONSISTENT = 312, + MODULA = 313, + RANDOM = 314, + TRUE = 315, + FALSE = 316, + NUMBER = 317, + FLOAT = 318, + HOSTNAME = 319, + HOSTNAME_WITH_PORT = 320, + IPADDRESS = 321, + IPADDRESS_WITH_PORT = 322, + STRING = 323, + QUOTED_STRING = 324, + FILE_PATH = 325 }; #endif @@ -225,7 +223,7 @@ void Context::start() /* Line 264 of yacc.c */ -#line 229 "libmemcached/options/parser.cc" +#line 227 "libmemcached/options/parser.cc" #ifdef short # undef short @@ -438,22 +436,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 79 +#define YYFINAL 75 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 76 +#define YYLAST 73 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 76 +#define YYNTOKENS 74 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 12 /* YYNRULES -- Number of rules. */ -#define YYNRULES 72 +#define YYNRULES 70 /* YYNRULES -- Number of states. */ -#define YYNSTATES 88 +#define YYNSTATES 86 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 327 +#define YYMAXUTOK 325 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -464,10 +462,10 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 75, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 64, 2, 2, 2, 2, 2, + 2, 2, 73, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 62, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 65, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 63, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -492,8 +490,8 @@ static const yytype_uint8 yytranslate[] = 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, - 67, 68, 69, 70, 71, 72, 73, 74 + 55, 56, 57, 58, 59, 60, 61, 64, 65, 66, + 67, 68, 69, 70, 71, 72 }; #if YYDEBUG @@ -502,48 +500,47 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint8 yyprhs[] = { 0, 0, 3, 5, 9, 11, 13, 15, 17, 19, - 21, 23, 27, 30, 33, 36, 38, 41, 44, 47, - 50, 53, 55, 57, 59, 61, 63, 65, 67, 69, - 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, - 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, - 111, 113, 115, 117, 121, 124, 126, 128, 131, 133, - 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, - 155, 157, 159 + 21, 23, 27, 30, 33, 36, 38, 41, 44, 49, + 52, 55, 57, 59, 61, 63, 65, 67, 69, 71, + 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, + 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, + 113, 115, 119, 122, 124, 126, 129, 131, 133, 135, + 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, + 157 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 77, 0, -1, 78, -1, 77, 75, 78, -1, 79, + 75, 0, -1, 76, -1, 75, 73, 76, -1, 77, -1, 3, -1, 10, -1, 4, -1, 5, -1, 6, - -1, 7, -1, 8, 75, 86, -1, 11, 84, -1, - 13, 83, -1, 9, 86, -1, 80, -1, 49, 86, - -1, 22, 87, -1, 23, 85, -1, 29, 85, -1, - 81, 66, -1, 82, -1, 46, -1, 20, -1, 27, - -1, 25, -1, 26, -1, 32, -1, 33, -1, 35, - -1, 36, -1, 37, -1, 38, -1, 39, -1, 40, - -1, 16, -1, 17, -1, 18, -1, 19, -1, 21, - -1, 24, -1, 28, -1, 30, -1, 31, -1, 34, - -1, 41, -1, 42, -1, 43, -1, 44, -1, 45, - -1, 47, -1, 48, -1, 84, -1, 83, 64, 84, - -1, 69, 66, -1, 68, -1, 72, -1, 71, 66, - -1, 70, -1, 50, -1, 51, -1, 52, -1, 53, - -1, 54, -1, 55, -1, 56, -1, 57, -1, 58, - -1, 72, -1, 73, -1, 59, -1, 60, -1, 61, - -1 + -1, 7, -1, 8, 73, 84, -1, 11, 82, -1, + 13, 81, -1, 9, 84, -1, 78, -1, 47, 84, + -1, 21, 85, -1, 21, 85, 62, 83, -1, 22, + 83, -1, 79, 64, -1, 80, -1, 44, -1, 20, + -1, 26, -1, 24, -1, 25, -1, 30, -1, 31, + -1, 33, -1, 34, -1, 35, -1, 36, -1, 37, + -1, 38, -1, 16, -1, 17, -1, 18, -1, 19, + -1, 23, -1, 28, -1, 29, -1, 32, -1, 39, + -1, 40, -1, 41, -1, 42, -1, 43, -1, 45, + -1, 46, -1, 82, -1, 81, 62, 82, -1, 67, + 64, -1, 66, -1, 70, -1, 69, 64, -1, 68, + -1, 48, -1, 49, -1, 50, -1, 51, -1, 52, + -1, 53, -1, 54, -1, 55, -1, 56, -1, 70, + -1, 71, -1, 57, -1, 58, -1, 59, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 166, 166, 167, 171, 173, 175, 177, 182, 187, - 191, 195, 206, 213, 216, 220, 224, 231, 238, 245, - 252, 259, 266, 272, 276, 280, 284, 288, 292, 296, - 300, 304, 308, 312, 316, 323, 327, 331, 335, 339, - 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, - 383, 387, 394, 401, 411, 417, 423, 429, 435, 444, - 448, 452, 456, 460, 464, 468, 472, 476, 483, 487, - 495, 499, 503 + 0, 164, 164, 165, 169, 171, 173, 175, 180, 185, + 189, 193, 204, 211, 214, 218, 222, 229, 236, 247, + 254, 261, 268, 274, 278, 282, 286, 290, 294, 298, + 302, 306, 310, 314, 318, 325, 329, 333, 337, 341, + 345, 349, 353, 357, 361, 365, 369, 373, 377, 381, + 388, 395, 405, 411, 417, 423, 429, 438, 442, 446, + 450, 454, 458, 462, 466, 470, 477, 481, 489, 493, + 497 }; #endif @@ -556,21 +553,21 @@ static const char *const yytname[] = "PARSER_DEBUG", "INCLUDE", "CONFIGURE_FILE", "EMPTY_LINE", "SERVER", "SERVERS", "SERVERS_OPTION", "UNKNOWN_OPTION", "UNKNOWN", "AUTO_EJECT_HOSTS", "BINARY_PROTOCOL", "BUFFER_REQUESTS", - "CACHE_LOOKUPS", "CONNECT_TIMEOUT", "_CORK", "DISTRIBUTION", "HASH", + "CACHE_LOOKUPS", "CONNECT_TIMEOUT", "DISTRIBUTION", "HASH", "HASH_WITH_PREFIX_KEY", "IO_BYTES_WATERMARK", "IO_KEY_PREFETCH", - "IO_MSG_WATERMARK", "KETAMA", "KETAMA_HASH", "KETAMA_WEIGHTED", - "NOREPLY", "NUMBER_OF_REPLICAS", "POLL_TIMEOUT", - "RANDOMIZE_REPLICA_READ", "RCV_TIMEOUT", "RETRY_TIMEOUT", - "SERVER_FAILURE_LIMIT", "SND_TIMEOUT", "SOCKET_RECV_SIZE", - "SOCKET_SEND_SIZE", "SORT_HOSTS", "SUPPORT_CAS", "_TCP_NODELAY", - "_TCP_KEEPALIVE", "_TCP_KEEPIDLE", "USER_DATA", "USE_UDP", "VERIFY_KEY", - "PREFIX_KEY", "MD5", "CRC", "FNV1_64", "FNV1A_64", "FNV1_32", "FNV1A_32", - "HSIEH", "MURMUR", "JENKINS", "CONSISTENT", "MODULA", "RANDOM", "TRUE", - "FALSE", "','", "'='", "NUMBER", "FLOAT", "HOSTNAME", - "HOSTNAME_WITH_PORT", "IPADDRESS", "IPADDRESS_WITH_PORT", "STRING", - "QUOTED_STRING", "FILE_PATH", "' '", "$accept", "begin", "statement", - "expression", "behaviors", "behavior_number", "behavior_boolean", - "server_list", "server", "hash", "string", "distribution", 0 + "IO_MSG_WATERMARK", "KETAMA_HASH", "KETAMA_WEIGHTED", "NOREPLY", + "NUMBER_OF_REPLICAS", "POLL_TIMEOUT", "RANDOMIZE_REPLICA_READ", + "RCV_TIMEOUT", "RETRY_TIMEOUT", "SERVER_FAILURE_LIMIT", "SND_TIMEOUT", + "SOCKET_RECV_SIZE", "SOCKET_SEND_SIZE", "SORT_HOSTS", "SUPPORT_CAS", + "_TCP_NODELAY", "_TCP_KEEPALIVE", "_TCP_KEEPIDLE", "USER_DATA", + "USE_UDP", "VERIFY_KEY", "PREFIX_KEY", "MD5", "CRC", "FNV1_64", + "FNV1A_64", "FNV1_32", "FNV1A_32", "HSIEH", "MURMUR", "JENKINS", + "CONSISTENT", "MODULA", "RANDOM", "TRUE", "FALSE", "','", "'='", + "NUMBER", "FLOAT", "HOSTNAME", "HOSTNAME_WITH_PORT", "IPADDRESS", + "IPADDRESS_WITH_PORT", "STRING", "QUOTED_STRING", "FILE_PATH", "' '", + "$accept", "begin", "statement", "expression", "behaviors", + "behavior_number", "behavior_boolean", "server_list", "server", "hash", + "string", "distribution", 0 }; #endif @@ -585,35 +582,35 @@ static const yytype_uint16 yytoknum[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 44, 61, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 32 + 315, 316, 44, 61, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 32 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 76, 77, 77, 78, 78, 78, 78, 78, 78, - 78, 78, 79, 79, 79, 79, 80, 80, 80, 80, - 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 83, 83, 84, 84, 84, 84, 84, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 86, 86, - 87, 87, 87 + 0, 74, 75, 75, 76, 76, 76, 76, 76, 76, + 76, 76, 77, 77, 77, 77, 78, 78, 78, 78, + 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 81, 81, 82, 82, 82, 82, 82, 83, 83, 83, + 83, 83, 83, 83, 83, 83, 84, 84, 85, 85, + 85 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 3, 2, 2, 2, 1, 2, 2, 2, 2, + 1, 3, 2, 2, 2, 1, 2, 2, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 2, 1, 1, 2, 1, 1, + 1, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1 + 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -622,44 +619,44 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 0, 5, 7, 8, 9, 10, 0, 0, 6, 0, - 0, 35, 36, 37, 38, 23, 39, 0, 0, 40, - 25, 26, 24, 41, 0, 42, 43, 27, 28, 44, - 29, 30, 31, 32, 33, 34, 45, 46, 47, 48, - 49, 22, 50, 51, 0, 0, 2, 4, 15, 0, - 21, 0, 68, 69, 14, 55, 0, 58, 0, 56, - 12, 13, 52, 70, 71, 72, 17, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 18, 19, 16, 1, - 0, 20, 11, 54, 57, 0, 3, 53 + 0, 35, 36, 37, 38, 23, 0, 0, 39, 25, + 26, 24, 40, 41, 27, 28, 42, 29, 30, 31, + 32, 33, 34, 43, 44, 45, 46, 47, 22, 48, + 49, 0, 0, 2, 4, 15, 0, 21, 0, 66, + 67, 14, 53, 0, 56, 0, 54, 12, 13, 50, + 68, 69, 70, 17, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 19, 16, 1, 0, 20, 11, 52, + 55, 0, 0, 3, 51, 18 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 45, 46, 47, 48, 49, 50, 61, 60, 76, - 54, 66 + -1, 42, 43, 44, 45, 46, 47, 58, 57, 73, + 51, 63 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -65 +#define YYPACT_NINF -63 static const yytype_int8 yypact[] = { - -1, -65, -65, -65, -65, -65, -64, -59, -65, -7, - -7, -65, -65, -65, -65, -65, -65, 9, 1, -65, - -65, -65, -65, -65, 1, -65, -65, -65, -65, -65, - -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, - -65, -65, -65, -65, -59, 0, -65, -65, -65, -17, - -65, -59, -65, -65, -65, -65, -16, -65, 5, -65, - -65, 2, -65, -65, -65, -65, -65, -65, -65, -65, - -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, - -1, -65, -65, -65, -65, -7, -65, -65 + -1, -63, -63, -63, -63, -63, -62, -57, -63, -7, + -7, -63, -63, -63, -63, -63, 9, 1, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -57, 0, -63, -63, -63, -38, -63, -57, -63, + -63, -63, -63, -17, -63, -16, -63, -63, 2, -63, + -63, -63, -63, 7, -63, -63, -63, -63, -63, -63, + -63, -63, -63, -63, -63, -63, -1, -63, -63, -63, + -63, -7, 1, -63, -63, -63 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -65, -65, -8, -65, -65, -65, -65, -65, -9, 49, - 16, -65 + -63, -63, -6, -63, -63, -63, -63, -63, -9, -11, + 17, -63 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -669,26 +666,26 @@ static const yytype_int8 yypgoto[] = #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { - 79, 62, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 51, 10, 52, 53, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 81, - 83, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 78, 55, 56, 57, 58, 59, 85, 82, 63, 64, - 65, 84, 86, 77, 0, 80, 87 + 75, 59, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 48, 10, 49, 50, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 77, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 79, 80, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 74, 52, + 53, 54, 55, 56, 81, 78, 60, 61, 62, 82, + 83, 85, 84, 76 }; -static const yytype_int8 yycheck[] = +static const yytype_uint8 yycheck[] = { 0, 10, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 75, 13, 72, 73, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 11, 73, 13, 70, 71, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 64, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 66, - 66, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 44, 68, 69, 70, 71, 72, 64, 51, 59, 60, - 61, 66, 80, 24, -1, 75, 85 + 41, 42, 43, 44, 45, 46, 47, 64, 64, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 41, 66, + 67, 68, 69, 70, 62, 48, 57, 58, 59, 62, + 76, 82, 81, 73 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -697,13 +694,13 @@ static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 77, 78, 79, 80, 81, - 82, 75, 72, 73, 86, 68, 69, 70, 71, 72, - 84, 83, 84, 59, 60, 61, 87, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 85, 85, 86, 0, - 75, 66, 86, 66, 66, 64, 78, 84 + 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 75, 76, 77, 78, 79, 80, 73, 70, + 71, 84, 66, 67, 68, 69, 70, 82, 81, 82, + 57, 58, 59, 85, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 83, 84, 0, 73, 64, 84, 64, + 64, 62, 62, 76, 82, 83 }; #define yyerrok (yyerrstatus = 0) @@ -1538,28 +1535,28 @@ yyreduce: case 4: /* Line 1464 of yacc.c */ -#line 172 "libmemcached/options/parser.yy" +#line 170 "libmemcached/options/parser.yy" { ;} break; case 5: /* Line 1464 of yacc.c */ -#line 174 "libmemcached/options/parser.yy" +#line 172 "libmemcached/options/parser.yy" { ;} break; case 6: /* Line 1464 of yacc.c */ -#line 176 "libmemcached/options/parser.yy" +#line 174 "libmemcached/options/parser.yy" { ;} break; case 7: /* Line 1464 of yacc.c */ -#line 178 "libmemcached/options/parser.yy" +#line 176 "libmemcached/options/parser.yy" { context->set_end(); YYACCEPT; @@ -1569,7 +1566,7 @@ yyreduce: case 8: /* Line 1464 of yacc.c */ -#line 183 "libmemcached/options/parser.yy" +#line 181 "libmemcached/options/parser.yy" { context->rc= MEMCACHED_PARSE_USER_ERROR; parser_abort(context, NULL); @@ -1579,7 +1576,7 @@ yyreduce: case 9: /* Line 1464 of yacc.c */ -#line 188 "libmemcached/options/parser.yy" +#line 186 "libmemcached/options/parser.yy" { memcached_reset(context->memc); ;} @@ -1588,7 +1585,7 @@ yyreduce: case 10: /* Line 1464 of yacc.c */ -#line 192 "libmemcached/options/parser.yy" +#line 190 "libmemcached/options/parser.yy" { yydebug= 1; ;} @@ -1597,7 +1594,7 @@ yyreduce: case 11: /* Line 1464 of yacc.c */ -#line 196 "libmemcached/options/parser.yy" +#line 194 "libmemcached/options/parser.yy" { if ((context->rc= memcached_parse_configure_file(context->memc, (yyvsp[(3) - (3)].string).c_str, (yyvsp[(3) - (3)].string).length)) != MEMCACHED_SUCCESS) { @@ -1609,7 +1606,7 @@ yyreduce: case 12: /* Line 1464 of yacc.c */ -#line 207 "libmemcached/options/parser.yy" +#line 205 "libmemcached/options/parser.yy" { if ((context->rc= memcached_server_add_parsed(context->memc, (yyvsp[(2) - (2)].server).c_str, (yyvsp[(2) - (2)].server).length, (yyvsp[(2) - (2)].server).port, 0)) != MEMCACHED_SUCCESS) { @@ -1621,7 +1618,7 @@ yyreduce: case 13: /* Line 1464 of yacc.c */ -#line 214 "libmemcached/options/parser.yy" +#line 212 "libmemcached/options/parser.yy" { ;} break; @@ -1629,7 +1626,7 @@ yyreduce: case 14: /* Line 1464 of yacc.c */ -#line 217 "libmemcached/options/parser.yy" +#line 215 "libmemcached/options/parser.yy" { memcached_set_configuration_file(context->memc, (yyvsp[(2) - (2)].string).c_str, (yyvsp[(2) - (2)].string).length); ;} @@ -1638,7 +1635,7 @@ yyreduce: case 16: /* Line 1464 of yacc.c */ -#line 225 "libmemcached/options/parser.yy" +#line 223 "libmemcached/options/parser.yy" { if ((context->rc= memcached_set_prefix_key(context->memc, (yyvsp[(2) - (2)].string).c_str, (yyvsp[(2) - (2)].string).length)) != MEMCACHED_SUCCESS) { @@ -1650,7 +1647,7 @@ yyreduce: case 17: /* Line 1464 of yacc.c */ -#line 232 "libmemcached/options/parser.yy" +#line 230 "libmemcached/options/parser.yy" { if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (2)].distribution))) != MEMCACHED_SUCCESS) { @@ -1662,11 +1659,15 @@ yyreduce: case 18: /* Line 1464 of yacc.c */ -#line 239 "libmemcached/options/parser.yy" +#line 237 "libmemcached/options/parser.yy" { - if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_HASH, (yyvsp[(2) - (2)].hash))) != MEMCACHED_SUCCESS) + if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (4)].distribution))) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL);; + parser_abort(context, NULL);; + } + if ((context->rc= memcached_behavior_set_distribution_hash(context->memc, (yyvsp[(4) - (4)].hash))) != MEMCACHED_SUCCESS) + { + parser_abort(context, NULL);; } ;} break; @@ -1674,11 +1675,11 @@ yyreduce: case 19: /* Line 1464 of yacc.c */ -#line 246 "libmemcached/options/parser.yy" +#line 248 "libmemcached/options/parser.yy" { - if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_KETAMA_HASH, (yyvsp[(2) - (2)].hash))) != MEMCACHED_SUCCESS) + if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_HASH, (yyvsp[(2) - (2)].hash))) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL);; + parser_abort(context, NULL);; } ;} break; @@ -1686,7 +1687,7 @@ yyreduce: case 20: /* Line 1464 of yacc.c */ -#line 253 "libmemcached/options/parser.yy" +#line 255 "libmemcached/options/parser.yy" { if ((context->rc= memcached_behavior_set(context->memc, (yyvsp[(1) - (2)].behavior), (yyvsp[(2) - (2)].number))) != MEMCACHED_SUCCESS) { @@ -1698,7 +1699,7 @@ yyreduce: case 21: /* Line 1464 of yacc.c */ -#line 260 "libmemcached/options/parser.yy" +#line 262 "libmemcached/options/parser.yy" { if ((context->rc= memcached_behavior_set(context->memc, (yyvsp[(1) - (1)].behavior), true)) != MEMCACHED_SUCCESS) { @@ -1710,7 +1711,7 @@ yyreduce: case 22: /* Line 1464 of yacc.c */ -#line 267 "libmemcached/options/parser.yy" +#line 269 "libmemcached/options/parser.yy" { ;} break; @@ -1718,7 +1719,7 @@ yyreduce: case 23: /* Line 1464 of yacc.c */ -#line 273 "libmemcached/options/parser.yy" +#line 275 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT; ;} @@ -1727,7 +1728,7 @@ yyreduce: case 24: /* Line 1464 of yacc.c */ -#line 277 "libmemcached/options/parser.yy" +#line 279 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK; ;} @@ -1736,7 +1737,7 @@ yyreduce: case 25: /* Line 1464 of yacc.c */ -#line 281 "libmemcached/options/parser.yy" +#line 283 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK; ;} @@ -1745,7 +1746,7 @@ yyreduce: case 26: /* Line 1464 of yacc.c */ -#line 285 "libmemcached/options/parser.yy" +#line 287 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH; ;} @@ -1754,7 +1755,7 @@ yyreduce: case 27: /* Line 1464 of yacc.c */ -#line 289 "libmemcached/options/parser.yy" +#line 291 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS; ;} @@ -1763,7 +1764,7 @@ yyreduce: case 28: /* Line 1464 of yacc.c */ -#line 293 "libmemcached/options/parser.yy" +#line 295 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_POLL_TIMEOUT; ;} @@ -1772,7 +1773,7 @@ yyreduce: case 29: /* Line 1464 of yacc.c */ -#line 297 "libmemcached/options/parser.yy" +#line 299 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_RCV_TIMEOUT; ;} @@ -1781,7 +1782,7 @@ yyreduce: case 30: /* Line 1464 of yacc.c */ -#line 301 "libmemcached/options/parser.yy" +#line 303 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_RETRY_TIMEOUT; ;} @@ -1790,7 +1791,7 @@ yyreduce: case 31: /* Line 1464 of yacc.c */ -#line 305 "libmemcached/options/parser.yy" +#line 307 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT; ;} @@ -1799,7 +1800,7 @@ yyreduce: case 32: /* Line 1464 of yacc.c */ -#line 309 "libmemcached/options/parser.yy" +#line 311 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SND_TIMEOUT; ;} @@ -1808,7 +1809,7 @@ yyreduce: case 33: /* Line 1464 of yacc.c */ -#line 313 "libmemcached/options/parser.yy" +#line 315 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE; ;} @@ -1817,7 +1818,7 @@ yyreduce: case 34: /* Line 1464 of yacc.c */ -#line 317 "libmemcached/options/parser.yy" +#line 319 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE; ;} @@ -1826,7 +1827,7 @@ yyreduce: case 35: /* Line 1464 of yacc.c */ -#line 324 "libmemcached/options/parser.yy" +#line 326 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS; ;} @@ -1835,7 +1836,7 @@ yyreduce: case 36: /* Line 1464 of yacc.c */ -#line 328 "libmemcached/options/parser.yy" +#line 330 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_BINARY_PROTOCOL; ;} @@ -1844,7 +1845,7 @@ yyreduce: case 37: /* Line 1464 of yacc.c */ -#line 332 "libmemcached/options/parser.yy" +#line 334 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_BUFFER_REQUESTS; ;} @@ -1853,7 +1854,7 @@ yyreduce: case 38: /* Line 1464 of yacc.c */ -#line 336 "libmemcached/options/parser.yy" +#line 338 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_CACHE_LOOKUPS; ;} @@ -1862,124 +1863,106 @@ yyreduce: case 39: /* Line 1464 of yacc.c */ -#line 340 "libmemcached/options/parser.yy" - { - (yyval.behavior)= MEMCACHED_BEHAVIOR_CORK; - ;} - break; - - case 40: - -/* Line 1464 of yacc.c */ -#line 344 "libmemcached/options/parser.yy" +#line 342 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY; ;} break; - case 41: - -/* Line 1464 of yacc.c */ -#line 348 "libmemcached/options/parser.yy" - { - (yyval.behavior)= MEMCACHED_BEHAVIOR_KETAMA; - ;} - break; - - case 42: + case 40: /* Line 1464 of yacc.c */ -#line 352 "libmemcached/options/parser.yy" +#line 346 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED; ;} break; - case 43: + case 41: /* Line 1464 of yacc.c */ -#line 356 "libmemcached/options/parser.yy" +#line 350 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_NOREPLY; ;} break; - case 44: + case 42: /* Line 1464 of yacc.c */ -#line 360 "libmemcached/options/parser.yy" +#line 354 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ; ;} break; - case 45: + case 43: /* Line 1464 of yacc.c */ -#line 364 "libmemcached/options/parser.yy" +#line 358 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SORT_HOSTS; ;} break; - case 46: + case 44: /* Line 1464 of yacc.c */ -#line 368 "libmemcached/options/parser.yy" +#line 362 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_SUPPORT_CAS; ;} break; - case 47: + case 45: /* Line 1464 of yacc.c */ -#line 372 "libmemcached/options/parser.yy" +#line 366 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_NODELAY; ;} break; - case 48: + case 46: /* Line 1464 of yacc.c */ -#line 376 "libmemcached/options/parser.yy" +#line 370 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_KEEPALIVE; ;} break; - case 49: + case 47: /* Line 1464 of yacc.c */ -#line 380 "libmemcached/options/parser.yy" +#line 374 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_KEEPIDLE; ;} break; - case 50: + case 48: /* Line 1464 of yacc.c */ -#line 384 "libmemcached/options/parser.yy" +#line 378 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_USE_UDP; ;} break; - case 51: + case 49: /* Line 1464 of yacc.c */ -#line 388 "libmemcached/options/parser.yy" +#line 382 "libmemcached/options/parser.yy" { (yyval.behavior)= MEMCACHED_BEHAVIOR_VERIFY_KEY; ;} break; - case 52: + case 50: /* Line 1464 of yacc.c */ -#line 395 "libmemcached/options/parser.yy" +#line 389 "libmemcached/options/parser.yy" { if ((context->rc= memcached_server_add_parsed(context->memc, (yyvsp[(1) - (1)].server).c_str, (yyvsp[(1) - (1)].server).length, (yyvsp[(1) - (1)].server).port, 0)) != MEMCACHED_SUCCESS) { @@ -1988,10 +1971,10 @@ yyreduce: ;} break; - case 53: + case 51: /* Line 1464 of yacc.c */ -#line 402 "libmemcached/options/parser.yy" +#line 396 "libmemcached/options/parser.yy" { if ((context->rc= memcached_server_add_parsed(context->memc, (yyvsp[(3) - (3)].server).c_str, (yyvsp[(3) - (3)].server).length, (yyvsp[(3) - (3)].server).port, 0)) != MEMCACHED_SUCCESS) { @@ -2000,10 +1983,10 @@ yyreduce: ;} break; - case 54: + case 52: /* Line 1464 of yacc.c */ -#line 412 "libmemcached/options/parser.yy" +#line 406 "libmemcached/options/parser.yy" { (yyval.server).c_str= (yyvsp[(1) - (2)].string).c_str; (yyval.server).length= (yyvsp[(1) - (2)].string).length -1; // -1 to remove : @@ -2011,10 +1994,10 @@ yyreduce: ;} break; - case 55: + case 53: /* Line 1464 of yacc.c */ -#line 418 "libmemcached/options/parser.yy" +#line 412 "libmemcached/options/parser.yy" { (yyval.server).c_str= (yyvsp[(1) - (1)].string).c_str; (yyval.server).length= (yyvsp[(1) - (1)].string).length; @@ -2022,10 +2005,10 @@ yyreduce: ;} break; - case 56: + case 54: /* Line 1464 of yacc.c */ -#line 424 "libmemcached/options/parser.yy" +#line 418 "libmemcached/options/parser.yy" { (yyval.server).c_str= (yyvsp[(1) - (1)].string).c_str; (yyval.server).length= (yyvsp[(1) - (1)].string).length; @@ -2033,10 +2016,10 @@ yyreduce: ;} break; - case 57: + case 55: /* Line 1464 of yacc.c */ -#line 430 "libmemcached/options/parser.yy" +#line 424 "libmemcached/options/parser.yy" { (yyval.server).c_str= (yyvsp[(1) - (2)].string).c_str; (yyval.server).length= (yyvsp[(1) - (2)].string).length -1; // -1 to remove : @@ -2044,10 +2027,10 @@ yyreduce: ;} break; - case 58: + case 56: /* Line 1464 of yacc.c */ -#line 436 "libmemcached/options/parser.yy" +#line 430 "libmemcached/options/parser.yy" { (yyval.server).c_str= (yyvsp[(1) - (1)].string).c_str; (yyval.server).length= (yyvsp[(1) - (1)].string).length; @@ -2055,128 +2038,128 @@ yyreduce: ;} break; - case 59: + case 57: /* Line 1464 of yacc.c */ -#line 445 "libmemcached/options/parser.yy" +#line 439 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_MD5; ;} break; - case 60: + case 58: /* Line 1464 of yacc.c */ -#line 449 "libmemcached/options/parser.yy" +#line 443 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_CRC; ;} break; - case 61: + case 59: /* Line 1464 of yacc.c */ -#line 453 "libmemcached/options/parser.yy" +#line 447 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1_64; ;} break; - case 62: + case 60: /* Line 1464 of yacc.c */ -#line 457 "libmemcached/options/parser.yy" +#line 451 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1A_64; ;} break; - case 63: + case 61: /* Line 1464 of yacc.c */ -#line 461 "libmemcached/options/parser.yy" +#line 455 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1_32; ;} break; - case 64: + case 62: /* Line 1464 of yacc.c */ -#line 465 "libmemcached/options/parser.yy" +#line 459 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_FNV1A_32; ;} break; - case 65: + case 63: /* Line 1464 of yacc.c */ -#line 469 "libmemcached/options/parser.yy" +#line 463 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_HSIEH; ;} break; - case 66: + case 64: /* Line 1464 of yacc.c */ -#line 473 "libmemcached/options/parser.yy" +#line 467 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_MURMUR; ;} break; - case 67: + case 65: /* Line 1464 of yacc.c */ -#line 477 "libmemcached/options/parser.yy" +#line 471 "libmemcached/options/parser.yy" { (yyval.hash)= MEMCACHED_HASH_JENKINS; ;} break; - case 68: + case 66: /* Line 1464 of yacc.c */ -#line 484 "libmemcached/options/parser.yy" +#line 478 "libmemcached/options/parser.yy" { (yyval.string)= (yyvsp[(1) - (1)].string); ;} break; - case 69: + case 67: /* Line 1464 of yacc.c */ -#line 488 "libmemcached/options/parser.yy" +#line 482 "libmemcached/options/parser.yy" { (yyval.string).c_str= (yyvsp[(1) - (1)].string).c_str +1; // +1 to move use passed the initial quote (yyval.string).length= (yyvsp[(1) - (1)].string).length -1; // -1 removes the end quote ;} break; - case 70: + case 68: /* Line 1464 of yacc.c */ -#line 496 "libmemcached/options/parser.yy" +#line 490 "libmemcached/options/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_CONSISTENT; ;} break; - case 71: + case 69: /* Line 1464 of yacc.c */ -#line 500 "libmemcached/options/parser.yy" +#line 494 "libmemcached/options/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_MODULA; ;} break; - case 72: + case 70: /* Line 1464 of yacc.c */ -#line 504 "libmemcached/options/parser.yy" +#line 498 "libmemcached/options/parser.yy" { (yyval.distribution)= MEMCACHED_DISTRIBUTION_RANDOM; ;} @@ -2185,7 +2168,7 @@ yyreduce: /* Line 1464 of yacc.c */ -#line 2189 "libmemcached/options/parser.cc" +#line 2172 "libmemcached/options/parser.cc" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); diff --git a/libmemcached/options/parser.h b/libmemcached/options/parser.h index 9edf85cb..99f682fd 100644 --- a/libmemcached/options/parser.h +++ b/libmemcached/options/parser.h @@ -56,58 +56,56 @@ BUFFER_REQUESTS = 273, CACHE_LOOKUPS = 274, CONNECT_TIMEOUT = 275, - _CORK = 276, - DISTRIBUTION = 277, - HASH = 278, - HASH_WITH_PREFIX_KEY = 279, - IO_BYTES_WATERMARK = 280, - IO_KEY_PREFETCH = 281, - IO_MSG_WATERMARK = 282, - KETAMA = 283, - KETAMA_HASH = 284, - KETAMA_WEIGHTED = 285, - NOREPLY = 286, - NUMBER_OF_REPLICAS = 287, - POLL_TIMEOUT = 288, - RANDOMIZE_REPLICA_READ = 289, - RCV_TIMEOUT = 290, - RETRY_TIMEOUT = 291, - SERVER_FAILURE_LIMIT = 292, - SND_TIMEOUT = 293, - SOCKET_RECV_SIZE = 294, - SOCKET_SEND_SIZE = 295, - SORT_HOSTS = 296, - SUPPORT_CAS = 297, - _TCP_NODELAY = 298, - _TCP_KEEPALIVE = 299, - _TCP_KEEPIDLE = 300, - USER_DATA = 301, - USE_UDP = 302, - VERIFY_KEY = 303, - PREFIX_KEY = 304, - MD5 = 305, - CRC = 306, - FNV1_64 = 307, - FNV1A_64 = 308, - FNV1_32 = 309, - FNV1A_32 = 310, - HSIEH = 311, - MURMUR = 312, - JENKINS = 313, - CONSISTENT = 314, - MODULA = 315, - RANDOM = 316, - TRUE = 317, - FALSE = 318, - NUMBER = 319, - FLOAT = 320, - HOSTNAME = 321, - HOSTNAME_WITH_PORT = 322, - IPADDRESS = 323, - IPADDRESS_WITH_PORT = 324, - STRING = 325, - QUOTED_STRING = 326, - FILE_PATH = 327 + DISTRIBUTION = 276, + HASH = 277, + HASH_WITH_PREFIX_KEY = 278, + IO_BYTES_WATERMARK = 279, + IO_KEY_PREFETCH = 280, + IO_MSG_WATERMARK = 281, + KETAMA_HASH = 282, + KETAMA_WEIGHTED = 283, + NOREPLY = 284, + NUMBER_OF_REPLICAS = 285, + POLL_TIMEOUT = 286, + RANDOMIZE_REPLICA_READ = 287, + RCV_TIMEOUT = 288, + RETRY_TIMEOUT = 289, + SERVER_FAILURE_LIMIT = 290, + SND_TIMEOUT = 291, + SOCKET_RECV_SIZE = 292, + SOCKET_SEND_SIZE = 293, + SORT_HOSTS = 294, + SUPPORT_CAS = 295, + _TCP_NODELAY = 296, + _TCP_KEEPALIVE = 297, + _TCP_KEEPIDLE = 298, + USER_DATA = 299, + USE_UDP = 300, + VERIFY_KEY = 301, + PREFIX_KEY = 302, + MD5 = 303, + CRC = 304, + FNV1_64 = 305, + FNV1A_64 = 306, + FNV1_32 = 307, + FNV1A_32 = 308, + HSIEH = 309, + MURMUR = 310, + JENKINS = 311, + CONSISTENT = 312, + MODULA = 313, + RANDOM = 314, + TRUE = 315, + FALSE = 316, + NUMBER = 317, + FLOAT = 318, + HOSTNAME = 319, + HOSTNAME_WITH_PORT = 320, + IPADDRESS = 321, + IPADDRESS_WITH_PORT = 322, + STRING = 323, + QUOTED_STRING = 324, + FILE_PATH = 325 }; #endif diff --git a/libmemcached/options/parser.yy b/libmemcached/options/parser.yy index 6071a99b..6aa47792 100644 --- a/libmemcached/options/parser.yy +++ b/libmemcached/options/parser.yy @@ -88,14 +88,12 @@ void Context::start() %token BUFFER_REQUESTS %token CACHE_LOOKUPS %token CONNECT_TIMEOUT -%token _CORK %token DISTRIBUTION %token HASH %token HASH_WITH_PREFIX_KEY %token IO_BYTES_WATERMARK %token IO_KEY_PREFETCH %token IO_MSG_WATERMARK -%token KETAMA %token KETAMA_HASH %token KETAMA_WEIGHTED %token NOREPLY @@ -235,18 +233,22 @@ behaviors: parser_abort(context, NULL);; } } - | HASH hash + | DISTRIBUTION distribution ',' hash { - if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_HASH, $2)) != MEMCACHED_SUCCESS) + if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, $2)) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL);; + parser_abort(context, NULL);; + } + if ((context->rc= memcached_behavior_set_distribution_hash(context->memc, $4)) != MEMCACHED_SUCCESS) + { + parser_abort(context, NULL);; } } - | KETAMA_HASH hash + | HASH hash { - if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_KETAMA_HASH, $2)) != MEMCACHED_SUCCESS) + if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_HASH, $2)) != MEMCACHED_SUCCESS) { - parser_abort(context, NULL);; + parser_abort(context, NULL);; } } | behavior_number NUMBER @@ -336,18 +338,10 @@ behavior_boolean: { $$= MEMCACHED_BEHAVIOR_CACHE_LOOKUPS; } - | _CORK - { - $$= MEMCACHED_BEHAVIOR_CORK; - } | HASH_WITH_PREFIX_KEY { $$= MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY; } - | KETAMA - { - $$= MEMCACHED_BEHAVIOR_KETAMA; - } | KETAMA_WEIGHTED { $$= MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED; diff --git a/libmemcached/options/scanner.cc b/libmemcached/options/scanner.cc index f9e4d1c4..746799b2 100644 --- a/libmemcached/options/scanner.cc +++ b/libmemcached/options/scanner.cc @@ -449,8 +449,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); yyg->yy_c_buf_p = yy_cp; /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ -#define YY_NUM_RULES 100 -#define YY_END_OF_BUFFER 101 +#define YY_NUM_RULES 96 +#define YY_END_OF_BUFFER 97 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -458,99 +458,97 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[823] = +static yyconst flex_int16_t yy_accept[811] = { 0, - 0, 0, 101, 99, 3, 3, 1, 99, 99, 2, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 99, 0, 98, 80, 0, 2, 97, 0, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 0, 4, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 0, 0, 0, 2, 93, - 0, 97, 85, 97, 76, 97, 97, 97, 97, 97, - 97, 84, 97, 97, 97, 97, 97, 97, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 94, 94, 0, 0, 0, 2, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 78, 80, 80, 80, 80, 80, 80, 80, 80, 0, - 0, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 0, 0, 97, - 74, 77, 79, 97, 0, 90, 97, 97, 97, 97, - 97, 73, 97, 80, 80, 80, 80, 80, 80, 21, - 80, 80, 0, 0, 0, 0, 0, 0, 80, 80, - 80, 80, 80, 80, 0, 0, 80, 80, 0, 0, - - 80, 80, 80, 0, 0, 0, 80, 0, 80, 0, - 0, 97, 0, 0, 0, 97, 97, 82, 91, 83, - 97, 0, 0, 80, 80, 80, 80, 80, 80, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 80, 80, - 80, 0, 0, 80, 80, 0, 0, 80, 80, 0, - 0, 80, 0, 0, 80, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 96, 0, 97, 0, 0, 88, - 86, 72, 92, 75, 0, 0, 80, 80, 0, 0, - 80, 80, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 80, 80, 0, 0, 80, 80, 0, 0, - - 0, 0, 80, 0, 0, 80, 0, 0, 80, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 96, 95, - 97, 89, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 80, 80, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 0, 0, 5, 80, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, - 0, 69, 0, 0, 68, 0, 0, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 97, 95, 3, 3, 1, 95, 95, 2, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 95, 0, 94, 76, 0, 2, 93, 0, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 0, 4, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 0, 0, 0, 2, 89, + 0, 93, 81, 93, 72, 93, 93, 93, 93, 93, + 93, 80, 93, 93, 93, 93, 93, 93, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 90, 90, 0, 0, 0, 2, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 74, 76, 76, 76, 76, 76, 76, 76, 0, 0, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 0, 0, 93, 70, + 73, 75, 93, 0, 86, 93, 93, 93, 93, 93, + 69, 93, 76, 76, 76, 76, 76, 76, 76, 76, + 0, 0, 0, 0, 0, 0, 76, 76, 76, 76, + 76, 76, 0, 0, 76, 76, 0, 0, 76, 76, + + 76, 0, 0, 0, 76, 0, 76, 0, 0, 93, + 0, 0, 0, 93, 93, 78, 87, 79, 93, 0, + 0, 76, 76, 76, 76, 76, 76, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 76, 76, 76, 0, + 0, 76, 76, 0, 0, 76, 76, 0, 0, 76, + 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, + 0, 76, 92, 0, 93, 0, 0, 84, 82, 68, + 88, 71, 0, 0, 76, 76, 0, 0, 76, 76, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 76, + 76, 76, 0, 0, 76, 76, 0, 0, 0, 0, + + 76, 0, 0, 76, 0, 0, 76, 0, 0, 0, + 0, 0, 0, 0, 0, 76, 92, 91, 93, 85, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 76, + 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 76, + 0, 0, 0, 0, 0, 5, 76, 0, 0, 0, + 0, 0, 0, 0, 76, 0, 0, 0, 0, 65, + 0, 0, 64, 0, 0, 92, 93, 0, 0, 0, + 0, 0, 0, 0, 0, 76, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, - 0, 0, 0, 0, 80, 0, 0, 80, 0, 0, + + 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, - 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 57, 56, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, - 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 59, 58, 0, 0, 61, - - 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 45, 44, 0, 0, 0, 0, - 51, 50, 0, 0, 0, 0, 0, 65, 0, 64, - 0, 0, 0, 0, 0, 0, 16, 15, 0, 0, - 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 41, 40, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 62, 0, + 53, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, + 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 54, 0, 0, 57, + 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - + 0, 0, 41, 40, 0, 0, 0, 0, 47, 46, + 0, 0, 0, 0, 0, 61, 0, 60, 0, 0, + 0, 0, 0, 0, 16, 15, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 36, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 59, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 46, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 11, 14, 13, 18, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 9, 20, 19, 0, 0, 0, 29, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 31, 0, 30, 0, - 0, 0, 0, 0, 0, 53, 55, 52, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 26, 39, 38, 0, 0, 0, 0, 25, - 24, 0, 0, 0, 0, 0, 0, 49, 48, 43, - 42, 0 + 0, 43, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 11, 14, 13, 18, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 32, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 9, 20, 19, 0, 0, 0, 28, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 29, 0, 0, 0, + 0, 0, 0, 49, 51, 48, 50, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 25, 35, 34, 0, 0, 0, 0, 24, 23, 0, + + 0, 0, 0, 0, 0, 45, 44, 39, 38, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -597,197 +595,195 @@ static yyconst flex_int32_t yy_meta[72] = 3 } ; -static yyconst flex_int16_t yy_base[829] = +static yyconst flex_int16_t yy_base[817] = { 0, - 0, 977, 969, 2211, 2211, 2211, 2211, 961, 922, 63, + 0, 949, 919, 2202, 2202, 2202, 2202, 906, 902, 63, 71, 79, 73, 65, 81, 66, 72, 114, 112, 130, - 123, 119, 917, 905, 904, 184, 247, 255, 121, 263, + 123, 119, 906, 900, 898, 184, 247, 255, 121, 263, 129, 263, 264, 269, 265, 271, 273, 275, 320, 322, - 327, 331, 332, 333, 340, 371, 380, 381, 901, 2211, + 327, 331, 332, 333, 340, 371, 380, 381, 899, 2202, 429, 77, 379, 382, 131, 141, 169, 260, 345, 258, - 441, 447, 272, 276, 329, 489, 505, 513, 522, 2211, + 441, 447, 272, 276, 329, 489, 505, 513, 522, 2202, 530, 530, 421, 532, 536, 537, 541, 570, 585, 590, 595, 376, 605, 596, 640, 644, 646, 652, 324, 343, - 386, 398, 516, 388, 389, 414, 517, 520, 526, 529, - - 538, 530, 524, 571, 574, 593, 645, 582, 585, 602, - 624, 707, 715, 724, 732, 740, 749, 749, 750, 751, - 755, 761, 799, 757, 809, 810, 805, 814, 820, 843, - 858, 631, 651, 648, 648, 749, 649, 645, 658, 858, - 861, 752, 754, 772, 771, 806, 812, 463, 819, 844, - 464, 857, 850, 861, 465, 888, 871, 925, 933, 890, - 895, 935, 939, 940, 94, 944, 945, 957, 946, 979, - 993, 994, 1001, 466, 866, 909, 937, 937, 947, 0, - 950, 1013, 958, 991, 982, 979, 1000, 988, 1001, 999, - 1012, 572, 1009, 1005, 1002, 1005, 1001, 1022, 1009, 1010, - - 1032, 856, 1033, 1044, 1048, 1029, 1061, 1039, 1057, 1074, - 1100, 1084, 105, 888, 885, 1101, 1102, 1109, 1110, 1119, - 1123, 1071, 1073, 1055, 1066, 1083, 1105, 1110, 1114, 1107, - 2211, 1109, 1115, 1111, 1138, 1129, 1128, 1149, 1157, 1148, - 1148, 1147, 1150, 1147, 1160, 1165, 1166, 1187, 1160, 1170, - 1172, 1162, 1176, 1178, 1170, 1184, 1175, 1186, 1177, 1191, - 1192, 1195, 1199, 1179, 1241, 1250, 1250, 885, 840, 2211, - 2211, 1251, 1252, 1257, 1215, 1217, 1230, 1231, 1241, 1247, - 1239, 1241, 1260, 1254, 1255, 1266, 843, 841, 1268, 803, - 794, 1284, 1251, 1287, 1269, 1270, 1291, 1274, 1272, 1288, - - 1284, 1287, 1319, 1295, 1300, 1294, 1300, 1301, 1297, 1315, - 1318, 1318, 1320, 1309, 1325, 1326, 1313, 1340, 1377, 2211, - 1346, 2211, 2211, 1327, 1331, 1323, 1339, 1339, 1340, 1347, - 1362, 1360, 1389, 1359, 1361, 1363, 1367, 1374, 1369, 1374, - 1378, 1372, 1388, 1389, 0, 1383, 1384, 1387, 1388, 1391, - 1392, 1380, 1404, 1409, 1406, 1409, 1425, 2211, 815, 1426, - 1429, 1430, 1425, 1428, 1418, 1421, 1458, 1433, 1445, 1435, - 1447, 2211, 1433, 1434, 2211, 1444, 1445, 1495, 1485, 1465, - 1466, 1454, 1457, 1492, 1493, 1486, 1489, 1501, 1487, 1488, - 1489, 1502, 1503, 821, 1494, 1512, 754, 1496, 1514, 1515, - - 1512, 1517, 1514, 1514, 1515, 1517, 1518, 1521, 1524, 1546, - 1537, 1539, 1542, 1544, 1557, 2211, 1558, 1545, 1546, 1557, - 1558, 1559, 1560, 1546, 1547, 1565, 1566, 1571, 1558, 1574, - 1559, 1572, 1573, 1571, 1572, 1606, 1586, 1588, 1594, 1596, - 1595, 1596, 1603, 1604, 1626, 1608, 1609, 1610, 787, 744, - 1597, 1617, 1603, 1602, 1622, 1608, 1610, 1621, 1612, 1623, - 771, 725, 1619, 1622, 1618, 1635, 1636, 1641, 1644, 1661, - 1662, 1659, 1660, 1650, 1651, 1670, 1660, 1672, 1662, 1658, - 1659, 1678, 1679, 1669, 1678, 1682, 1672, 1681, 1685, 2211, - 2211, 1663, 1665, 724, 669, 1671, 1677, 1693, 1695, 1698, - - 1699, 1715, 1716, 1710, 1712, 1711, 1711, 1712, 1728, 1724, - 1726, 1731, 1727, 1729, 1727, 1729, 1729, 1731, 1721, 1722, - 1721, 1723, 680, 678, 1727, 1733, 1748, 1750, 1758, 1759, - 1763, 1764, 1757, 1759, 1758, 1777, 1760, 1779, 2211, 2211, - 1765, 1766, 1777, 1775, 1763, 1780, 1778, 1766, 2211, 2211, - 1784, 1785, 1779, 1781, 1793, 1794, 1789, 1806, 1815, 1818, - 1823, 1824, 1816, 1813, 1815, 1814, 1830, 1818, 1817, 1833, - 1821, 677, 1832, 674, 1833, 1837, 1838, 1824, 1825, 2211, - 2211, 1841, 1842, 672, 631, 1827, 1829, 1831, 1832, 622, - 621, 626, 606, 566, 540, 2211, 2211, 1837, 1871, 2211, - - 1856, 1876, 2211, 1867, 1868, 1881, 1882, 1868, 1869, 1870, - 1871, 1879, 1880, 1878, 1879, 558, 1890, 1891, 1892, 1878, - 1886, 1895, 1881, 1889, 2211, 1884, 2211, 1886, 1891, 1897, - 542, 533, 1914, 1916, 2211, 2211, 1915, 1916, 1919, 1920, - 2211, 2211, 1920, 1922, 1923, 1924, 1939, 2211, 1940, 2211, - 1927, 1928, 1933, 1934, 1930, 1931, 2211, 2211, 1947, 1948, - 1933, 1934, 2211, 1950, 1952, 1942, 1958, 1966, 1966, 1983, - 1988, 1985, 1986, 1980, 1981, 2211, 2211, 1983, 1984, 532, - 494, 1992, 1993, 1990, 1991, 1992, 1993, 2211, 2211, 1983, - 1984, 1993, 1994, 1988, 1989, 414, 412, 1989, 1990, 2003, - - 2005, 2002, 2013, 2020, 2027, 2035, 2026, 2041, 2042, 2038, - 2040, 2041, 2042, 2211, 2211, 421, 382, 2026, 2027, 2028, - 2029, 2037, 2038, 2211, 2211, 2211, 2211, 2211, 2211, 406, - 405, 2034, 2035, 2059, 403, 2050, 2061, 359, 2052, 2211, - 2211, 2061, 2063, 2065, 2066, 2063, 2080, 2089, 2092, 2093, - 2094, 2211, 2211, 2211, 2211, 326, 316, 2082, 2211, 333, - 2083, 2211, 327, 2102, 2103, 2104, 2105, 2098, 2099, 323, - 301, 299, 266, 2098, 2099, 2100, 2211, 2101, 2211, 2094, - 2095, 193, 146, 2102, 2103, 2211, 2211, 2211, 2211, 2112, - 2113, 170, 153, 152, 151, 2102, 2104, 2114, 2120, 2121, - - 2123, 2211, 2211, 2211, 2211, 2146, 2147, 2133, 2134, 2211, - 2211, 2154, 2156, 150, 149, 2154, 2155, 2211, 2211, 2211, - 2211, 2211, 2204, 119, 2207, 117, 116, 108 + 386, 398, 393, 389, 395, 463, 510, 516, 524, 526, + + 534, 527, 521, 524, 528, 587, 589, 581, 582, 596, + 603, 707, 715, 724, 732, 740, 749, 749, 750, 751, + 755, 645, 763, 762, 800, 802, 804, 812, 813, 833, + 822, 627, 651, 648, 648, 749, 645, 658, 848, 860, + 751, 754, 773, 777, 820, 825, 464, 821, 821, 465, + 852, 848, 853, 466, 884, 863, 912, 921, 921, 923, + 927, 928, 929, 94, 933, 977, 965, 983, 978, 987, + 998, 1000, 572, 876, 892, 918, 916, 925, 913, 1004, + 908, 929, 916, 960, 982, 971, 990, 993, 1016, 761, + 1015, 1011, 1013, 1014, 1010, 1032, 1018, 1019, 1036, 786, + + 1029, 1035, 1036, 1031, 964, 1033, 1049, 1092, 1100, 1060, + 105, 889, 886, 1101, 1102, 1100, 1109, 1110, 1111, 1099, + 1106, 1087, 1095, 1132, 1107, 1120, 1125, 1112, 2202, 1113, + 1117, 1124, 1151, 1140, 1140, 1159, 1166, 1156, 1151, 1150, + 1151, 1148, 1160, 1165, 1166, 1187, 1160, 1170, 1171, 1161, + 1174, 1175, 1166, 1181, 1173, 1184, 1175, 1187, 1199, 1200, + 1208, 1194, 1229, 1256, 1256, 887, 884, 2202, 2202, 1241, + 1242, 1263, 1226, 1227, 1239, 1242, 1226, 1231, 1224, 1238, + 1265, 1259, 1264, 1270, 889, 886, 1271, 808, 807, 1252, + 1252, 1290, 1273, 1280, 1300, 1282, 1279, 1280, 1276, 1277, + + 1321, 1286, 1293, 1317, 1295, 1297, 1294, 1310, 1318, 1320, + 1324, 1313, 1329, 1330, 1316, 1323, 1377, 2202, 1346, 2202, + 2202, 1330, 1331, 1322, 1335, 1335, 1336, 1351, 1362, 1361, + 1356, 1361, 1364, 1365, 1367, 1373, 1367, 1373, 1378, 1372, + 1373, 1374, 0, 1383, 1384, 1387, 1388, 1391, 1392, 1379, + 1402, 1403, 1401, 1405, 1409, 2202, 824, 1412, 1415, 1426, + 1420, 1425, 1414, 1417, 1450, 1430, 1443, 1433, 1446, 2202, + 1432, 1433, 2202, 1443, 1444, 1492, 1493, 1464, 1465, 1451, + 1454, 1469, 1488, 1482, 1483, 1495, 1482, 1483, 1484, 1497, + 1498, 833, 1489, 1508, 779, 1492, 1511, 1509, 1510, 1510, + + 1511, 1513, 1514, 1516, 1517, 1518, 1511, 1513, 1534, 1538, + 1551, 2202, 1553, 1541, 1542, 1553, 1554, 1555, 1556, 1542, + 1543, 1561, 1562, 1566, 1554, 1567, 1557, 1569, 1570, 1567, + 1568, 1602, 1557, 1560, 1567, 1590, 1589, 1591, 1599, 1600, + 1622, 1604, 1605, 1606, 784, 745, 1593, 1613, 1599, 1598, + 1618, 1604, 1616, 1617, 766, 726, 1612, 1613, 1604, 1605, + 1632, 1610, 1613, 1631, 1634, 1651, 1653, 1643, 1644, 1664, + 1654, 1666, 1656, 1652, 1653, 1672, 1673, 1663, 1672, 1676, + 1666, 1675, 1679, 2202, 2202, 1656, 1657, 669, 653, 1663, + 1664, 1664, 1665, 1667, 1669, 1687, 1708, 1703, 1705, 1704, + + 1705, 1706, 1722, 1718, 1720, 1725, 1721, 1723, 1722, 1723, + 1713, 1714, 1712, 1713, 678, 677, 1717, 1718, 1717, 1718, + 1724, 1725, 1730, 1732, 1727, 1748, 1748, 1768, 1751, 1771, + 2202, 2202, 1757, 1758, 1769, 1767, 1755, 1772, 1770, 1758, + 2202, 2202, 1776, 1777, 1771, 1772, 1783, 1784, 1774, 1775, + 1783, 1784, 1789, 1791, 1784, 1783, 1804, 1804, 1821, 1809, + 1809, 1825, 1813, 1824, 1825, 1829, 1830, 1816, 1817, 2202, + 2202, 1833, 1834, 675, 674, 1819, 1820, 1821, 1822, 631, + 622, 626, 606, 566, 540, 2202, 2202, 1822, 1840, 2202, + 1824, 1842, 2202, 1833, 1835, 1849, 1852, 1857, 1859, 1861, + + 1862, 1871, 1872, 1870, 1871, 558, 1882, 1883, 1884, 1870, + 1878, 1887, 1873, 1881, 1875, 1876, 1881, 1882, 542, 533, + 1883, 1884, 2202, 2202, 1881, 1882, 1886, 1888, 2202, 2202, + 1890, 1911, 1913, 1915, 1930, 2202, 1932, 2202, 1919, 1920, + 1925, 1926, 1922, 1923, 2202, 2202, 1939, 1940, 1925, 1926, + 2202, 1942, 1943, 1932, 1948, 1951, 1935, 1951, 1954, 1951, + 1953, 1948, 1951, 2202, 2202, 1972, 1974, 532, 494, 1983, + 1984, 1982, 1983, 1984, 1985, 2202, 2202, 1975, 1976, 1985, + 1986, 1980, 1981, 412, 411, 1981, 1982, 1994, 1995, 1992, + 1998, 1989, 1995, 2001, 1992, 2008, 2010, 2008, 2029, 2031, + + 2033, 2202, 2202, 419, 379, 2017, 2019, 2020, 2021, 2029, + 2030, 2202, 2202, 2202, 2202, 2202, 2202, 405, 404, 2026, + 2027, 2051, 403, 2042, 2053, 359, 2044, 2202, 2202, 2053, + 2054, 2055, 2056, 2048, 2049, 2057, 2058, 2059, 2061, 2202, + 2202, 2202, 2202, 326, 316, 2050, 2202, 333, 2053, 2202, + 327, 2091, 2093, 2095, 2096, 2090, 2091, 323, 301, 299, + 266, 2090, 2091, 2092, 2202, 2093, 2202, 2086, 2087, 193, + 146, 2094, 2095, 2202, 2202, 2202, 2202, 2104, 2105, 170, + 153, 152, 151, 2093, 2094, 2104, 2105, 2090, 2091, 2202, + 2202, 2202, 2202, 2112, 2113, 2100, 2102, 2202, 2202, 2124, + + 2145, 150, 149, 2144, 2146, 2202, 2202, 2202, 2202, 2202, + 2195, 119, 2198, 117, 116, 108 } ; -static yyconst flex_int16_t yy_def[829] = +static yyconst flex_int16_t yy_def[817] = { 0, - 822, 1, 822, 822, 822, 822, 822, 823, 822, 824, - 824, 824, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 825, 823, 823, 822, 826, 824, 12, 826, + 810, 1, 810, 810, 810, 810, 810, 811, 810, 812, + 812, 812, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 813, 811, 811, 810, 814, 812, 12, 814, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 825, 822, + 12, 12, 12, 12, 12, 12, 12, 12, 813, 810, 26, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 827, 828, 827, 824, 822, - 828, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 51, 51, 51, 51, 51, 815, 816, 815, 812, 810, + 816, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 828, 827, 828, 828, 828, 824, 12, 12, 12, + 51, 816, 815, 816, 816, 816, 812, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 51, 51, 51, 51, 51, 51, 51, 51, 822, - 822, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 828, 828, 12, - 12, 12, 12, 12, 822, 12, 12, 12, 12, 12, - 12, 12, 12, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 822, 822, 822, 822, 822, 822, 51, 51, - 51, 51, 51, 51, 822, 822, 51, 51, 822, 822, - - 51, 51, 51, 822, 822, 822, 51, 822, 51, 828, - 828, 12, 822, 822, 822, 12, 12, 12, 12, 12, - 12, 822, 822, 51, 51, 51, 51, 51, 51, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 51, 51, - 51, 822, 822, 51, 51, 822, 822, 51, 51, 822, - 822, 51, 822, 822, 51, 822, 822, 822, 822, 822, - 822, 822, 822, 51, 828, 828, 12, 822, 822, 822, - 822, 12, 12, 12, 822, 822, 51, 51, 822, 822, - 51, 51, 51, 822, 822, 822, 822, 822, 822, 822, - 822, 51, 51, 51, 822, 822, 51, 51, 822, 822, - - 822, 822, 51, 822, 822, 51, 822, 822, 51, 822, - 822, 822, 822, 822, 822, 822, 822, 51, 828, 822, - 12, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 51, 51, 51, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 51, 822, 822, 822, 822, 822, - 822, 51, 822, 822, 822, 822, 822, 822, 51, 822, - 822, 822, 822, 822, 822, 822, 51, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 828, 12, 822, - 822, 822, 822, 822, 822, 822, 822, 51, 822, 822, - 51, 822, 822, 822, 822, 822, 822, 822, 822, 822, - - 822, 822, 822, 822, 822, 822, 822, 822, 822, 51, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 12, 822, 822, 822, 822, - 822, 822, 822, 822, 51, 822, 822, 51, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 51, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - - 822, 822, 822, 822, 822, 51, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 51, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 51, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 0, 822, 822, 822, 822, 822, 822 + 12, 51, 51, 51, 51, 51, 51, 51, 810, 810, + 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 816, 816, 12, 12, + 12, 12, 12, 810, 12, 12, 12, 12, 12, 12, + 12, 12, 51, 51, 51, 51, 51, 51, 51, 51, + 810, 810, 810, 810, 810, 810, 51, 51, 51, 51, + 51, 51, 810, 810, 51, 51, 810, 810, 51, 51, + + 51, 810, 810, 810, 51, 810, 51, 816, 816, 12, + 810, 810, 810, 12, 12, 12, 12, 12, 12, 810, + 810, 51, 51, 51, 51, 51, 51, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 51, 51, 51, 810, + 810, 51, 51, 810, 810, 51, 51, 810, 810, 51, + 810, 810, 51, 810, 810, 810, 810, 810, 810, 810, + 810, 51, 816, 816, 12, 810, 810, 810, 810, 12, + 12, 12, 810, 810, 51, 51, 810, 810, 51, 51, + 51, 810, 810, 810, 810, 810, 810, 810, 810, 51, + 51, 51, 810, 810, 51, 51, 810, 810, 810, 810, + + 51, 810, 810, 51, 810, 810, 51, 810, 810, 810, + 810, 810, 810, 810, 810, 51, 816, 810, 12, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 51, + 51, 51, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 51, 810, 810, 810, 810, 810, 810, 51, + 810, 810, 810, 810, 810, 810, 51, 810, 810, 810, + 810, 810, 810, 810, 51, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 816, 12, 810, 810, 810, + 810, 810, 810, 810, 810, 51, 810, 810, 51, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + + 810, 810, 810, 810, 810, 51, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 12, 810, 810, 810, 810, 810, 810, 810, 810, + 51, 810, 810, 51, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 51, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 51, + + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 51, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + + 810, 810, 810, 810, 810, 51, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + + 810, 810, 810, 810, 810, 810, 810, 810, 810, 0, + 810, 810, 810, 810, 810, 810 } ; -static yyconst flex_int16_t yy_nxt[2283] = +static yyconst flex_int16_t yy_nxt[2274] = { 0, 4, 5, 6, 7, 8, 4, 7, 9, 4, 10, 10, 10, 10, 10, 10, 10, 4, 7, 11, 11, @@ -800,18 +796,18 @@ static yyconst flex_int16_t yy_nxt[2283] = 31, 31, 31, 31, 31, 31, 31, 30, 31, 31, 31, 31, 31, 31, 31, 34, 35, 29, 29, 37, - 36, 29, 39, 40, 29, 29, 214, 29, 29, 215, - 116, 32, 38, 29, 33, 89, 29, 268, 113, 68, - 269, 29, 34, 35, 29, 29, 37, 36, 29, 39, + 36, 29, 39, 40, 29, 29, 212, 29, 29, 213, + 116, 32, 38, 29, 33, 89, 29, 266, 113, 68, + 267, 29, 34, 35, 29, 29, 37, 36, 29, 39, 40, 29, 29, 42, 29, 29, 41, 70, 32, 38, 29, 33, 89, 29, 43, 47, 29, 29, 45, 29, 44, 29, 46, 29, 48, 29, 29, 94, 29, 95, - 42, 29, 29, 41, 29, 29, 819, 818, 805, 804, - 803, 43, 47, 29, 29, 45, 29, 44, 29, 46, - 29, 48, 29, 29, 94, 29, 95, 802, 29, 29, - 797, 29, 29, 51, 51, 51, 51, 51, 51, 51, + 42, 29, 29, 41, 29, 29, 807, 806, 793, 792, + 791, 43, 47, 29, 29, 45, 29, 44, 29, 46, + 29, 48, 29, 29, 94, 29, 95, 790, 29, 29, + 785, 29, 29, 51, 51, 51, 51, 51, 51, 51, - 796, 96, 52, 53, 54, 55, 51, 51, 51, 56, + 784, 96, 52, 53, 54, 55, 51, 51, 51, 56, 57, 51, 58, 51, 51, 59, 51, 60, 51, 61, 62, 63, 64, 65, 51, 51, 51, 51, 96, 52, 53, 54, 55, 51, 51, 51, 56, 57, 51, 58, @@ -819,230 +815,229 @@ static yyconst flex_int16_t yy_nxt[2283] = 65, 51, 51, 51, 51, 66, 67, 67, 67, 67, 67, 67, 67, 27, 69, 69, 69, 69, 69, 69, 69, 66, 71, 71, 71, 71, 71, 71, 71, 70, - 70, 70, 97, 789, 73, 70, 75, 70, 74, 70, + 70, 70, 97, 777, 73, 70, 75, 70, 74, 70, 100, 70, 109, 101, 72, 29, 29, 29, 29, 29, 29, 29, 77, 29, 29, 29, 76, 29, 29, 97, - 29, 73, 110, 75, 78, 74, 788, 100, 787, 109, + 29, 73, 110, 75, 78, 74, 776, 100, 775, 109, 101, 72, 29, 29, 29, 29, 29, 29, 29, 77, 29, 29, 29, 76, 29, 29, 70, 29, 70, 110, - 786, 78, 80, 70, 779, 82, 79, 70, 70, 70, - 777, 111, 29, 83, 29, 29, 70, 29, 81, 29, - 775, 132, 29, 29, 29, 29, 29, 29, 84, 80, - 774, 85, 29, 79, 133, 29, 762, 98, 111, 29, + 774, 78, 80, 70, 767, 82, 79, 70, 70, 70, + 765, 111, 29, 83, 29, 29, 70, 29, 81, 29, + 763, 132, 29, 29, 29, 29, 29, 29, 84, 80, + 762, 85, 29, 79, 133, 29, 750, 98, 111, 29, 83, 29, 29, 99, 29, 81, 29, 70, 132, 29, 29, 29, 29, 29, 29, 84, 70, 70, 85, 29, 92, 133, 29, 29, 98, 90, 29, 86, 29, 134, 99, 29, 29, 29, 93, 87, 29, 91, 135, 88, - 759, 140, 755, 754, 138, 139, 747, 92, 746, 729, - 29, 728, 90, 29, 86, 29, 134, 70, 29, 29, + 747, 743, 742, 735, 136, 137, 734, 92, 717, 716, + 29, 138, 90, 29, 86, 29, 134, 70, 29, 29, 29, 93, 87, 29, 91, 135, 88, 51, 51, 51, - 51, 138, 139, 29, 51, 51, 29, 51, 141, 102, + 51, 136, 137, 29, 51, 51, 29, 51, 138, 102, 51, 103, 51, 104, 51, 51, 51, 51, 51, 105, - 195, 199, 204, 222, 51, 51, 51, 51, 106, 107, + 139, 193, 197, 202, 51, 51, 51, 51, 106, 107, 29, 51, 51, 29, 51, 108, 102, 51, 103, 51, 104, 51, 51, 51, 51, 51, 105, 66, 112, 112, - 112, 112, 112, 112, 112, 106, 107, 196, 200, 205, - 223, 715, 108, 114, 115, 115, 115, 115, 115, 115, + 112, 112, 112, 112, 112, 106, 107, 140, 194, 198, + 203, 703, 108, 114, 115, 115, 115, 115, 115, 115, 115, 66, 112, 112, 112, 112, 112, 112, 112, 70, 27, 117, 117, 117, 117, 117, 117, 117, 71, 71, - 71, 71, 71, 71, 71, 71, 70, 136, 70, 714, - 677, 137, 70, 70, 142, 143, 144, 70, 145, 676, - 146, 147, 29, 148, 29, 29, 118, 29, 29, 120, - 119, 29, 29, 29, 136, 663, 29, 121, 137, 242, - 122, 142, 143, 144, 646, 145, 70, 146, 147, 29, - 148, 29, 29, 118, 29, 29, 120, 119, 29, 29, - - 29, 70, 29, 29, 121, 29, 70, 123, 149, 150, - 645, 70, 70, 644, 151, 154, 243, 29, 155, 124, - 29, 70, 29, 125, 156, 29, 127, 29, 29, 29, - 29, 29, 29, 643, 123, 149, 150, 29, 642, 641, - 29, 151, 154, 126, 29, 155, 124, 29, 636, 29, - 125, 156, 29, 127, 29, 29, 70, 29, 29, 157, - 70, 128, 70, 174, 29, 152, 129, 29, 70, 175, - 126, 176, 29, 177, 131, 29, 29, 180, 29, 29, - 153, 29, 181, 182, 29, 130, 157, 29, 128, 635, - 174, 627, 152, 129, 625, 581, 175, 580, 176, 29, - - 177, 131, 29, 29, 180, 29, 29, 153, 29, 181, - 182, 29, 130, 552, 29, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 70, 141, 70, 702, + 665, 142, 70, 70, 143, 144, 145, 70, 146, 664, + 147, 148, 29, 149, 29, 29, 118, 29, 29, 120, + 119, 29, 29, 29, 141, 651, 29, 121, 142, 220, + 122, 143, 144, 145, 634, 146, 70, 147, 148, 29, + 149, 29, 29, 118, 29, 29, 120, 119, 29, 29, + + 29, 70, 29, 29, 121, 29, 70, 123, 150, 151, + 633, 70, 70, 632, 153, 154, 221, 29, 155, 124, + 29, 70, 29, 125, 152, 29, 127, 29, 29, 29, + 29, 29, 29, 631, 123, 150, 151, 29, 156, 630, + 29, 153, 154, 126, 29, 155, 124, 29, 629, 29, + 125, 152, 29, 127, 29, 29, 70, 29, 29, 173, + 70, 128, 70, 163, 29, 156, 129, 29, 70, 174, + 126, 175, 29, 176, 131, 29, 29, 29, 29, 29, + 29, 29, 179, 180, 29, 130, 173, 29, 128, 164, + 163, 624, 623, 129, 571, 570, 174, 544, 175, 29, + + 176, 131, 29, 29, 29, 29, 29, 29, 29, 179, + 180, 29, 130, 543, 29, 71, 71, 71, 71, 71, 71, 71, 71, 66, 112, 112, 112, 112, 112, 112, - 112, 70, 71, 158, 158, 158, 158, 158, 158, 158, - 114, 159, 159, 159, 159, 159, 159, 159, 71, 71, + 112, 70, 71, 157, 157, 157, 157, 157, 157, 157, + 114, 158, 158, 158, 158, 158, 158, 158, 71, 71, 71, 71, 71, 71, 71, 71, 70, 30, 117, 117, - 117, 117, 117, 117, 117, 70, 70, 70, 551, 520, - 189, 70, 178, 70, 161, 160, 190, 163, 519, 164, - 179, 29, 29, 29, 29, 29, 162, 29, 508, 29, - 29, 191, 29, 29, 507, 167, 29, 189, 454, 178, - - 192, 161, 160, 190, 163, 165, 164, 179, 29, 29, - 29, 29, 29, 162, 29, 70, 29, 29, 191, 29, - 29, 70, 167, 29, 166, 70, 70, 192, 451, 193, - 70, 29, 416, 194, 29, 168, 70, 29, 342, 169, - 29, 29, 29, 170, 29, 29, 171, 341, 339, 29, - 338, 166, 29, 323, 197, 29, 193, 172, 29, 70, - 194, 29, 168, 253, 29, 173, 169, 29, 29, 29, - 170, 29, 29, 171, 70, 29, 29, 183, 29, 29, - 186, 197, 29, 198, 172, 201, 184, 202, 185, 187, - 29, 188, 173, 29, 203, 206, 322, 209, 271, 270, - - 254, 224, 29, 50, 183, 29, 70, 186, 25, 25, - 198, 70, 201, 184, 202, 185, 187, 29, 188, 50, - 29, 203, 29, 207, 209, 29, 212, 29, 224, 26, - 29, 225, 208, 210, 211, 211, 211, 211, 211, 211, - 211, 114, 71, 71, 71, 71, 71, 71, 71, 29, - 207, 70, 29, 212, 29, 70, 70, 29, 225, 226, - 70, 70, 70, 227, 218, 25, 216, 29, 822, 228, - 29, 29, 29, 70, 29, 29, 29, 29, 29, 29, - 29, 29, 23, 822, 213, 229, 226, 822, 217, 29, - 227, 218, 29, 216, 29, 70, 228, 29, 29, 29, - - 233, 29, 29, 29, 29, 29, 29, 29, 29, 70, - 70, 29, 229, 234, 219, 217, 29, 70, 235, 29, - 230, 236, 237, 220, 238, 29, 29, 233, 29, 29, - 231, 239, 240, 29, 241, 244, 221, 245, 29, 246, - 234, 219, 247, 248, 249, 235, 250, 251, 236, 237, - 220, 238, 29, 29, 252, 29, 29, 232, 239, 240, - 29, 241, 244, 221, 245, 255, 246, 260, 261, 247, - 248, 249, 256, 250, 251, 257, 258, 263, 822, 259, - 264, 252, 71, 265, 265, 265, 265, 265, 265, 265, - 279, 822, 255, 275, 260, 276, 822, 277, 822, 256, - - 70, 278, 257, 258, 263, 262, 259, 264, 210, 266, - 266, 266, 266, 266, 266, 266, 29, 70, 70, 29, - 275, 267, 276, 272, 277, 70, 70, 280, 278, 281, - 282, 822, 822, 29, 29, 70, 29, 29, 273, 70, - 283, 29, 29, 29, 29, 29, 29, 284, 267, 285, - 272, 29, 286, 287, 29, 29, 281, 282, 29, 274, - 29, 29, 288, 29, 29, 273, 289, 283, 29, 29, - 290, 29, 29, 291, 284, 292, 285, 293, 29, 286, - 287, 29, 29, 294, 295, 29, 274, 296, 297, 288, - 298, 299, 300, 289, 301, 303, 304, 290, 305, 306, - - 291, 307, 292, 308, 293, 309, 310, 311, 312, 313, - 294, 295, 314, 315, 296, 297, 316, 298, 299, 300, - 317, 318, 303, 304, 822, 305, 306, 822, 307, 822, - 308, 302, 309, 310, 311, 312, 313, 326, 328, 314, - 315, 822, 324, 316, 325, 822, 822, 317, 318, 71, - 319, 319, 319, 319, 319, 319, 319, 320, 210, 71, - 71, 71, 71, 71, 71, 71, 70, 70, 70, 324, - 330, 325, 321, 70, 327, 329, 331, 332, 333, 334, - 335, 336, 29, 29, 29, 29, 29, 29, 337, 29, - 340, 343, 29, 345, 346, 348, 349, 330, 350, 321, - - 352, 363, 353, 331, 332, 333, 334, 335, 336, 29, - 29, 29, 29, 29, 29, 337, 29, 340, 354, 29, - 345, 355, 348, 349, 356, 361, 357, 352, 344, 353, - 362, 347, 365, 366, 367, 351, 358, 368, 364, 369, - 370, 371, 372, 373, 374, 354, 375, 376, 355, 380, - 822, 356, 361, 381, 822, 359, 382, 362, 822, 365, - 366, 367, 70, 360, 368, 822, 369, 370, 371, 372, - 373, 374, 383, 375, 384, 385, 380, 379, 29, 386, - 381, 29, 359, 382, 377, 71, 378, 378, 378, 378, - 378, 378, 378, 320, 387, 388, 389, 391, 392, 383, - - 393, 384, 385, 394, 379, 29, 386, 395, 29, 396, - 397, 398, 399, 400, 402, 404, 405, 406, 407, 408, - 409, 387, 388, 410, 391, 392, 411, 393, 401, 403, - 394, 412, 413, 390, 395, 414, 396, 397, 398, 399, - 400, 402, 404, 405, 406, 407, 408, 409, 415, 417, - 410, 418, 419, 411, 424, 401, 403, 425, 412, 413, - 420, 421, 414, 422, 423, 426, 428, 429, 430, 431, - 432, 433, 434, 435, 822, 415, 417, 822, 418, 419, - 822, 424, 822, 822, 425, 437, 438, 420, 421, 439, - 422, 423, 440, 428, 429, 430, 431, 432, 433, 434, - - 435, 70, 427, 71, 71, 71, 71, 71, 71, 71, - 71, 320, 437, 438, 441, 442, 439, 29, 443, 440, - 29, 444, 436, 445, 446, 447, 448, 449, 450, 452, - 453, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 441, 442, 465, 29, 443, 466, 29, 444, 436, - 445, 446, 447, 448, 449, 450, 452, 453, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 464, 467, 468, - 465, 469, 470, 466, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 486, 489, 484, - 490, 491, 487, 492, 493, 467, 468, 485, 469, 470, - - 488, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 486, 489, 484, 490, 491, 487, - 492, 493, 70, 494, 485, 495, 496, 488, 497, 498, - 499, 500, 501, 502, 504, 505, 506, 509, 29, 510, - 511, 29, 512, 525, 513, 514, 515, 516, 517, 518, - 494, 521, 495, 496, 522, 497, 498, 499, 500, 501, - 523, 504, 505, 506, 509, 29, 510, 511, 29, 512, - 503, 513, 514, 515, 516, 517, 518, 524, 521, 527, - 526, 522, 528, 529, 530, 531, 532, 523, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - - 545, 546, 547, 548, 524, 549, 527, 550, 553, 528, - 529, 530, 531, 532, 554, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, - 548, 555, 549, 556, 550, 553, 557, 558, 559, 560, - 561, 554, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 555, 578, - 556, 579, 582, 557, 558, 559, 560, 561, 583, 562, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, - 573, 574, 575, 576, 577, 584, 578, 585, 579, 582, - 586, 587, 588, 589, 590, 583, 591, 592, 593, 594, - - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 584, 607, 585, 608, 609, 586, 587, 588, - 589, 590, 610, 591, 592, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 611, - 607, 612, 608, 609, 613, 614, 615, 616, 617, 610, - 618, 619, 620, 621, 622, 623, 624, 626, 628, 629, - 630, 631, 632, 633, 634, 637, 611, 638, 612, 639, - 640, 613, 614, 615, 616, 617, 647, 618, 619, 620, - 621, 622, 623, 624, 626, 628, 629, 630, 631, 632, - 633, 634, 637, 648, 638, 649, 639, 640, 650, 651, - - 652, 653, 654, 647, 655, 656, 657, 658, 659, 660, - 661, 662, 664, 665, 666, 667, 668, 669, 670, 671, - 648, 672, 649, 673, 674, 650, 651, 652, 653, 654, - 675, 655, 656, 657, 658, 659, 660, 661, 662, 664, - 665, 666, 667, 668, 669, 670, 671, 678, 672, 679, - 673, 674, 680, 681, 682, 683, 684, 675, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 678, 701, 679, 702, 703, 680, - 681, 682, 683, 684, 704, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - - 700, 705, 701, 706, 702, 703, 707, 708, 709, 710, - 711, 704, 712, 713, 716, 717, 718, 719, 720, 721, - 722, 723, 724, 725, 726, 727, 730, 731, 705, 732, - 706, 733, 734, 707, 708, 709, 710, 711, 735, 712, - 713, 716, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 726, 727, 730, 731, 736, 732, 737, 733, 734, - 738, 739, 740, 741, 742, 735, 743, 744, 745, 748, - 749, 750, 751, 752, 753, 756, 757, 758, 760, 761, - 763, 764, 736, 765, 737, 766, 767, 738, 739, 740, - 741, 742, 768, 743, 744, 745, 748, 749, 750, 751, - - 752, 753, 756, 757, 758, 760, 761, 763, 764, 769, - 765, 770, 766, 767, 771, 772, 773, 776, 778, 768, - 780, 781, 782, 783, 784, 785, 790, 791, 792, 793, - 794, 795, 798, 799, 800, 801, 769, 806, 770, 807, - 808, 771, 772, 773, 776, 778, 809, 780, 781, 782, - 783, 784, 785, 790, 791, 792, 793, 794, 795, 798, - 799, 800, 801, 810, 806, 811, 807, 808, 812, 813, - 814, 815, 816, 809, 817, 820, 821, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 810, 822, 811, 822, 822, 812, 813, 814, 815, 816, - - 822, 817, 820, 821, 24, 822, 24, 49, 49, 49, - 3, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822 + 117, 117, 117, 117, 117, 70, 70, 70, 240, 187, + 512, 70, 177, 511, 160, 159, 188, 162, 70, 70, + 178, 29, 29, 29, 29, 29, 161, 29, 165, 502, + 29, 501, 189, 251, 29, 29, 187, 29, 29, 177, + + 166, 160, 159, 188, 162, 241, 190, 178, 29, 29, + 29, 29, 29, 161, 29, 165, 70, 29, 70, 189, + 70, 29, 29, 450, 29, 29, 167, 166, 70, 70, + 252, 168, 29, 190, 29, 29, 29, 29, 70, 29, + 447, 412, 169, 191, 170, 29, 192, 29, 29, 70, + 171, 340, 339, 167, 29, 172, 195, 29, 168, 29, + 196, 29, 29, 29, 29, 29, 29, 181, 29, 169, + 191, 170, 29, 192, 29, 29, 182, 171, 183, 184, + 199, 29, 172, 195, 29, 200, 201, 196, 185, 207, + 186, 204, 29, 337, 181, 29, 336, 321, 320, 269, + + 268, 50, 25, 182, 25, 183, 184, 199, 50, 26, + 25, 222, 200, 201, 223, 185, 207, 186, 810, 205, + 208, 209, 209, 209, 209, 209, 209, 209, 206, 114, + 71, 71, 71, 71, 71, 71, 71, 70, 222, 70, + 224, 223, 225, 70, 70, 70, 205, 226, 227, 70, + 231, 232, 233, 29, 23, 29, 29, 210, 29, 29, + 29, 29, 29, 29, 29, 29, 810, 224, 29, 225, + 810, 259, 810, 211, 226, 227, 810, 231, 232, 233, + 29, 70, 29, 29, 210, 29, 29, 29, 29, 29, + 29, 29, 29, 70, 70, 29, 215, 29, 214, 70, + + 29, 216, 234, 70, 235, 810, 810, 236, 260, 29, + 29, 228, 29, 217, 70, 29, 70, 218, 29, 29, + 237, 229, 29, 215, 29, 214, 238, 29, 216, 234, + 29, 235, 29, 29, 236, 219, 29, 29, 239, 29, + 217, 242, 29, 243, 218, 29, 29, 237, 230, 29, + 244, 245, 246, 238, 247, 248, 249, 29, 250, 29, + 29, 253, 219, 254, 256, 239, 255, 257, 242, 258, + 243, 261, 262, 810, 810, 810, 70, 244, 245, 246, + 810, 247, 248, 249, 810, 250, 810, 810, 253, 810, + 254, 256, 29, 255, 257, 29, 258, 265, 261, 262, + + 71, 263, 263, 263, 263, 263, 263, 263, 208, 264, + 264, 264, 264, 264, 264, 264, 70, 70, 70, 29, + 810, 273, 29, 270, 265, 70, 70, 70, 274, 275, + 276, 279, 29, 29, 29, 29, 29, 29, 271, 277, + 280, 29, 29, 29, 29, 29, 29, 272, 273, 810, + 270, 281, 282, 283, 284, 274, 275, 276, 279, 29, + 29, 29, 29, 29, 29, 271, 285, 280, 29, 29, + 29, 29, 29, 29, 272, 286, 278, 287, 281, 282, + 283, 284, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 285, 299, 301, 302, 303, 304, 305, + + 306, 307, 286, 308, 287, 309, 310, 311, 312, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 313, 314, 301, 302, 303, 304, 305, 306, 307, 315, + 308, 300, 309, 310, 311, 312, 316, 71, 317, 317, + 317, 317, 317, 317, 317, 318, 324, 313, 314, 326, + 810, 810, 810, 322, 323, 328, 315, 70, 70, 341, + 329, 810, 330, 316, 208, 71, 71, 71, 71, 71, + 71, 71, 70, 29, 29, 331, 29, 29, 319, 70, + 322, 323, 328, 325, 332, 333, 327, 329, 29, 330, + 334, 29, 335, 338, 343, 29, 342, 344, 29, 346, + + 29, 29, 331, 29, 29, 319, 347, 348, 350, 351, + 352, 332, 333, 353, 354, 29, 359, 334, 29, 335, + 338, 343, 29, 360, 361, 29, 346, 363, 355, 364, + 374, 365, 366, 347, 345, 350, 351, 352, 356, 367, + 353, 354, 368, 359, 349, 369, 370, 371, 372, 373, + 360, 810, 378, 379, 363, 380, 364, 357, 365, 366, + 810, 362, 70, 387, 810, 358, 367, 375, 381, 368, + 382, 383, 369, 370, 371, 372, 373, 377, 29, 378, + 379, 29, 380, 384, 357, 71, 376, 376, 376, 376, + 376, 376, 376, 318, 385, 381, 386, 382, 383, 389, + + 388, 390, 391, 392, 377, 29, 393, 394, 29, 395, + 384, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 385, 406, 386, 407, 408, 389, 409, 390, 391, + 392, 410, 411, 393, 394, 413, 395, 414, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 415, 406, + 420, 407, 408, 421, 409, 416, 417, 422, 410, 411, + 418, 419, 413, 424, 414, 425, 426, 810, 427, 428, + 429, 430, 431, 810, 810, 415, 810, 420, 810, 810, + 421, 810, 416, 417, 433, 434, 435, 418, 419, 436, + 424, 437, 425, 426, 423, 427, 428, 429, 430, 431, + + 71, 71, 71, 71, 71, 71, 71, 71, 318, 70, + 438, 433, 434, 435, 439, 440, 436, 441, 437, 442, + 443, 444, 445, 446, 448, 29, 449, 451, 29, 452, + 432, 453, 454, 455, 456, 457, 458, 438, 459, 460, + 461, 439, 440, 462, 441, 463, 442, 443, 444, 445, + 446, 448, 29, 449, 451, 29, 452, 432, 453, 454, + 455, 456, 457, 458, 464, 459, 460, 461, 465, 466, + 462, 467, 463, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 480, 478, 481, 483, 484, 485, 486, + 487, 464, 479, 482, 488, 465, 466, 489, 467, 490, + + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 480, 478, 481, 483, 484, 485, 486, 487, 70, 479, + 482, 488, 491, 492, 489, 493, 490, 494, 495, 496, + 498, 499, 500, 503, 29, 504, 505, 29, 506, 517, + 507, 508, 509, 510, 513, 514, 515, 516, 519, 491, + 492, 520, 493, 521, 494, 495, 522, 498, 499, 500, + 503, 29, 504, 505, 29, 506, 497, 507, 508, 509, + 510, 513, 514, 515, 516, 519, 518, 523, 520, 524, + 521, 525, 526, 522, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, + + 545, 546, 547, 548, 523, 549, 524, 550, 525, 526, + 551, 527, 528, 529, 530, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 545, 546, 547, + 548, 552, 549, 553, 550, 554, 555, 551, 556, 557, + 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 569, 572, 573, 574, 575, 576, 577, 552, 578, + 553, 579, 554, 555, 580, 556, 557, 558, 559, 560, + 561, 562, 563, 564, 565, 566, 567, 568, 569, 572, + 573, 574, 575, 576, 577, 581, 578, 582, 579, 583, + 584, 580, 585, 586, 587, 588, 589, 590, 591, 592, + + 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, + 603, 604, 581, 605, 582, 606, 583, 584, 607, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 608, + 605, 609, 606, 610, 611, 607, 612, 613, 614, 615, + 616, 617, 618, 619, 620, 621, 622, 625, 626, 627, + 628, 635, 636, 637, 638, 639, 608, 640, 609, 641, + 610, 611, 642, 612, 613, 614, 615, 616, 617, 618, + 619, 620, 621, 622, 625, 626, 627, 628, 635, 636, + 637, 638, 639, 643, 640, 644, 641, 645, 646, 642, + + 647, 648, 649, 650, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 663, 666, 667, 668, 669, + 643, 670, 644, 671, 645, 646, 672, 647, 648, 649, + 650, 652, 653, 654, 655, 656, 657, 658, 659, 660, + 661, 662, 663, 666, 667, 668, 669, 673, 670, 674, + 671, 675, 676, 672, 677, 678, 679, 680, 681, 682, + 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, + 693, 694, 695, 696, 673, 697, 674, 698, 675, 676, + 699, 677, 678, 679, 680, 681, 682, 683, 684, 685, + 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, + + 696, 700, 697, 701, 698, 704, 705, 699, 706, 707, + 708, 709, 710, 711, 712, 713, 714, 715, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 700, 728, + 701, 729, 704, 705, 730, 706, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 718, 719, 720, 721, 722, + 723, 724, 725, 726, 727, 731, 728, 732, 729, 733, + 736, 730, 737, 738, 739, 740, 741, 744, 745, 746, + 748, 749, 751, 752, 753, 754, 755, 756, 757, 758, + 759, 760, 731, 761, 732, 764, 733, 736, 766, 737, + 738, 739, 740, 741, 744, 745, 746, 748, 749, 751, + + 752, 753, 754, 755, 756, 757, 758, 759, 760, 768, + 761, 769, 764, 770, 771, 766, 772, 773, 778, 779, + 780, 781, 782, 783, 786, 787, 788, 789, 794, 795, + 796, 797, 798, 799, 800, 801, 768, 802, 769, 803, + 770, 771, 804, 772, 773, 778, 779, 780, 781, 782, + 783, 786, 787, 788, 789, 794, 795, 796, 797, 798, + 799, 800, 801, 805, 802, 808, 803, 809, 810, 804, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 805, 810, 808, 810, 809, 24, 810, 24, 49, 49, + + 49, 3, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810 } ; -static yyconst flex_int16_t yy_chk[2283] = +static yyconst flex_int16_t yy_chk[2274] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1055,18 +1050,18 @@ static yyconst flex_int16_t yy_chk[2283] = 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 14, 14, 16, 15, - 14, 16, 16, 17, 17, 13, 165, 17, 13, 165, - 828, 12, 15, 15, 12, 52, 15, 213, 827, 826, - 213, 824, 13, 14, 14, 16, 15, 14, 16, 16, + 14, 16, 16, 17, 17, 13, 164, 17, 13, 164, + 816, 12, 15, 15, 12, 52, 15, 211, 815, 814, + 211, 812, 13, 14, 14, 16, 15, 14, 16, 16, 17, 17, 13, 19, 17, 13, 18, 29, 12, 15, 15, 12, 52, 15, 19, 21, 18, 19, 20, 18, 19, 22, 20, 29, 22, 21, 29, 55, 21, 56, - 19, 31, 20, 18, 31, 20, 815, 814, 795, 794, - 793, 19, 21, 18, 19, 20, 18, 19, 22, 20, - 29, 22, 21, 29, 55, 21, 56, 792, 31, 20, - 783, 31, 20, 26, 26, 26, 26, 26, 26, 26, + 19, 31, 20, 18, 31, 20, 803, 802, 783, 782, + 781, 19, 21, 18, 19, 20, 18, 19, 22, 20, + 29, 22, 21, 29, 55, 21, 56, 780, 31, 20, + 771, 31, 20, 26, 26, 26, 26, 26, 26, 26, - 782, 57, 26, 26, 26, 26, 26, 26, 26, 26, + 770, 57, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 57, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, @@ -1074,230 +1069,229 @@ static yyconst flex_int16_t yy_chk[2283] = 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 30, 30, 30, 30, 30, 30, 30, 30, 32, - 33, 35, 58, 773, 33, 34, 35, 36, 34, 37, + 33, 35, 58, 761, 33, 34, 35, 36, 34, 37, 60, 38, 63, 60, 32, 32, 33, 35, 32, 33, 35, 34, 37, 36, 34, 37, 36, 38, 37, 58, - 38, 33, 64, 35, 38, 34, 772, 60, 771, 63, + 38, 33, 64, 35, 38, 34, 760, 60, 759, 63, 60, 32, 32, 33, 35, 32, 33, 35, 34, 37, 36, 34, 37, 36, 38, 37, 39, 38, 40, 64, - 770, 38, 40, 41, 763, 42, 39, 42, 43, 44, - 760, 65, 39, 43, 40, 39, 45, 40, 41, 41, - 757, 89, 41, 42, 43, 44, 42, 43, 44, 40, - 756, 45, 45, 39, 90, 45, 738, 59, 65, 39, + 758, 38, 40, 41, 751, 42, 39, 42, 43, 44, + 748, 65, 39, 43, 40, 39, 45, 40, 41, 41, + 745, 89, 41, 42, 43, 44, 42, 43, 44, 40, + 744, 45, 45, 39, 90, 45, 726, 59, 65, 39, 43, 40, 39, 59, 40, 41, 41, 46, 89, 41, 42, 43, 44, 42, 43, 44, 47, 48, 45, 45, 54, 90, 45, 46, 59, 53, 46, 46, 82, 91, 59, 82, 47, 48, 54, 47, 48, 53, 92, 48, - 735, 96, 731, 730, 94, 95, 717, 54, 716, 697, - 46, 696, 53, 46, 46, 82, 91, 73, 82, 47, + 723, 719, 718, 705, 93, 94, 704, 54, 685, 684, + 46, 95, 53, 46, 46, 82, 91, 73, 82, 47, 48, 54, 47, 48, 53, 92, 48, 51, 51, 51, - 51, 94, 95, 73, 51, 51, 73, 51, 96, 61, + 51, 93, 94, 73, 51, 51, 73, 51, 95, 61, 51, 61, 51, 61, 51, 51, 51, 51, 51, 62, - 148, 151, 155, 174, 51, 51, 51, 51, 62, 62, + 96, 147, 150, 154, 51, 51, 51, 51, 62, 62, 73, 51, 51, 73, 51, 62, 61, 51, 61, 51, 61, 51, 51, 51, 51, 51, 62, 66, 66, 66, - 66, 66, 66, 66, 66, 62, 62, 148, 151, 155, - 174, 681, 62, 67, 67, 67, 67, 67, 67, 67, + 66, 66, 66, 66, 66, 62, 62, 96, 147, 150, + 154, 669, 62, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 71, 71, - 71, 71, 71, 71, 71, 71, 72, 93, 74, 680, - 632, 93, 75, 76, 97, 98, 99, 77, 100, 631, - 101, 102, 72, 103, 74, 72, 72, 74, 75, 76, - 74, 75, 76, 77, 93, 616, 77, 77, 93, 192, - 78, 97, 98, 99, 595, 100, 78, 101, 102, 72, - 103, 74, 72, 72, 74, 75, 76, 74, 75, 76, - - 77, 79, 78, 77, 77, 78, 80, 79, 104, 105, - 594, 81, 84, 593, 106, 108, 192, 79, 109, 80, - 79, 83, 80, 81, 110, 80, 84, 81, 84, 78, - 81, 84, 78, 592, 79, 104, 105, 83, 591, 590, - 83, 106, 108, 83, 79, 109, 80, 79, 585, 80, - 81, 110, 80, 84, 81, 84, 85, 81, 84, 111, - 86, 85, 87, 132, 83, 107, 86, 83, 88, 133, - 83, 134, 85, 135, 88, 85, 86, 137, 87, 86, - 107, 87, 138, 139, 88, 87, 111, 88, 85, 584, - 132, 574, 107, 86, 572, 524, 133, 523, 134, 85, - - 135, 88, 85, 86, 137, 87, 86, 107, 87, 138, - 139, 88, 87, 495, 88, 112, 112, 112, 112, 112, + 71, 71, 71, 71, 71, 71, 72, 97, 74, 668, + 620, 98, 75, 76, 99, 100, 101, 77, 102, 619, + 103, 104, 72, 105, 74, 72, 72, 74, 75, 76, + 74, 75, 76, 77, 97, 606, 77, 77, 98, 173, + 78, 99, 100, 101, 585, 102, 78, 103, 104, 72, + 105, 74, 72, 72, 74, 75, 76, 74, 75, 76, + + 77, 79, 78, 77, 77, 78, 80, 79, 106, 107, + 584, 81, 84, 583, 108, 109, 173, 79, 110, 80, + 79, 83, 80, 81, 107, 80, 84, 81, 84, 78, + 81, 84, 78, 582, 79, 106, 107, 83, 111, 581, + 83, 108, 109, 83, 79, 110, 80, 79, 580, 80, + 81, 107, 80, 84, 81, 84, 85, 81, 84, 132, + 86, 85, 87, 122, 83, 111, 86, 83, 88, 133, + 83, 134, 85, 135, 88, 85, 86, 122, 87, 86, + 122, 87, 137, 138, 88, 87, 132, 88, 85, 122, + 122, 575, 574, 86, 516, 515, 133, 489, 134, 85, + + 135, 88, 85, 86, 122, 87, 86, 122, 87, 137, + 138, 88, 87, 488, 88, 112, 112, 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, - 117, 117, 117, 117, 117, 118, 119, 120, 494, 462, - 142, 121, 136, 124, 119, 118, 143, 121, 461, 122, - 136, 118, 119, 120, 118, 119, 120, 121, 450, 124, - 121, 144, 124, 122, 449, 124, 122, 142, 397, 136, - - 145, 119, 118, 143, 121, 122, 122, 136, 118, 119, - 120, 118, 119, 120, 121, 123, 124, 121, 144, 124, - 122, 127, 124, 122, 123, 125, 126, 145, 394, 146, - 128, 123, 359, 147, 123, 125, 129, 127, 291, 126, - 127, 125, 126, 127, 125, 126, 128, 290, 288, 128, - 287, 123, 129, 269, 149, 129, 146, 129, 123, 130, - 147, 123, 125, 202, 127, 130, 126, 127, 125, 126, - 127, 125, 126, 128, 131, 130, 128, 140, 130, 129, - 141, 149, 129, 150, 129, 152, 140, 153, 140, 141, - 131, 141, 130, 131, 154, 156, 268, 157, 215, 214, - - 202, 175, 130, 49, 140, 130, 160, 141, 25, 24, - 150, 161, 152, 140, 153, 140, 141, 131, 141, 23, - 131, 154, 160, 156, 157, 160, 160, 161, 175, 9, - 161, 176, 156, 158, 158, 158, 158, 158, 158, 158, - 158, 159, 159, 159, 159, 159, 159, 159, 159, 160, - 156, 162, 160, 160, 161, 163, 164, 161, 176, 177, - 166, 167, 169, 178, 169, 8, 167, 162, 3, 179, - 162, 163, 164, 168, 163, 164, 166, 167, 169, 166, - 167, 169, 2, 0, 164, 181, 177, 0, 168, 168, - 178, 169, 168, 167, 162, 170, 179, 162, 163, 164, - - 183, 163, 164, 166, 167, 169, 166, 167, 169, 171, - 172, 170, 181, 184, 170, 168, 168, 173, 185, 168, - 182, 186, 187, 171, 188, 171, 172, 183, 171, 172, - 182, 189, 190, 173, 191, 193, 173, 194, 170, 195, - 184, 170, 196, 197, 198, 185, 199, 200, 186, 187, - 171, 188, 171, 172, 201, 171, 172, 182, 189, 190, - 173, 191, 193, 173, 194, 203, 195, 206, 207, 196, - 197, 198, 204, 199, 200, 204, 205, 208, 0, 205, - 209, 201, 210, 210, 210, 210, 210, 210, 210, 210, - 226, 0, 203, 222, 206, 223, 0, 224, 0, 204, - - 212, 225, 204, 205, 208, 207, 205, 209, 211, 211, - 211, 211, 211, 211, 211, 211, 212, 216, 217, 212, - 222, 212, 223, 216, 224, 218, 219, 226, 225, 227, - 228, 0, 0, 216, 217, 220, 216, 217, 217, 221, - 229, 218, 219, 212, 218, 219, 212, 230, 212, 232, - 216, 220, 233, 234, 220, 221, 227, 228, 221, 221, - 216, 217, 235, 216, 217, 217, 236, 229, 218, 219, - 237, 218, 219, 238, 230, 239, 232, 240, 220, 233, - 234, 220, 221, 241, 242, 221, 221, 243, 244, 235, - 245, 246, 247, 236, 248, 249, 250, 237, 251, 252, - - 238, 253, 239, 254, 240, 255, 256, 257, 258, 259, - 241, 242, 260, 261, 243, 244, 262, 245, 246, 247, - 263, 264, 249, 250, 0, 251, 252, 0, 253, 0, - 254, 248, 255, 256, 257, 258, 259, 277, 278, 260, - 261, 0, 275, 262, 276, 0, 0, 263, 264, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, - 266, 266, 266, 266, 266, 266, 267, 272, 273, 275, - 279, 276, 267, 274, 277, 278, 280, 281, 282, 283, - 284, 285, 267, 272, 273, 267, 272, 273, 286, 274, - 289, 292, 274, 293, 294, 295, 296, 279, 297, 267, - - 298, 306, 299, 280, 281, 282, 283, 284, 285, 267, - 272, 273, 267, 272, 273, 286, 274, 289, 300, 274, - 293, 301, 295, 296, 302, 304, 303, 298, 292, 299, - 305, 294, 307, 308, 309, 297, 303, 310, 306, 311, - 312, 313, 314, 315, 316, 300, 317, 318, 301, 324, - 0, 302, 304, 325, 0, 303, 326, 305, 0, 307, - 308, 309, 321, 303, 310, 0, 311, 312, 313, 314, - 315, 316, 327, 317, 328, 329, 324, 321, 321, 330, - 325, 321, 303, 326, 318, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 331, 332, 333, 334, 335, 327, - - 336, 328, 329, 337, 321, 321, 330, 338, 321, 339, - 340, 341, 342, 343, 344, 346, 347, 348, 349, 350, - 351, 331, 332, 352, 334, 335, 353, 336, 343, 344, - 337, 354, 355, 333, 338, 356, 339, 340, 341, 342, - 343, 344, 346, 347, 348, 349, 350, 351, 357, 360, - 352, 361, 362, 353, 365, 343, 344, 366, 354, 355, - 363, 363, 356, 364, 364, 367, 368, 369, 370, 371, - 373, 374, 376, 377, 0, 357, 360, 0, 361, 362, - 0, 365, 0, 0, 366, 380, 381, 363, 363, 382, - 364, 364, 383, 368, 369, 370, 371, 373, 374, 376, - - 377, 379, 367, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 380, 381, 384, 385, 382, 379, 386, 383, - 379, 387, 379, 388, 389, 390, 391, 392, 393, 395, - 396, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 384, 385, 408, 379, 386, 409, 379, 387, 379, - 388, 389, 390, 391, 392, 393, 395, 396, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 410, 411, - 408, 412, 413, 409, 414, 415, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 429, 431, 428, - 432, 433, 430, 434, 435, 410, 411, 428, 412, 413, - - 430, 414, 415, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 429, 431, 428, 432, 433, 430, - 434, 435, 436, 437, 428, 438, 439, 430, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 451, 436, 452, - 453, 436, 454, 467, 455, 456, 457, 458, 459, 460, - 437, 463, 438, 439, 464, 440, 441, 442, 443, 444, - 465, 446, 447, 448, 451, 436, 452, 453, 436, 454, - 445, 455, 456, 457, 458, 459, 460, 466, 463, 468, - 467, 464, 469, 470, 471, 472, 473, 465, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - - 486, 487, 488, 489, 466, 492, 468, 493, 496, 469, - 470, 471, 472, 473, 497, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 498, 492, 499, 493, 496, 500, 501, 502, 503, - 504, 497, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 514, 515, 516, 517, 518, 519, 520, 498, 521, - 499, 522, 525, 500, 501, 502, 503, 504, 526, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 518, 519, 520, 527, 521, 528, 522, 525, - 529, 530, 531, 532, 533, 526, 534, 535, 536, 537, - - 538, 541, 542, 543, 544, 545, 546, 547, 548, 551, - 552, 553, 527, 554, 528, 555, 556, 529, 530, 531, - 532, 533, 557, 534, 535, 536, 537, 538, 541, 542, - 543, 544, 545, 546, 547, 548, 551, 552, 553, 558, - 554, 559, 555, 556, 560, 561, 562, 563, 564, 557, - 565, 566, 567, 568, 569, 570, 571, 573, 575, 576, - 577, 578, 579, 582, 583, 586, 558, 587, 559, 588, - 589, 560, 561, 562, 563, 564, 598, 565, 566, 567, - 568, 569, 570, 571, 573, 575, 576, 577, 578, 579, - 582, 583, 586, 599, 587, 601, 588, 589, 602, 604, - - 605, 606, 607, 598, 608, 609, 610, 611, 612, 613, - 614, 615, 617, 618, 619, 620, 621, 622, 623, 624, - 599, 626, 601, 628, 629, 602, 604, 605, 606, 607, - 630, 608, 609, 610, 611, 612, 613, 614, 615, 617, - 618, 619, 620, 621, 622, 623, 624, 633, 626, 634, - 628, 629, 637, 638, 639, 640, 643, 630, 644, 645, - 646, 647, 649, 651, 652, 653, 654, 655, 656, 659, - 660, 661, 662, 664, 633, 665, 634, 666, 667, 637, - 638, 639, 640, 643, 668, 644, 645, 646, 647, 649, - 651, 652, 653, 654, 655, 656, 659, 660, 661, 662, - - 664, 669, 665, 670, 666, 667, 671, 672, 673, 674, - 675, 668, 678, 679, 682, 683, 684, 685, 686, 687, - 690, 691, 692, 693, 694, 695, 698, 699, 669, 700, - 670, 701, 702, 671, 672, 673, 674, 675, 703, 678, - 679, 682, 683, 684, 685, 686, 687, 690, 691, 692, - 693, 694, 695, 698, 699, 704, 700, 705, 701, 702, - 706, 707, 708, 709, 710, 703, 711, 712, 713, 718, - 719, 720, 721, 722, 723, 732, 733, 734, 736, 737, - 739, 742, 704, 743, 705, 744, 745, 706, 707, 708, - 709, 710, 746, 711, 712, 713, 718, 719, 720, 721, - - 722, 723, 732, 733, 734, 736, 737, 739, 742, 747, - 743, 748, 744, 745, 749, 750, 751, 758, 761, 746, - 764, 765, 766, 767, 768, 769, 774, 775, 776, 778, - 780, 781, 784, 785, 790, 791, 747, 796, 748, 797, - 798, 749, 750, 751, 758, 761, 799, 764, 765, 766, - 767, 768, 769, 774, 775, 776, 778, 780, 781, 784, - 785, 790, 791, 800, 796, 801, 797, 798, 806, 807, - 808, 809, 812, 799, 813, 816, 817, 0, 0, 0, + 117, 117, 117, 117, 117, 118, 119, 120, 190, 141, + 456, 121, 136, 455, 119, 118, 142, 121, 124, 123, + 136, 118, 119, 120, 118, 119, 120, 121, 123, 446, + 121, 445, 143, 200, 124, 123, 141, 124, 123, 136, + + 124, 119, 118, 142, 121, 190, 144, 136, 118, 119, + 120, 118, 119, 120, 121, 123, 125, 121, 126, 143, + 127, 124, 123, 395, 124, 123, 125, 124, 128, 129, + 200, 126, 125, 144, 126, 125, 127, 126, 131, 127, + 392, 357, 127, 145, 128, 129, 146, 128, 129, 130, + 129, 289, 288, 125, 131, 130, 148, 131, 126, 125, + 149, 126, 125, 127, 126, 130, 127, 139, 130, 127, + 145, 128, 129, 146, 128, 129, 139, 129, 139, 140, + 151, 131, 130, 148, 131, 152, 153, 149, 140, 156, + 140, 155, 130, 286, 139, 130, 285, 267, 266, 213, + + 212, 49, 25, 139, 24, 139, 140, 151, 23, 9, + 8, 174, 152, 153, 175, 140, 156, 140, 3, 155, + 157, 157, 157, 157, 157, 157, 157, 157, 155, 158, + 158, 158, 158, 158, 158, 158, 158, 159, 174, 160, + 176, 175, 177, 161, 162, 163, 155, 178, 179, 165, + 181, 182, 183, 159, 2, 160, 159, 159, 160, 161, + 162, 163, 161, 162, 163, 165, 0, 176, 165, 177, + 0, 205, 0, 163, 178, 179, 0, 181, 182, 183, + 159, 167, 160, 159, 159, 160, 161, 162, 163, 161, + 162, 163, 165, 166, 169, 165, 167, 167, 166, 168, + + 167, 168, 184, 170, 185, 0, 0, 186, 205, 166, + 169, 180, 166, 169, 171, 168, 172, 170, 168, 170, + 187, 180, 170, 167, 167, 166, 188, 167, 168, 184, + 171, 185, 172, 171, 186, 172, 166, 169, 189, 166, + 169, 191, 168, 192, 170, 168, 170, 187, 180, 170, + 193, 194, 195, 188, 196, 197, 198, 171, 199, 172, + 171, 201, 172, 202, 203, 189, 202, 203, 191, 204, + 192, 206, 207, 0, 0, 0, 210, 193, 194, 195, + 0, 196, 197, 198, 0, 199, 0, 0, 201, 0, + 202, 203, 210, 202, 203, 210, 204, 210, 206, 207, + + 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, + 209, 209, 209, 209, 209, 209, 216, 214, 215, 210, + 0, 220, 210, 214, 210, 217, 218, 219, 221, 222, + 223, 225, 216, 214, 215, 216, 214, 215, 215, 224, + 226, 217, 218, 219, 217, 218, 219, 219, 220, 0, + 214, 227, 228, 230, 231, 221, 222, 223, 225, 216, + 214, 215, 216, 214, 215, 215, 232, 226, 217, 218, + 219, 217, 218, 219, 219, 233, 224, 234, 227, 228, + 230, 231, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 232, 246, 247, 248, 249, 250, 251, + + 252, 253, 233, 254, 234, 255, 256, 257, 258, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 259, 260, 247, 248, 249, 250, 251, 252, 253, 261, + 254, 246, 255, 256, 257, 258, 262, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 275, 259, 260, 276, + 0, 0, 0, 273, 274, 277, 261, 270, 271, 290, + 278, 0, 279, 262, 264, 264, 264, 264, 264, 264, + 264, 264, 265, 270, 271, 280, 270, 271, 265, 272, + 273, 274, 277, 275, 281, 282, 276, 278, 265, 279, + 283, 265, 284, 287, 291, 272, 290, 292, 272, 293, + + 270, 271, 280, 270, 271, 265, 294, 295, 296, 297, + 298, 281, 282, 299, 300, 265, 302, 283, 265, 284, + 287, 291, 272, 303, 304, 272, 293, 305, 301, 306, + 316, 307, 308, 294, 292, 296, 297, 298, 301, 309, + 299, 300, 310, 302, 295, 311, 312, 313, 314, 315, + 303, 0, 322, 323, 305, 324, 306, 301, 307, 308, + 0, 304, 319, 331, 0, 301, 309, 316, 325, 310, + 326, 327, 311, 312, 313, 314, 315, 319, 319, 322, + 323, 319, 324, 328, 301, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 329, 325, 330, 326, 327, 332, + + 331, 333, 334, 335, 319, 319, 336, 337, 319, 338, + 328, 339, 340, 341, 342, 344, 345, 346, 347, 348, + 349, 329, 350, 330, 351, 352, 332, 353, 333, 334, + 335, 354, 355, 336, 337, 358, 338, 359, 339, 340, + 341, 342, 344, 345, 346, 347, 348, 349, 360, 350, + 363, 351, 352, 364, 353, 361, 361, 365, 354, 355, + 362, 362, 358, 366, 359, 367, 368, 0, 369, 371, + 372, 374, 375, 0, 0, 360, 0, 363, 0, 0, + 364, 0, 361, 361, 378, 379, 380, 362, 362, 381, + 366, 382, 367, 368, 365, 369, 371, 372, 374, 375, + + 376, 376, 376, 376, 376, 376, 376, 376, 376, 377, + 383, 378, 379, 380, 384, 385, 381, 386, 382, 387, + 388, 389, 390, 391, 393, 377, 394, 396, 377, 397, + 377, 398, 399, 400, 401, 402, 403, 383, 404, 405, + 406, 384, 385, 407, 386, 408, 387, 388, 389, 390, + 391, 393, 377, 394, 396, 377, 397, 377, 398, 399, + 400, 401, 402, 403, 409, 404, 405, 406, 410, 411, + 407, 413, 408, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 425, 424, 426, 427, 428, 429, 430, + 431, 409, 424, 426, 433, 410, 411, 434, 413, 435, + + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 425, 424, 426, 427, 428, 429, 430, 431, 432, 424, + 426, 433, 436, 437, 434, 438, 435, 439, 440, 441, + 442, 443, 444, 447, 432, 448, 449, 432, 450, 461, + 451, 452, 453, 454, 457, 458, 459, 460, 462, 436, + 437, 463, 438, 464, 439, 440, 465, 442, 443, 444, + 447, 432, 448, 449, 432, 450, 441, 451, 452, 453, + 454, 457, 458, 459, 460, 462, 461, 466, 463, 467, + 464, 468, 469, 465, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 486, 487, + + 490, 491, 492, 493, 466, 494, 467, 495, 468, 469, + 496, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 486, 487, 490, 491, 492, + 493, 497, 494, 498, 495, 499, 500, 496, 501, 502, + 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 517, 518, 519, 520, 521, 522, 497, 523, + 498, 524, 499, 500, 525, 501, 502, 503, 504, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 514, 517, + 518, 519, 520, 521, 522, 526, 523, 527, 524, 528, + 529, 525, 530, 533, 534, 535, 536, 537, 538, 539, + + 540, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 526, 554, 527, 555, 528, 529, 556, 530, + 533, 534, 535, 536, 537, 538, 539, 540, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 557, + 554, 558, 555, 559, 560, 556, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 572, 573, 576, 577, 578, + 579, 588, 589, 591, 592, 594, 557, 595, 558, 596, + 559, 560, 597, 561, 562, 563, 564, 565, 566, 567, + 568, 569, 572, 573, 576, 577, 578, 579, 588, 589, + 591, 592, 594, 598, 595, 599, 596, 600, 601, 597, + + 602, 603, 604, 605, 607, 608, 609, 610, 611, 612, + 613, 614, 615, 616, 617, 618, 621, 622, 625, 626, + 598, 627, 599, 628, 600, 601, 631, 602, 603, 604, + 605, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 618, 621, 622, 625, 626, 632, 627, 633, + 628, 634, 635, 631, 637, 639, 640, 641, 642, 643, + 644, 647, 648, 649, 650, 652, 653, 654, 655, 656, + 657, 658, 659, 660, 632, 661, 633, 662, 634, 635, + 663, 637, 639, 640, 641, 642, 643, 644, 647, 648, + 649, 650, 652, 653, 654, 655, 656, 657, 658, 659, + + 660, 666, 661, 667, 662, 670, 671, 663, 672, 673, + 674, 675, 678, 679, 680, 681, 682, 683, 686, 687, + 688, 689, 690, 691, 692, 693, 694, 695, 666, 696, + 667, 697, 670, 671, 698, 672, 673, 674, 675, 678, + 679, 680, 681, 682, 683, 686, 687, 688, 689, 690, + 691, 692, 693, 694, 695, 699, 696, 700, 697, 701, + 706, 698, 707, 708, 709, 710, 711, 720, 721, 722, + 724, 725, 727, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 699, 739, 700, 746, 701, 706, 749, 707, + 708, 709, 710, 711, 720, 721, 722, 724, 725, 727, + + 730, 731, 732, 733, 734, 735, 736, 737, 738, 752, + 739, 753, 746, 754, 755, 749, 756, 757, 762, 763, + 764, 766, 768, 769, 772, 773, 778, 779, 784, 785, + 786, 787, 788, 789, 794, 795, 752, 796, 753, 797, + 754, 755, 800, 756, 757, 762, 763, 764, 766, 768, + 769, 772, 773, 778, 779, 784, 785, 786, 787, 788, + 789, 794, 795, 801, 796, 804, 797, 805, 0, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 800, 0, 801, 0, 0, 806, 807, 808, 809, 812, - - 0, 813, 816, 817, 823, 0, 823, 825, 825, 825, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, 822 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 801, 0, 804, 0, 805, 811, 0, 811, 813, 813, + + 813, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, + 810, 810, 810 } ; -static yyconst flex_int16_t yy_rule_linenum[100] = +static yyconst flex_int16_t yy_rule_linenum[96] = { 0, 77, 80, 82, 84, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, @@ -1305,10 +1299,10 @@ static yyconst flex_int16_t yy_rule_linenum[100] = 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 155, - 156, 158, 159, 160, 161, 162, 163, 165, 166, 169, - 174, 175, 176, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 188, 194, 200, 206, 212, 218, 224 + 145, 146, 147, 148, 149, 151, 152, 154, 155, 156, + 157, 158, 159, 161, 162, 165, 170, 171, 172, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 184, 190, + 196, 202, 208, 214, 220 } ; @@ -1364,7 +1358,7 @@ static void get_lex_chars(char* buffer, int& result, int max_size, Context *cont #define YY_INPUT(buffer, result, max_size) get_lex_chars(buffer, result, max_size, PARAM) -#line 1368 "libmemcached/options/scanner.cc" +#line 1362 "libmemcached/options/scanner.cc" #define INITIAL 0 @@ -1671,7 +1665,7 @@ YY_DECL -#line 1675 "libmemcached/options/scanner.cc" +#line 1669 "libmemcached/options/scanner.cc" yylval = yylval_param; @@ -1737,13 +1731,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 823 ) + if ( yy_current_state >= 811 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2211 ); + while ( yy_base[yy_current_state] != 2202 ); yy_find_action: /* %% [10.0] code to find the action number goes here */ @@ -1766,13 +1760,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 100 ) + else if ( yy_act < 96 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 100 ) + else if ( yy_act == 96 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 101 ) + else if ( yy_act == 97 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -1897,17 +1891,17 @@ YY_RULE_SETUP case 21: YY_RULE_SETUP #line 105 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _CORK; } +{ yyextra->begin= yytext; return DISTRIBUTION; } YY_BREAK case 22: YY_RULE_SETUP #line 106 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return DISTRIBUTION; } +{ yyextra->begin= yytext; return HASH; } YY_BREAK case 23: YY_RULE_SETUP #line 107 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return HASH; } +{ yyextra->begin= yytext; return HASH_WITH_PREFIX_KEY; } YY_BREAK case 24: YY_RULE_SETUP @@ -1917,7 +1911,7 @@ YY_RULE_SETUP case 25: YY_RULE_SETUP #line 109 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return HASH_WITH_PREFIX_KEY; } +{ yyextra->begin= yytext; return IO_BYTES_WATERMARK; } YY_BREAK case 26: YY_RULE_SETUP @@ -1927,7 +1921,7 @@ YY_RULE_SETUP case 27: YY_RULE_SETUP #line 111 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return IO_BYTES_WATERMARK; } +{ yyextra->begin= yytext; return IO_KEY_PREFETCH; } YY_BREAK case 28: YY_RULE_SETUP @@ -1937,7 +1931,7 @@ YY_RULE_SETUP case 29: YY_RULE_SETUP #line 113 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return IO_KEY_PREFETCH; } +{ yyextra->begin= yytext; return IO_MSG_WATERMARK; } YY_BREAK case 30: YY_RULE_SETUP @@ -1947,384 +1941,364 @@ YY_RULE_SETUP case 31: YY_RULE_SETUP #line 115 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return IO_MSG_WATERMARK; } +{ yyextra->begin= yytext; return KETAMA_WEIGHTED; } YY_BREAK case 32: YY_RULE_SETUP #line 116 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return KETAMA; } +{ yyextra->begin= yytext; return KETAMA_WEIGHTED; } YY_BREAK case 33: YY_RULE_SETUP #line 117 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return KETAMA_HASH; } +{ yyextra->begin= yytext; return NOREPLY; } YY_BREAK case 34: YY_RULE_SETUP #line 118 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return KETAMA_HASH; } +{ yyextra->begin= yytext; return NUMBER_OF_REPLICAS; } YY_BREAK case 35: YY_RULE_SETUP #line 119 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return KETAMA_WEIGHTED; } +{ yyextra->begin= yytext; return NUMBER_OF_REPLICAS; } YY_BREAK case 36: YY_RULE_SETUP #line 120 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return KETAMA_WEIGHTED; } +{ yyextra->begin= yytext; return POLL_TIMEOUT; } YY_BREAK case 37: YY_RULE_SETUP #line 121 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return NOREPLY; } +{ yyextra->begin= yytext; return POLL_TIMEOUT; } YY_BREAK case 38: YY_RULE_SETUP #line 122 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return NUMBER_OF_REPLICAS; } +{ yyextra->begin= yytext; return RANDOMIZE_REPLICA_READ; } YY_BREAK case 39: YY_RULE_SETUP #line 123 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return NUMBER_OF_REPLICAS; } +{ yyextra->begin= yytext; return RANDOMIZE_REPLICA_READ; } YY_BREAK case 40: YY_RULE_SETUP #line 124 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return POLL_TIMEOUT; } +{ yyextra->begin= yytext; return RCV_TIMEOUT; } YY_BREAK case 41: YY_RULE_SETUP #line 125 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return POLL_TIMEOUT; } +{ yyextra->begin= yytext; return RCV_TIMEOUT; } YY_BREAK case 42: YY_RULE_SETUP #line 126 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RANDOMIZE_REPLICA_READ; } +{ yyextra->begin= yytext; return RETRY_TIMEOUT; } YY_BREAK case 43: YY_RULE_SETUP #line 127 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RANDOMIZE_REPLICA_READ; } +{ yyextra->begin= yytext; return RETRY_TIMEOUT; } YY_BREAK case 44: YY_RULE_SETUP #line 128 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RCV_TIMEOUT; } +{ yyextra->begin= yytext; return SERVER_FAILURE_LIMIT; } YY_BREAK case 45: YY_RULE_SETUP #line 129 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RCV_TIMEOUT; } +{ yyextra->begin= yytext; return SERVER_FAILURE_LIMIT; } YY_BREAK case 46: YY_RULE_SETUP #line 130 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RETRY_TIMEOUT; } +{ yyextra->begin= yytext; return SND_TIMEOUT; } YY_BREAK case 47: YY_RULE_SETUP #line 131 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RETRY_TIMEOUT; } +{ yyextra->begin= yytext; return SND_TIMEOUT; } YY_BREAK case 48: YY_RULE_SETUP #line 132 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SERVER_FAILURE_LIMIT; } +{ yyextra->begin= yytext; return SOCKET_RECV_SIZE; } YY_BREAK case 49: YY_RULE_SETUP #line 133 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SERVER_FAILURE_LIMIT; } +{ yyextra->begin= yytext; return SOCKET_RECV_SIZE; } YY_BREAK case 50: YY_RULE_SETUP #line 134 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SND_TIMEOUT; } +{ yyextra->begin= yytext; return SOCKET_SEND_SIZE; } YY_BREAK case 51: YY_RULE_SETUP #line 135 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SND_TIMEOUT; } +{ yyextra->begin= yytext; return SOCKET_SEND_SIZE; } YY_BREAK case 52: YY_RULE_SETUP #line 136 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SOCKET_RECV_SIZE; } +{ yyextra->begin= yytext; return SORT_HOSTS; } YY_BREAK case 53: YY_RULE_SETUP #line 137 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SOCKET_RECV_SIZE; } +{ yyextra->begin= yytext; return SORT_HOSTS; } YY_BREAK case 54: YY_RULE_SETUP #line 138 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SOCKET_SEND_SIZE; } +{ yyextra->begin= yytext; return SUPPORT_CAS; } YY_BREAK case 55: YY_RULE_SETUP #line 139 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SOCKET_SEND_SIZE; } +{ yyextra->begin= yytext; return SUPPORT_CAS; } YY_BREAK case 56: YY_RULE_SETUP #line 140 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SORT_HOSTS; } +{ yyextra->begin= yytext; return _TCP_NODELAY; } YY_BREAK case 57: YY_RULE_SETUP #line 141 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SORT_HOSTS; } +{ yyextra->begin= yytext; return _TCP_NODELAY; } YY_BREAK case 58: YY_RULE_SETUP #line 142 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SUPPORT_CAS; } +{ yyextra->begin= yytext; return _TCP_KEEPALIVE; } YY_BREAK case 59: YY_RULE_SETUP #line 143 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SUPPORT_CAS; } +{ yyextra->begin= yytext; return _TCP_KEEPALIVE; } YY_BREAK case 60: YY_RULE_SETUP #line 144 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _TCP_NODELAY; } +{ yyextra->begin= yytext; return _TCP_KEEPIDLE; } YY_BREAK case 61: YY_RULE_SETUP #line 145 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _TCP_NODELAY; } +{ yyextra->begin= yytext; return _TCP_KEEPIDLE; } YY_BREAK case 62: YY_RULE_SETUP #line 146 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _TCP_KEEPALIVE; } +{ yyextra->begin= yytext; return USER_DATA; } YY_BREAK case 63: YY_RULE_SETUP #line 147 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _TCP_KEEPALIVE; } +{ yyextra->begin= yytext; return USER_DATA; } YY_BREAK case 64: YY_RULE_SETUP #line 148 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _TCP_KEEPIDLE; } +{ yyextra->begin= yytext; return USE_UDP; } YY_BREAK case 65: YY_RULE_SETUP #line 149 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return _TCP_KEEPIDLE; } +{ yyextra->begin= yytext; return USE_UDP; } YY_BREAK case 66: YY_RULE_SETUP -#line 150 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return USER_DATA; } +#line 151 "libmemcached/options/scanner.l" +{ yyextra->begin= yytext; return PREFIX_KEY; } YY_BREAK case 67: YY_RULE_SETUP -#line 151 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return USER_DATA; } +#line 152 "libmemcached/options/scanner.l" +{ yyextra->begin= yytext; return PREFIX_KEY; } YY_BREAK case 68: YY_RULE_SETUP -#line 152 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return USE_UDP; } +#line 154 "libmemcached/options/scanner.l" +{ yyextra->begin= yytext; return INCLUDE; } YY_BREAK case 69: YY_RULE_SETUP -#line 153 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return USE_UDP; } +#line 155 "libmemcached/options/scanner.l" +{ yyextra->begin= yytext; return RESET; } YY_BREAK case 70: YY_RULE_SETUP -#line 155 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return PREFIX_KEY; } +#line 156 "libmemcached/options/scanner.l" +{ yyextra->begin= yytext; return PARSER_DEBUG; } YY_BREAK case 71: YY_RULE_SETUP -#line 156 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return PREFIX_KEY; } +#line 157 "libmemcached/options/scanner.l" +{ yyextra->begin= yytext; return SERVERS; } YY_BREAK case 72: YY_RULE_SETUP #line 158 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return INCLUDE; } +{ yyextra->begin= yytext; return END; } YY_BREAK case 73: YY_RULE_SETUP #line 159 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return RESET; } +{ yyextra->begin= yytext; return ERROR; } YY_BREAK case 74: YY_RULE_SETUP -#line 160 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return PARSER_DEBUG; } +#line 161 "libmemcached/options/scanner.l" +{ return TRUE; } YY_BREAK case 75: YY_RULE_SETUP -#line 161 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return SERVERS; } +#line 162 "libmemcached/options/scanner.l" +{ return FALSE; } YY_BREAK case 76: YY_RULE_SETUP -#line 162 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return END; } +#line 165 "libmemcached/options/scanner.l" +{ + yyextra->begin= yytext; + return UNKNOWN_OPTION; + } YY_BREAK case 77: YY_RULE_SETUP -#line 163 "libmemcached/options/scanner.l" -{ yyextra->begin= yytext; return ERROR; } +#line 170 "libmemcached/options/scanner.l" +{ return CONSISTENT; } YY_BREAK case 78: YY_RULE_SETUP -#line 165 "libmemcached/options/scanner.l" -{ return TRUE; } +#line 171 "libmemcached/options/scanner.l" +{ return MODULA; } YY_BREAK case 79: YY_RULE_SETUP -#line 166 "libmemcached/options/scanner.l" -{ return FALSE; } +#line 172 "libmemcached/options/scanner.l" +{ return RANDOM; } YY_BREAK case 80: YY_RULE_SETUP -#line 169 "libmemcached/options/scanner.l" -{ - yyextra->begin= yytext; - return UNKNOWN_OPTION; - } +#line 174 "libmemcached/options/scanner.l" +{ return MD5; } YY_BREAK case 81: YY_RULE_SETUP -#line 174 "libmemcached/options/scanner.l" -{ return CONSISTENT; } +#line 175 "libmemcached/options/scanner.l" +{ return CRC; } YY_BREAK case 82: YY_RULE_SETUP -#line 175 "libmemcached/options/scanner.l" -{ return MODULA; } +#line 176 "libmemcached/options/scanner.l" +{ return FNV1_64; } YY_BREAK case 83: YY_RULE_SETUP -#line 176 "libmemcached/options/scanner.l" -{ return RANDOM; } +#line 177 "libmemcached/options/scanner.l" +{ return FNV1A_64; } YY_BREAK case 84: YY_RULE_SETUP #line 178 "libmemcached/options/scanner.l" -{ return MD5; } +{ return FNV1_32; } YY_BREAK case 85: YY_RULE_SETUP #line 179 "libmemcached/options/scanner.l" -{ return CRC; } +{ return FNV1A_32; } YY_BREAK case 86: YY_RULE_SETUP #line 180 "libmemcached/options/scanner.l" -{ return FNV1_64; } +{ return HSIEH; } YY_BREAK case 87: YY_RULE_SETUP #line 181 "libmemcached/options/scanner.l" -{ return FNV1A_64; } +{ return MURMUR; } YY_BREAK case 88: YY_RULE_SETUP #line 182 "libmemcached/options/scanner.l" -{ return FNV1_32; } +{ return JENKINS; } YY_BREAK case 89: YY_RULE_SETUP -#line 183 "libmemcached/options/scanner.l" -{ return FNV1A_32; } - YY_BREAK -case 90: -YY_RULE_SETUP #line 184 "libmemcached/options/scanner.l" -{ return HSIEH; } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 185 "libmemcached/options/scanner.l" -{ return MURMUR; } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 186 "libmemcached/options/scanner.l" -{ return JENKINS; } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 188 "libmemcached/options/scanner.l" { yylval->string.c_str = yytext; yylval->string.length = yyleng; return HOSTNAME_WITH_PORT; } YY_BREAK -case 94: +case 90: YY_RULE_SETUP -#line 194 "libmemcached/options/scanner.l" +#line 190 "libmemcached/options/scanner.l" { yylval->string.c_str = yytext; yylval->string.length = yyleng; return HOSTNAME; } YY_BREAK -case 95: +case 91: YY_RULE_SETUP -#line 200 "libmemcached/options/scanner.l" +#line 196 "libmemcached/options/scanner.l" { yylval->string.c_str = yytext; yylval->string.length = yyleng; return IPADDRESS_WITH_PORT; } YY_BREAK -case 96: +case 92: YY_RULE_SETUP -#line 206 "libmemcached/options/scanner.l" +#line 202 "libmemcached/options/scanner.l" { yylval->string.c_str = yytext; yylval->string.length = yyleng; return IPADDRESS; } YY_BREAK -case 97: +case 93: YY_RULE_SETUP -#line 212 "libmemcached/options/scanner.l" +#line 208 "libmemcached/options/scanner.l" { yylval->string.c_str = yytext; yylval->string.length = yyleng; return STRING; } YY_BREAK -case 98: +case 94: YY_RULE_SETUP -#line 218 "libmemcached/options/scanner.l" +#line 214 "libmemcached/options/scanner.l" { yylval->string.c_str = yytext; yylval->string.length = yyleng; return QUOTED_STRING; } YY_BREAK -case 99: +case 95: YY_RULE_SETUP -#line 224 "libmemcached/options/scanner.l" +#line 220 "libmemcached/options/scanner.l" { yyextra->begin= yytext; return UNKNOWN; } YY_BREAK -case 100: +case 96: YY_RULE_SETUP -#line 229 "libmemcached/options/scanner.l" +#line 225 "libmemcached/options/scanner.l" ECHO; YY_BREAK -#line 2328 "libmemcached/options/scanner.cc" +#line 2302 "libmemcached/options/scanner.cc" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2640,7 +2614,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 823 ) + if ( yy_current_state >= 811 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2674,11 +2648,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 823 ) + if ( yy_current_state >= 811 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 822); + yy_is_jam = (yy_current_state == 810); return yy_is_jam ? 0 : yy_current_state; } @@ -3590,7 +3564,7 @@ void config_free (void * ptr , yyscan_t yyscanner) /* %ok-for-header */ -#line 229 "libmemcached/options/scanner.l" +#line 225 "libmemcached/options/scanner.l" diff --git a/libmemcached/options/scanner.h b/libmemcached/options/scanner.h index e1f18e85..5c2473f4 100644 --- a/libmemcached/options/scanner.h +++ b/libmemcached/options/scanner.h @@ -471,7 +471,7 @@ extern int config_lex \ #undef YY_DECL #endif -#line 229 "libmemcached/options/scanner.l" +#line 225 "libmemcached/options/scanner.l" #line 478 "libmemcached/options/scanner.h" diff --git a/libmemcached/options/scanner.l b/libmemcached/options/scanner.l index 81b9acd8..ccfc55aa 100644 --- a/libmemcached/options/scanner.l +++ b/libmemcached/options/scanner.l @@ -102,7 +102,6 @@ static void get_lex_chars(char* buffer, int& result, int max_size, Context *cont "--CONFIGURE-FILE=" { yyextra->begin= yytext; return CONFIGURE_FILE; } "--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; } "--HASH_WITH_PREFIX_KEY" { yyextra->begin= yytext; return HASH_WITH_PREFIX_KEY; } @@ -113,9 +112,6 @@ static void get_lex_chars(char* buffer, int& result, int max_size, Context *cont "--IO-KEY-PREFETCH=" { yyextra->begin= yytext; return IO_KEY_PREFETCH; } "--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_WEIGHTED" { yyextra->begin= yytext; return KETAMA_WEIGHTED; } "--KETAMA-WEIGHTED" { yyextra->begin= yytext; return KETAMA_WEIGHTED; } "--NOREPLY" { yyextra->begin= yytext; return NOREPLY; } diff --git a/tests/mem_functions.c b/tests/mem_functions.c index e675975c..68cab451 100644 --- a/tests/mem_functions.c +++ b/tests/mem_functions.c @@ -318,7 +318,7 @@ static test_return_t clone_test(memcached_st *memc) test_true(memc_clone->flags.buffer_requests == memc->flags.buffer_requests); test_true(memc_clone->flags.use_sort_hosts == memc->flags.use_sort_hosts); test_true(memc_clone->flags.verify_key == memc->flags.verify_key); - test_true(memc_clone->flags.ketama_weighted == memc->flags.ketama_weighted); + test_true(memc_clone->ketama.weighted == memc->ketama.weighted); test_true(memc_clone->flags.binary_protocol == memc->flags.binary_protocol); test_true(memc_clone->flags.hash_with_prefix_key == memc->flags.hash_with_prefix_key); test_true(memc_clone->flags.no_reply == memc->flags.no_reply); diff --git a/tests/parser.cc b/tests/parser.cc index 40904a08..4fccaeee 100644 --- a/tests/parser.cc +++ b/tests/parser.cc @@ -202,11 +202,7 @@ scanner_variable_t test_boolean_options[]= { { ARRAY, make_scanner_string("--BINARY_PROTOCOL"), scanner_string_null, NULL }, { ARRAY, make_scanner_string("--BUFFER_REQUESTS"), scanner_string_null, NULL }, { ARRAY, make_scanner_string("--CACHE_LOOKUPS"), scanner_string_null, __check_CACHE_LOOKUPS }, -#if 0 // Not all platforms support - { ARRAY, make_scanner_string("--CORK"), scanner_string_null, NULL }, -#endif { ARRAY, make_scanner_string("--HASH_WITH_PREFIX_KEY"), scanner_string_null, NULL }, - { ARRAY, make_scanner_string("--KETAMA"), scanner_string_null, NULL }, { ARRAY, make_scanner_string("--KETAMA_WEIGHTED"), scanner_string_null, NULL }, { ARRAY, make_scanner_string("--NOREPLY"), scanner_string_null, __check_NOREPLY }, { ARRAY, make_scanner_string("--RANDOMIZE_REPLICA_READ"), scanner_string_null, NULL }, @@ -229,6 +225,8 @@ scanner_variable_t prefix_key_strings[]= { scanner_variable_t distribution_strings[]= { { ARRAY, make_scanner_string("--DISTRIBUTION=consistent"), scanner_string_null, NULL }, + { ARRAY, make_scanner_string("--DISTRIBUTION=consistent,CRC"), scanner_string_null, NULL }, + { ARRAY, make_scanner_string("--DISTRIBUTION=consistent,MD5"), scanner_string_null, NULL }, { ARRAY, make_scanner_string("--DISTRIBUTION=random"), scanner_string_null, __check_distribution_RANDOM }, { ARRAY, make_scanner_string("--DISTRIBUTION=modula"), scanner_string_null, NULL }, { NIL, scanner_string_null, scanner_string_null, NULL} -- 2.30.2