Merge in Ubuntu fixes.
[m6w6/libmemcached] / libmemcached / options / parser.cc
index fc08ed816c857af8d765a33088e0d5976fae8c26..839444ba74edca58894b9a6d8b154c4e3ff89592 100644 (file)
 #line 36 "libmemcached/options/parser.yy"
 
 
-#include <config.h>
-
-#include <stdint.h>
-
 #include <libmemcached/common.h>
+#include <libmemcached/options.hpp>
+
 #include <libmemcached/options/context.h>
-#include <libmemcached/options/string.h>
 #include <libmemcached/options/symbol.h>
 #include <libmemcached/options/scanner.h>
 
+#include <iostream>
+
 #pragma GCC diagnostic ignored "-Wold-style-cast"
 
 int conf_lex(YYSTYPE* lvalp, void* scanner);
@@ -103,7 +102,7 @@ inline void config_error(Context *context, yyscan_t *scanner, const char *error)
 
 
 /* Line 189 of yacc.c  */
-#line 107 "libmemcached/options/parser.cc"
+#line 106 "libmemcached/options/parser.cc"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -139,65 +138,66 @@ inline void config_error(Context *context, yyscan_t *scanner, const char *error)
      CONFIGURE_FILE = 264,
      EMPTY_LINE = 265,
      SERVER = 266,
-     SERVERS = 267,
-     SERVERS_OPTION = 268,
-     UNKNOWN_OPTION = 269,
-     UNKNOWN = 270,
-     BINARY_PROTOCOL = 271,
-     BUFFER_REQUESTS = 272,
-     CONNECT_TIMEOUT = 273,
-     DISTRIBUTION = 274,
-     HASH = 275,
-     HASH_WITH_NAMESPACE = 276,
-     IO_BYTES_WATERMARK = 277,
-     IO_KEY_PREFETCH = 278,
-     IO_MSG_WATERMARK = 279,
-     KETAMA_HASH = 280,
-     KETAMA_WEIGHTED = 281,
-     NOREPLY = 282,
-     NUMBER_OF_REPLICAS = 283,
-     POLL_TIMEOUT = 284,
-     RANDOMIZE_REPLICA_READ = 285,
-     RCV_TIMEOUT = 286,
-     REMOVE_FAILED_SERVERS = 287,
-     RETRY_TIMEOUT = 288,
-     SND_TIMEOUT = 289,
-     SOCKET_RECV_SIZE = 290,
-     SOCKET_SEND_SIZE = 291,
-     SORT_HOSTS = 292,
-     SUPPORT_CAS = 293,
-     USER_DATA = 294,
-     USE_UDP = 295,
-     VERIFY_KEY = 296,
-     _TCP_KEEPALIVE = 297,
-     _TCP_KEEPIDLE = 298,
-     _TCP_NODELAY = 299,
-     NAMESPACE = 300,
-     POOL_MIN = 301,
-     POOL_MAX = 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,
-     FLOAT = 317,
-     NUMBER = 318,
-     PORT = 319,
-     WEIGHT_START = 320,
-     IPADDRESS = 321,
-     HOSTNAME = 322,
-     STRING = 323,
-     QUOTED_STRING = 324,
-     FILE_PATH = 325
+     SOCKET = 267,
+     SERVERS = 268,
+     SERVERS_OPTION = 269,
+     UNKNOWN_OPTION = 270,
+     UNKNOWN = 271,
+     BINARY_PROTOCOL = 272,
+     BUFFER_REQUESTS = 273,
+     CONNECT_TIMEOUT = 274,
+     DISTRIBUTION = 275,
+     HASH = 276,
+     HASH_WITH_NAMESPACE = 277,
+     IO_BYTES_WATERMARK = 278,
+     IO_KEY_PREFETCH = 279,
+     IO_MSG_WATERMARK = 280,
+     KETAMA_HASH = 281,
+     KETAMA_WEIGHTED = 282,
+     NOREPLY = 283,
+     NUMBER_OF_REPLICAS = 284,
+     POLL_TIMEOUT = 285,
+     RANDOMIZE_REPLICA_READ = 286,
+     RCV_TIMEOUT = 287,
+     REMOVE_FAILED_SERVERS = 288,
+     RETRY_TIMEOUT = 289,
+     SND_TIMEOUT = 290,
+     SOCKET_RECV_SIZE = 291,
+     SOCKET_SEND_SIZE = 292,
+     SORT_HOSTS = 293,
+     SUPPORT_CAS = 294,
+     USER_DATA = 295,
+     USE_UDP = 296,
+     VERIFY_KEY = 297,
+     _TCP_KEEPALIVE = 298,
+     _TCP_KEEPIDLE = 299,
+     _TCP_NODELAY = 300,
+     NAMESPACE = 301,
+     POOL_MIN = 302,
+     POOL_MAX = 303,
+     MD5 = 304,
+     CRC = 305,
+     FNV1_64 = 306,
+     FNV1A_64 = 307,
+     FNV1_32 = 308,
+     FNV1A_32 = 309,
+     HSIEH = 310,
+     MURMUR = 311,
+     JENKINS = 312,
+     CONSISTENT = 313,
+     MODULA = 314,
+     RANDOM = 315,
+     TRUE = 316,
+     FALSE = 317,
+     FLOAT = 318,
+     NUMBER = 319,
+     PORT = 320,
+     WEIGHT_START = 321,
+     IPADDRESS = 322,
+     HOSTNAME = 323,
+     STRING = 324,
+     QUOTED_STRING = 325,
+     FILE_PATH = 326
    };
 #endif
 
@@ -427,22 +427,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  69
+#define YYFINAL  71
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   73
+#define YYLAST   74
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  74
+#define YYNTOKENS  75
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  12
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  66
+#define YYNRULES  67
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  82
+#define YYNSTATES  85
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   325
+#define YYMAXUTOK   326
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -453,10 +453,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,    73,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    62,     2,     2,     2,     2,     2,
+       2,     2,    74,     2,     2,     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,    63,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,    64,     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,
@@ -481,8 +481,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,    64,    65,    66,
-      67,    68,    69,    70,    71,    72
+      55,    56,    57,    58,    59,    60,    61,    62,    65,    66,
+      67,    68,    69,    70,    71,    72,    73
 };
 
 #if YYDEBUG
@@ -491,45 +491,45 @@ static const yytype_uint8 yytranslate[] =
 static const yytype_uint8 yyprhs[] =
 {
        0,     0,     3,     5,     9,    11,    13,    15,    17,    19,
-      21,    23,    27,    32,    37,    40,    43,    46,    48,    51,
-      54,    59,    62,    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,
-     118,   120,   121,   123,   125,   127,   129,   131,   133,   135,
-     137,   139,   141,   143,   145,   147,   149
+      21,    23,    27,    32,    37,    41,    44,    47,    50,    52,
+      55,    58,    63,    66,    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,   119,
+     121,   122,   124,   125,   127,   129,   131,   133,   135,   137,
+     139,   141,   143,   145,   147,   149,   151,   153
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      75,     0,    -1,    76,    -1,    75,    73,    76,    -1,    77,
+      76,     0,    -1,    77,    -1,    76,    74,    77,    -1,    78,
       -1,     3,    -1,    10,    -1,     4,    -1,     5,    -1,     6,
-      -1,     7,    -1,     8,    73,    84,    -1,    11,    69,    81,
-      82,    -1,    11,    68,    81,    82,    -1,     9,    84,    -1,
-      46,    65,    -1,    47,    65,    -1,    78,    -1,    45,    84,
-      -1,    19,    85,    -1,    19,    85,    62,    83,    -1,    20,
-      83,    -1,    79,    65,    -1,    80,    -1,    39,    -1,    32,
-      -1,    18,    -1,    24,    -1,    22,    -1,    23,    -1,    28,
-      -1,    29,    -1,    31,    -1,    33,    -1,    34,    -1,    35,
-      -1,    36,    -1,    16,    -1,    17,    -1,    21,    -1,    27,
-      -1,    30,    -1,    37,    -1,    38,    -1,    44,    -1,    42,
-      -1,    43,    -1,    40,    -1,    41,    -1,    -1,    66,    -1,
-      -1,    67,    -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
+      -1,     7,    -1,     8,    74,    85,    -1,    11,    70,    82,
+      83,    -1,    11,    69,    82,    83,    -1,    12,    85,    83,
+      -1,     9,    85,    -1,    47,    66,    -1,    48,    66,    -1,
+      79,    -1,    46,    85,    -1,    20,    86,    -1,    20,    86,
+      63,    84,    -1,    21,    84,    -1,    80,    66,    -1,    81,
+      -1,    40,    -1,    33,    -1,    19,    -1,    25,    -1,    23,
+      -1,    24,    -1,    29,    -1,    30,    -1,    32,    -1,    34,
+      -1,    35,    -1,    36,    -1,    37,    -1,    17,    -1,    18,
+      -1,    22,    -1,    28,    -1,    31,    -1,    38,    -1,    39,
+      -1,    45,    -1,    43,    -1,    44,    -1,    41,    -1,    42,
+      -1,    -1,    67,    -1,    -1,    68,    -1,    49,    -1,    50,
+      -1,    51,    -1,    52,    -1,    53,    -1,    54,    -1,    55,
+      -1,    56,    -1,    57,    -1,    71,    -1,    72,    -1,    58,
+      -1,    59,    -1,    60,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   156,   156,   157,   161,   163,   165,   167,   172,   177,
-     181,   185,   196,   204,   212,   216,   220,   224,   228,   235,
-     242,   253,   260,   267,   274,   280,   284,   288,   292,   296,
-     300,   304,   308,   312,   316,   320,   324,   331,   335,   339,
-     343,   347,   351,   355,   359,   363,   367,   371,   375,   382,
-     383,   388,   389,   394,   398,   402,   406,   410,   414,   418,
-     422,   426,   433,   437,   445,   449,   453
+       0,   158,   158,   159,   163,   165,   167,   169,   174,   179,
+     183,   187,   198,   206,   214,   221,   225,   229,   233,   237,
+     244,   251,   262,   269,   276,   283,   289,   293,   297,   301,
+     305,   309,   313,   317,   321,   325,   329,   333,   340,   344,
+     348,   352,   356,   360,   364,   368,   372,   376,   380,   384,
+     391,   392,   397,   398,   403,   407,   411,   415,   419,   423,
+     427,   431,   435,   442,   446,   453,   457,   461
 };
 #endif
 
@@ -540,7 +540,7 @@ static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "COMMENT", "END", "ERROR", "RESET",
   "PARSER_DEBUG", "INCLUDE", "CONFIGURE_FILE", "EMPTY_LINE", "SERVER",
-  "SERVERS", "SERVERS_OPTION", "UNKNOWN_OPTION", "UNKNOWN",
+  "SOCKET", "SERVERS", "SERVERS_OPTION", "UNKNOWN_OPTION", "UNKNOWN",
   "BINARY_PROTOCOL", "BUFFER_REQUESTS", "CONNECT_TIMEOUT", "DISTRIBUTION",
   "HASH", "HASH_WITH_NAMESPACE", "IO_BYTES_WATERMARK", "IO_KEY_PREFETCH",
   "IO_MSG_WATERMARK", "KETAMA_HASH", "KETAMA_WEIGHTED", "NOREPLY",
@@ -570,33 +570,33 @@ 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,    44,    61,   317,   318,   319,   320,   321,   322,
-     323,   324,   325,    32
+     315,   316,   317,    44,    61,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,    32
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    74,    75,    75,    76,    76,    76,    76,    76,    76,
-      76,    76,    77,    77,    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,    81,
-      81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
-      83,    83,    84,    84,    85,    85,    85
+       0,    75,    76,    76,    77,    77,    77,    77,    77,    77,
+      77,    77,    78,    78,    78,    78,    78,    78,    78,    79,
+      79,    79,    79,    79,    79,    79,    80,    80,    80,    80,
+      80,    80,    80,    80,    80,    80,    80,    80,    81,    81,
+      81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
+      82,    82,    83,    83,    84,    84,    84,    84,    84,    84,
+      84,    84,    84,    85,    85,    86,    86,    86
 };
 
 /* 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,     4,     4,     2,     2,     2,     1,     2,     2,
-       4,     2,     2,     1,     1,     1,     1,     1,     1,     1,
+       1,     3,     4,     4,     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,     0,
-       1,     0,     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,
+       0,     1,     0,     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
@@ -605,21 +605,21 @@ static const yytype_uint8 yyr2[] =
 static const yytype_uint8 yydefact[] =
 {
        0,     5,     7,     8,     9,    10,     0,     0,     6,     0,
-      37,    38,    26,     0,     0,    39,    28,    29,    27,    40,
-      30,    31,    41,    32,    25,    33,    34,    35,    36,    42,
-      43,    24,    47,    48,    45,    46,    44,     0,     0,     0,
-       0,     2,     4,    17,     0,    23,     0,    62,    63,    14,
-      49,    49,    64,    65,    66,    19,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,    21,    18,    15,    16,     1,
-       0,    22,    11,    50,    51,    51,     0,     3,    52,    13,
-      12,    20
+       0,    38,    39,    27,     0,     0,    40,    29,    30,    28,
+      41,    31,    32,    42,    33,    26,    34,    35,    36,    37,
+      43,    44,    25,    48,    49,    46,    47,    45,     0,     0,
+       0,     0,     2,     4,    18,     0,    24,     0,    63,    64,
+      15,    50,    50,    52,    65,    66,    67,    20,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    22,    19,    16,
+      17,     1,     0,    23,    11,    51,    52,    52,    53,    14,
+       0,     3,    13,    12,    21
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,    40,    41,    42,    43,    44,    45,    74,    79,    65,
-      49,    55
+      -1,    41,    42,    43,    44,    45,    46,    76,    79,    67,
+      50,    57
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -627,22 +627,22 @@ static const yytype_int8 yydefgoto[] =
 #define YYPACT_NINF -61
 static const yytype_int8 yypact[] =
 {
-      -2,   -61,   -61,   -61,   -61,   -61,   -60,   -23,   -61,   -45,
-     -61,   -61,   -61,   -47,     8,   -61,   -61,   -61,   -61,   -61,
+      -2,   -61,   -61,   -61,   -61,   -61,   -60,   -24,   -61,   -20,
+     -24,   -61,   -61,   -61,   -47,    13,   -61,   -61,   -61,   -61,
      -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,
-     -61,   -61,   -61,   -61,   -61,   -61,   -61,   -23,   -16,   -15,
-       0,   -61,   -61,   -61,   -14,   -61,   -23,   -61,   -61,   -61,
-     -13,   -13,   -61,   -61,   -61,   -10,   -61,   -61,   -61,   -61,
+     -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,   -24,   -41,
+     -15,     0,   -61,   -61,   -61,   -11,   -61,   -24,   -61,   -61,
+     -61,   -10,   -10,   -12,   -61,   -61,   -61,    -5,   -61,   -61,
      -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,   -61,
-      -2,   -61,   -61,   -61,    -1,    -1,     8,   -61,   -61,   -61,
-     -61,   -61
+     -61,   -61,    -2,   -61,   -61,   -61,   -12,   -12,   -61,   -61,
+      13,   -61,   -61,   -61,   -61
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -61,   -61,    -5,   -61,   -61,   -61,   -61,     3,    -8,    -7,
-       9,   -61
+     -61,   -61,   -13,   -61,   -61,   -61,   -61,     8,   -23,    -9,
+      14,   -61
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -652,26 +652,26 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint8 yytable[] =
 {
-      69,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      52,    53,    54,    46,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    50,    51,    19,    20,    21,    22,    23,
+      71,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    54,    55,    56,    47,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    53,    69,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    66,    47,    48,    67,
-      68,    71,    76,    73,    75,    72,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    77,    78,    80,     0,    81,
-       0,     0,     0,    70
+      34,    35,    36,    37,    38,    39,    40,    48,    49,    51,
+      52,    70,    68,    82,    83,    73,    78,    75,    80,    81,
+      77,    74,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    84,     0,     0,    72
 };
 
 static const yytype_int8 yycheck[] =
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      57,    58,    59,    73,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    68,    69,    27,    28,    29,    30,    31,
+      12,    58,    59,    60,    74,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    10,    66,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    37,    70,    71,    65,
-      65,    65,    62,    66,    51,    46,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    70,    67,    75,    -1,    76,
-      -1,    -1,    -1,    73
+      42,    43,    44,    45,    46,    47,    48,    71,    72,    69,
+      70,    66,    38,    76,    77,    66,    68,    67,    63,    72,
+      52,    47,    49,    50,    51,    52,    53,    54,    55,    56,
+      57,    80,    -1,    -1,    74
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -679,14 +679,14 @@ static const yytype_int8 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    27,
+      12,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       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,
-      68,    69,    57,    58,    59,    85,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    83,    84,    65,    65,     0,
-      73,    65,    84,    66,    81,    81,    62,    76,    67,    82,
-      82,    83
+      48,    76,    77,    78,    79,    80,    81,    74,    71,    72,
+      85,    69,    70,    85,    58,    59,    60,    86,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    84,    85,    66,
+      66,     0,    74,    66,    85,    67,    82,    82,    68,    83,
+      63,    77,    83,    83,    84
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1521,28 +1521,28 @@ yyreduce:
         case 4:
 
 /* Line 1464 of yacc.c  */
-#line 162 "libmemcached/options/parser.yy"
+#line 164 "libmemcached/options/parser.yy"
     { ;}
     break;
 
   case 5:
 
 /* Line 1464 of yacc.c  */
-#line 164 "libmemcached/options/parser.yy"
+#line 166 "libmemcached/options/parser.yy"
     { ;}
     break;
 
   case 6:
 
 /* Line 1464 of yacc.c  */
-#line 166 "libmemcached/options/parser.yy"
+#line 168 "libmemcached/options/parser.yy"
     { ;}
     break;
 
   case 7:
 
 /* Line 1464 of yacc.c  */
-#line 168 "libmemcached/options/parser.yy"
+#line 170 "libmemcached/options/parser.yy"
     {
             context->set_end();
             YYACCEPT;
@@ -1552,7 +1552,7 @@ yyreduce:
   case 8:
 
 /* Line 1464 of yacc.c  */
-#line 173 "libmemcached/options/parser.yy"
+#line 175 "libmemcached/options/parser.yy"
     {
             context->rc= MEMCACHED_PARSE_USER_ERROR;
             parser_abort(context, NULL);
@@ -1562,7 +1562,7 @@ yyreduce:
   case 9:
 
 /* Line 1464 of yacc.c  */
-#line 178 "libmemcached/options/parser.yy"
+#line 180 "libmemcached/options/parser.yy"
     {
             memcached_reset(context->memc);
           ;}
@@ -1571,7 +1571,7 @@ yyreduce:
   case 10:
 
 /* Line 1464 of yacc.c  */
-#line 182 "libmemcached/options/parser.yy"
+#line 184 "libmemcached/options/parser.yy"
     {
             yydebug= 1;
           ;}
@@ -1580,9 +1580,9 @@ yyreduce:
   case 11:
 
 /* Line 1464 of yacc.c  */
-#line 186 "libmemcached/options/parser.yy"
+#line 188 "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)
+            if ((context->rc= memcached_parse_configure_file(*context->memc, (yyvsp[(3) - (3)].string).c_str, (yyvsp[(3) - (3)].string).size)) != MEMCACHED_SUCCESS)
             {
               parser_abort(context, NULL);
             }
@@ -1592,9 +1592,9 @@ yyreduce:
   case 12:
 
 /* Line 1464 of yacc.c  */
-#line 197 "libmemcached/options/parser.yy"
+#line 199 "libmemcached/options/parser.yy"
     {
-            if ((context->rc= memcached_server_add_with_weight(context->memc, (yyvsp[(2) - (4)].server).c_str, (yyvsp[(2) - (4)].server).port, (yyvsp[(2) - (4)].server).weight)) != MEMCACHED_SUCCESS)
+            if (memcached_failed(context->rc= memcached_server_add_with_weight(context->memc, (yyvsp[(2) - (4)].server).c_str, (yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].number))))
             {
               parser_abort(context, NULL);
             }
@@ -1605,9 +1605,9 @@ yyreduce:
   case 13:
 
 /* Line 1464 of yacc.c  */
-#line 205 "libmemcached/options/parser.yy"
+#line 207 "libmemcached/options/parser.yy"
     {
-            if ((context->rc= memcached_server_add_with_weight(context->memc, (yyvsp[(2) - (4)].server).c_str, (yyvsp[(2) - (4)].server).port, (yyvsp[(2) - (4)].server).weight)) != MEMCACHED_SUCCESS)
+            if (memcached_failed(context->rc= memcached_server_add_with_weight(context->memc, (yyvsp[(2) - (4)].server).c_str, (yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].number))))
             {
               parser_abort(context, NULL);
             }
@@ -1618,46 +1618,58 @@ yyreduce:
   case 14:
 
 /* Line 1464 of yacc.c  */
-#line 213 "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);
+            if (memcached_failed(context->rc= memcached_server_add_unix_socket_with_weight(context->memc, (yyvsp[(2) - (3)].string).c_str, (yyvsp[(3) - (3)].number))))
+            {
+              parser_abort(context, NULL);
+            }
           ;}
     break;
 
   case 15:
 
 /* Line 1464 of yacc.c  */
-#line 217 "libmemcached/options/parser.yy"
+#line 222 "libmemcached/options/parser.yy"
     {
-            context->memc->configure.initial_pool_size= (yyvsp[(2) - (2)].number);
+            memcached_set_configuration_file(context->memc, (yyvsp[(2) - (2)].string).c_str, (yyvsp[(2) - (2)].string).size);
           ;}
     break;
 
   case 16:
 
 /* Line 1464 of yacc.c  */
-#line 221 "libmemcached/options/parser.yy"
+#line 226 "libmemcached/options/parser.yy"
+    {
+            context->memc->configure.initial_pool_size= (yyvsp[(2) - (2)].number);
+          ;}
+    break;
+
+  case 17:
+
+/* Line 1464 of yacc.c  */
+#line 230 "libmemcached/options/parser.yy"
     {
             context->memc->configure.max_pool_size= (yyvsp[(2) - (2)].number);
           ;}
     break;
 
-  case 18:
+  case 19:
 
 /* Line 1464 of yacc.c  */
-#line 229 "libmemcached/options/parser.yy"
+#line 238 "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)
+            if ((context->rc= memcached_set_namespace(context->memc, (yyvsp[(2) - (2)].string).c_str, (yyvsp[(2) - (2)].string).size)) != MEMCACHED_SUCCESS)
             {
               parser_abort(context, NULL);;
             }
           ;}
     break;
 
-  case 19:
+  case 20:
 
 /* Line 1464 of yacc.c  */
-#line 236 "libmemcached/options/parser.yy"
+#line 245 "libmemcached/options/parser.yy"
     {
             if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (2)].distribution))) != MEMCACHED_SUCCESS)
             {
@@ -1666,10 +1678,10 @@ yyreduce:
           ;}
     break;
 
-  case 20:
+  case 21:
 
 /* Line 1464 of yacc.c  */
-#line 243 "libmemcached/options/parser.yy"
+#line 252 "libmemcached/options/parser.yy"
     {
             if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_DISTRIBUTION, (yyvsp[(2) - (4)].distribution))) != MEMCACHED_SUCCESS)
             {
@@ -1682,10 +1694,10 @@ yyreduce:
           ;}
     break;
 
-  case 21:
+  case 22:
 
 /* Line 1464 of yacc.c  */
-#line 254 "libmemcached/options/parser.yy"
+#line 263 "libmemcached/options/parser.yy"
     {
             if ((context->rc= memcached_behavior_set(context->memc, MEMCACHED_BEHAVIOR_HASH, (yyvsp[(2) - (2)].hash))) != MEMCACHED_SUCCESS)
             {
@@ -1694,10 +1706,10 @@ yyreduce:
           ;}
     break;
 
-  case 22:
+  case 23:
 
 /* Line 1464 of yacc.c  */
-#line 261 "libmemcached/options/parser.yy"
+#line 270 "libmemcached/options/parser.yy"
     {
             if ((context->rc= memcached_behavior_set(context->memc, (yyvsp[(1) - (2)].behavior), (yyvsp[(2) - (2)].number))) != MEMCACHED_SUCCESS)
             {
@@ -1706,10 +1718,10 @@ yyreduce:
           ;}
     break;
 
-  case 23:
+  case 24:
 
 /* Line 1464 of yacc.c  */
-#line 268 "libmemcached/options/parser.yy"
+#line 277 "libmemcached/options/parser.yy"
     {
             if ((context->rc= memcached_behavior_set(context->memc, (yyvsp[(1) - (1)].behavior), true)) != MEMCACHED_SUCCESS)
             {
@@ -1718,380 +1730,379 @@ yyreduce:
           ;}
     break;
 
-  case 24:
+  case 25:
 
 /* Line 1464 of yacc.c  */
-#line 275 "libmemcached/options/parser.yy"
+#line 284 "libmemcached/options/parser.yy"
     {
           ;}
     break;
 
-  case 25:
+  case 26:
 
 /* Line 1464 of yacc.c  */
-#line 281 "libmemcached/options/parser.yy"
+#line 290 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS;
           ;}
     break;
 
-  case 26:
+  case 27:
 
 /* Line 1464 of yacc.c  */
-#line 285 "libmemcached/options/parser.yy"
+#line 294 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT;
           ;}
     break;
 
-  case 27:
+  case 28:
 
 /* Line 1464 of yacc.c  */
-#line 289 "libmemcached/options/parser.yy"
+#line 298 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK;
           ;}
     break;
 
-  case 28:
+  case 29:
 
 /* Line 1464 of yacc.c  */
-#line 293 "libmemcached/options/parser.yy"
+#line 302 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK;
           ;}
     break;
 
-  case 29:
+  case 30:
 
 /* Line 1464 of yacc.c  */
-#line 297 "libmemcached/options/parser.yy"
+#line 306 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH;
           ;}
     break;
 
-  case 30:
+  case 31:
 
 /* Line 1464 of yacc.c  */
-#line 301 "libmemcached/options/parser.yy"
+#line 310 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS;
           ;}
     break;
 
-  case 31:
+  case 32:
 
 /* Line 1464 of yacc.c  */
-#line 305 "libmemcached/options/parser.yy"
+#line 314 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_POLL_TIMEOUT;
           ;}
     break;
 
-  case 32:
+  case 33:
 
 /* Line 1464 of yacc.c  */
-#line 309 "libmemcached/options/parser.yy"
+#line 318 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_RCV_TIMEOUT;
           ;}
     break;
 
-  case 33:
+  case 34:
 
 /* Line 1464 of yacc.c  */
-#line 313 "libmemcached/options/parser.yy"
+#line 322 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_RETRY_TIMEOUT;
           ;}
     break;
 
-  case 34:
+  case 35:
 
 /* Line 1464 of yacc.c  */
-#line 317 "libmemcached/options/parser.yy"
+#line 326 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_SND_TIMEOUT;
           ;}
     break;
 
-  case 35:
+  case 36:
 
 /* Line 1464 of yacc.c  */
-#line 321 "libmemcached/options/parser.yy"
+#line 330 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE;
           ;}
     break;
 
-  case 36:
+  case 37:
 
 /* Line 1464 of yacc.c  */
-#line 325 "libmemcached/options/parser.yy"
+#line 334 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_SOCKET_SEND_SIZE;
           ;}
     break;
 
-  case 37:
+  case 38:
 
 /* Line 1464 of yacc.c  */
-#line 332 "libmemcached/options/parser.yy"
+#line 341 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_BINARY_PROTOCOL;
           ;}
     break;
 
-  case 38:
+  case 39:
 
 /* Line 1464 of yacc.c  */
-#line 336 "libmemcached/options/parser.yy"
+#line 345 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_BUFFER_REQUESTS;
           ;}
     break;
 
-  case 39:
+  case 40:
 
 /* Line 1464 of yacc.c  */
-#line 340 "libmemcached/options/parser.yy"
+#line 349 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY;
           ;}
     break;
 
-  case 40:
+  case 41:
 
 /* Line 1464 of yacc.c  */
-#line 344 "libmemcached/options/parser.yy"
+#line 353 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_NOREPLY;
           ;}
     break;
 
-  case 41:
+  case 42:
 
 /* Line 1464 of yacc.c  */
-#line 348 "libmemcached/options/parser.yy"
+#line 357 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_RANDOMIZE_REPLICA_READ;
           ;}
     break;
 
-  case 42:
+  case 43:
 
 /* Line 1464 of yacc.c  */
-#line 352 "libmemcached/options/parser.yy"
+#line 361 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_SORT_HOSTS;
           ;}
     break;
 
-  case 43:
+  case 44:
 
 /* Line 1464 of yacc.c  */
-#line 356 "libmemcached/options/parser.yy"
+#line 365 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_SUPPORT_CAS;
           ;}
     break;
 
-  case 44:
+  case 45:
 
 /* Line 1464 of yacc.c  */
-#line 360 "libmemcached/options/parser.yy"
+#line 369 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_NODELAY;
           ;}
     break;
 
-  case 45:
+  case 46:
 
 /* Line 1464 of yacc.c  */
-#line 364 "libmemcached/options/parser.yy"
+#line 373 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_KEEPALIVE;
           ;}
     break;
 
-  case 46:
+  case 47:
 
 /* Line 1464 of yacc.c  */
-#line 368 "libmemcached/options/parser.yy"
+#line 377 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_TCP_KEEPIDLE;
           ;}
     break;
 
-  case 47:
+  case 48:
 
 /* Line 1464 of yacc.c  */
-#line 372 "libmemcached/options/parser.yy"
+#line 381 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_USE_UDP;
           ;}
     break;
 
-  case 48:
+  case 49:
 
 /* Line 1464 of yacc.c  */
-#line 376 "libmemcached/options/parser.yy"
+#line 385 "libmemcached/options/parser.yy"
     {
             (yyval.behavior)= MEMCACHED_BEHAVIOR_VERIFY_KEY;
           ;}
     break;
 
-  case 49:
+  case 50:
 
 /* Line 1464 of yacc.c  */
-#line 382 "libmemcached/options/parser.yy"
-    { ;}
+#line 391 "libmemcached/options/parser.yy"
+    { (yyval.number)= MEMCACHED_DEFAULT_PORT;;}
     break;
 
-  case 50:
+  case 51:
 
 /* Line 1464 of yacc.c  */
-#line 384 "libmemcached/options/parser.yy"
+#line 393 "libmemcached/options/parser.yy"
     { ;}
     break;
 
-  case 51:
+  case 52:
 
 /* Line 1464 of yacc.c  */
-#line 388 "libmemcached/options/parser.yy"
-    { ;}
+#line 397 "libmemcached/options/parser.yy"
+    { (yyval.number)= 1; ;}
     break;
 
-  case 52:
+  case 53:
 
 /* Line 1464 of yacc.c  */
-#line 390 "libmemcached/options/parser.yy"
+#line 399 "libmemcached/options/parser.yy"
     { ;}
     break;
 
-  case 53:
+  case 54:
 
 /* Line 1464 of yacc.c  */
-#line 395 "libmemcached/options/parser.yy"
+#line 404 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_MD5;
           ;}
     break;
 
-  case 54:
+  case 55:
 
 /* Line 1464 of yacc.c  */
-#line 399 "libmemcached/options/parser.yy"
+#line 408 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_CRC;
           ;}
     break;
 
-  case 55:
+  case 56:
 
 /* Line 1464 of yacc.c  */
-#line 403 "libmemcached/options/parser.yy"
+#line 412 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_FNV1_64;
           ;}
     break;
 
-  case 56:
+  case 57:
 
 /* Line 1464 of yacc.c  */
-#line 407 "libmemcached/options/parser.yy"
+#line 416 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_FNV1A_64;
           ;}
     break;
 
-  case 57:
+  case 58:
 
 /* Line 1464 of yacc.c  */
-#line 411 "libmemcached/options/parser.yy"
+#line 420 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_FNV1_32;
           ;}
     break;
 
-  case 58:
+  case 59:
 
 /* Line 1464 of yacc.c  */
-#line 415 "libmemcached/options/parser.yy"
+#line 424 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_FNV1A_32;
           ;}
     break;
 
-  case 59:
+  case 60:
 
 /* Line 1464 of yacc.c  */
-#line 419 "libmemcached/options/parser.yy"
+#line 428 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_HSIEH;
           ;}
     break;
 
-  case 60:
+  case 61:
 
 /* Line 1464 of yacc.c  */
-#line 423 "libmemcached/options/parser.yy"
+#line 432 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_MURMUR;
           ;}
     break;
 
-  case 61:
+  case 62:
 
 /* Line 1464 of yacc.c  */
-#line 427 "libmemcached/options/parser.yy"
+#line 436 "libmemcached/options/parser.yy"
     {
             (yyval.hash)= MEMCACHED_HASH_JENKINS;
           ;}
     break;
 
-  case 62:
+  case 63:
 
 /* Line 1464 of yacc.c  */
-#line 434 "libmemcached/options/parser.yy"
+#line 443 "libmemcached/options/parser.yy"
     {
             (yyval.string)= (yyvsp[(1) - (1)].string);
           ;}
     break;
 
-  case 63:
+  case 64:
 
 /* Line 1464 of yacc.c  */
-#line 438 "libmemcached/options/parser.yy"
+#line 447 "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 -2; // -2 removes the begin and end quote
+            (yyval.string)= (yyvsp[(1) - (1)].string);
           ;}
     break;
 
-  case 64:
+  case 65:
 
 /* Line 1464 of yacc.c  */
-#line 446 "libmemcached/options/parser.yy"
+#line 454 "libmemcached/options/parser.yy"
     {
             (yyval.distribution)= MEMCACHED_DISTRIBUTION_CONSISTENT;
           ;}
     break;
 
-  case 65:
+  case 66:
 
 /* Line 1464 of yacc.c  */
-#line 450 "libmemcached/options/parser.yy"
+#line 458 "libmemcached/options/parser.yy"
     {
             (yyval.distribution)= MEMCACHED_DISTRIBUTION_MODULA;
           ;}
     break;
 
-  case 66:
+  case 67:
 
 /* Line 1464 of yacc.c  */
-#line 454 "libmemcached/options/parser.yy"
+#line 462 "libmemcached/options/parser.yy"
     {
             (yyval.distribution)= MEMCACHED_DISTRIBUTION_RANDOM;
           ;}
@@ -2100,7 +2111,7 @@ yyreduce:
 
 
 /* Line 1464 of yacc.c  */
-#line 2104 "libmemcached/options/parser.cc"
+#line 2115 "libmemcached/options/parser.cc"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2312,7 +2323,7 @@ yyreturn:
 
 
 /* Line 1684 of yacc.c  */
-#line 459 "libmemcached/options/parser.yy"
+#line 467 "libmemcached/options/parser.yy"
  
 
 void Context::start()