httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From s.@apache.org
Subject svn commit: r1142165 - in /httpd/httpd/trunk/server: util_expr_parse.c util_expr_parse.h util_expr_scan.c
Date Sat, 02 Jul 2011 07:48:13 GMT
Author: sf
Date: Sat Jul  2 07:48:12 2011
New Revision: 1142165

URL: http://svn.apache.org/viewvc?rev=1142165&view=rev
Log:
Update auto-generated code

Modified:
    httpd/httpd/trunk/server/util_expr_parse.c
    httpd/httpd/trunk/server/util_expr_parse.h
    httpd/httpd/trunk/server/util_expr_scan.c

Modified: httpd/httpd/trunk/server/util_expr_parse.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util_expr_parse.c?rev=1142165&r1=1142164&r2=1142165&view=diff
==============================================================================
--- httpd/httpd/trunk/server/util_expr_parse.c (original)
+++ httpd/httpd/trunk/server/util_expr_parse.c Sat Jul  2 07:48:12 2011
@@ -111,38 +111,40 @@
    enum yytokentype {
      T_TRUE = 258,
      T_FALSE = 259,
-     T_ERROR = 260,
-     T_DIGIT = 261,
-     T_ID = 262,
-     T_STRING = 263,
-     T_REGEX = 264,
-     T_REGEX_I = 265,
-     T_REGEX_BACKREF = 266,
-     T_OP_UNARY = 267,
-     T_OP_BINARY = 268,
-     T_STR_BEGIN = 269,
-     T_STR_END = 270,
-     T_VAR_BEGIN = 271,
-     T_VAR_END = 272,
-     T_OP_EQ = 273,
-     T_OP_NE = 274,
-     T_OP_LT = 275,
-     T_OP_LE = 276,
-     T_OP_GT = 277,
-     T_OP_GE = 278,
-     T_OP_REG = 279,
-     T_OP_NRE = 280,
-     T_OP_IN = 281,
-     T_OP_STR_EQ = 282,
-     T_OP_STR_NE = 283,
-     T_OP_STR_LT = 284,
-     T_OP_STR_LE = 285,
-     T_OP_STR_GT = 286,
-     T_OP_STR_GE = 287,
-     T_OP_CONCAT = 288,
-     T_OP_OR = 289,
-     T_OP_AND = 290,
-     T_OP_NOT = 291
+     T_EXPR_BOOL = 260,
+     T_EXPR_STRING = 261,
+     T_ERROR = 262,
+     T_DIGIT = 263,
+     T_ID = 264,
+     T_STRING = 265,
+     T_REGEX = 266,
+     T_REGEX_I = 267,
+     T_REGEX_BACKREF = 268,
+     T_OP_UNARY = 269,
+     T_OP_BINARY = 270,
+     T_STR_BEGIN = 271,
+     T_STR_END = 272,
+     T_VAR_BEGIN = 273,
+     T_VAR_END = 274,
+     T_OP_EQ = 275,
+     T_OP_NE = 276,
+     T_OP_LT = 277,
+     T_OP_LE = 278,
+     T_OP_GT = 279,
+     T_OP_GE = 280,
+     T_OP_REG = 281,
+     T_OP_NRE = 282,
+     T_OP_IN = 283,
+     T_OP_STR_EQ = 284,
+     T_OP_STR_NE = 285,
+     T_OP_STR_LT = 286,
+     T_OP_STR_LE = 287,
+     T_OP_STR_GT = 288,
+     T_OP_STR_GE = 289,
+     T_OP_CONCAT = 290,
+     T_OP_OR = 291,
+     T_OP_AND = 292,
+     T_OP_NOT = 293
    };
 #endif
 
@@ -162,7 +164,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 166 "util_expr_parse.c"
+#line 168 "util_expr_parse.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -173,7 +175,7 @@ typedef union YYSTYPE
 /* Copy the second part of user declarations.  */
 
 /* Line 264 of yacc.c  */
-#line 99 "util_expr_parse.y"
+#line 102 "util_expr_parse.y"
 
 #include "util_expr_private.h"
 #define yyscanner ctx->scanner
@@ -182,7 +184,7 @@ int ap_expr_yylex(YYSTYPE *lvalp, void *
 
 
 /* Line 264 of yacc.c  */
-#line 186 "util_expr_parse.c"
+#line 188 "util_expr_parse.c"
 
 #ifdef short
 # undef short
@@ -395,22 +397,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  30
+#define YYFINAL  26
 /* YYLAST -- Last index in YYTABLE.  */
 #define YYLAST   122
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  43
+#define YYNTOKENS  45
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  14
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  50
+#define YYNRULES  51
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  91
+#define YYNSTATES  94
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   291
+#define YYMAXUTOK   293
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -422,15 +424,15 @@ static const yytype_uint8 yytranslate[] 
        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,
-      37,    38,     2,     2,    41,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    42,     2,
+      39,    40,     2,     2,    43,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    44,     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,     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,    39,     2,    40,     2,     2,     2,     2,
+       2,     2,     2,    41,     2,    42,     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,
@@ -447,7 +449,7 @@ static const yytype_uint8 yytranslate[] 
        5,     6,     7,     8,     9,    10,    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
+      35,    36,    37,    38
 };
 
 #if YYDEBUG
@@ -455,45 +457,45 @@ static const yytype_uint8 yytranslate[] 
    YYRHS.  */
 static const yytype_uint8 yyprhs[] =
 {
-       0,     0,     3,     5,     7,     9,    11,    14,    18,    22,
-      24,    27,    31,    35,    39,    43,    47,    51,    55,    59,
-      63,    67,    71,    75,    79,    83,    87,    91,    95,    97,
-     101,   103,   107,   110,   112,   114,   116,   118,   122,   128,
-     130,   134,   136,   138,   140,   144,   147,   149,   151,   153,
-     158
+       0,     0,     3,     6,     9,    11,    13,    15,    18,    22,
+      26,    28,    31,    35,    39,    43,    47,    51,    55,    59,
+      63,    67,    71,    75,    79,    83,    87,    91,    95,    99,
+     101,   105,   107,   111,   114,   116,   118,   120,   122,   126,
+     132,   134,   138,   140,   142,   144,   148,   151,   153,   155,
+     157,   162
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      44,     0,    -1,    45,    -1,     5,    -1,     3,    -1,     4,
-      -1,    36,    45,    -1,    45,    34,    45,    -1,    45,    35,
-      45,    -1,    46,    -1,    12,    52,    -1,    52,    13,    52,
-      -1,    37,    45,    38,    -1,    52,    18,    52,    -1,    52,
-      19,    52,    -1,    52,    20,    52,    -1,    52,    21,    52,
-      -1,    52,    22,    52,    -1,    52,    23,    52,    -1,    52,
-      27,    52,    -1,    52,    28,    52,    -1,    52,    29,    52,
-      -1,    52,    30,    52,    -1,    52,    31,    52,    -1,    52,
-      32,    52,    -1,    52,    26,    47,    -1,    52,    24,    53,
-      -1,    52,    25,    53,    -1,    55,    -1,    39,    48,    40,
-      -1,    52,    -1,    48,    41,    52,    -1,    49,    50,    -1,
-      50,    -1,     8,    -1,    51,    -1,    54,    -1,    16,     7,
-      17,    -1,    16,     7,    42,    49,    17,    -1,     6,    -1,
-      52,    33,    52,    -1,    51,    -1,    54,    -1,    56,    -1,
-      14,    49,    15,    -1,    14,    15,    -1,     9,    -1,    10,
-      -1,    11,    -1,     7,    37,    52,    38,    -1,     7,    37,
-      52,    38,    -1
+      46,     0,    -1,     5,    47,    -1,     6,    51,    -1,     7,
+      -1,     3,    -1,     4,    -1,    38,    47,    -1,    47,    36,
+      47,    -1,    47,    37,    47,    -1,    48,    -1,    14,    54,
+      -1,    54,    15,    54,    -1,    39,    47,    40,    -1,    54,
+      20,    54,    -1,    54,    21,    54,    -1,    54,    22,    54,
+      -1,    54,    23,    54,    -1,    54,    24,    54,    -1,    54,
+      25,    54,    -1,    54,    29,    54,    -1,    54,    30,    54,
+      -1,    54,    31,    54,    -1,    54,    32,    54,    -1,    54,
+      33,    54,    -1,    54,    34,    54,    -1,    54,    28,    49,
+      -1,    54,    26,    55,    -1,    54,    27,    55,    -1,    57,
+      -1,    41,    50,    42,    -1,    54,    -1,    50,    43,    54,
+      -1,    51,    52,    -1,    52,    -1,    10,    -1,    53,    -1,
+      56,    -1,    18,     9,    19,    -1,    18,     9,    44,    51,
+      19,    -1,     8,    -1,    54,    35,    54,    -1,    53,    -1,
+      56,    -1,    58,    -1,    16,    51,    17,    -1,    16,    17,
+      -1,    11,    -1,    12,    -1,    13,    -1,     9,    39,    54,
+      40,    -1,     9,    39,    54,    40,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
-       0,   109,   109,   110,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   124,   125,   126,   127,   128,   129,   130,
-     131,   132,   133,   134,   135,   136,   137,   138,   141,   142,
-     145,   146,   149,   150,   153,   154,   155,   158,   159,   162,
-     163,   164,   165,   166,   167,   168,   171,   180,   191,   198,
-     201
+       0,   112,   112,   113,   114,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,   140,   141,   142,   145,
+     146,   149,   150,   153,   154,   157,   158,   159,   162,   163,
+     166,   167,   168,   169,   170,   171,   172,   175,   184,   195,
+     202,   205
 };
 #endif
 
@@ -502,16 +504,17 @@ static const yytype_uint8 yyrline[] =
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "T_TRUE", "T_FALSE", "T_ERROR",
-  "T_DIGIT", "T_ID", "T_STRING", "T_REGEX", "T_REGEX_I", "T_REGEX_BACKREF",
-  "T_OP_UNARY", "T_OP_BINARY", "T_STR_BEGIN", "T_STR_END", "T_VAR_BEGIN",
-  "T_VAR_END", "T_OP_EQ", "T_OP_NE", "T_OP_LT", "T_OP_LE", "T_OP_GT",
-  "T_OP_GE", "T_OP_REG", "T_OP_NRE", "T_OP_IN", "T_OP_STR_EQ",
-  "T_OP_STR_NE", "T_OP_STR_LT", "T_OP_STR_LE", "T_OP_STR_GT",
-  "T_OP_STR_GE", "T_OP_CONCAT", "T_OP_OR", "T_OP_AND", "T_OP_NOT", "'('",
-  "')'", "'{'", "'}'", "','", "':'", "$accept", "root", "expr",
-  "comparison", "wordlist", "words", "string", "strpart", "var", "word",
-  "regex", "backref", "lstfunccall", "strfunccall", 0
+  "$end", "error", "$undefined", "T_TRUE", "T_FALSE", "T_EXPR_BOOL",
+  "T_EXPR_STRING", "T_ERROR", "T_DIGIT", "T_ID", "T_STRING", "T_REGEX",
+  "T_REGEX_I", "T_REGEX_BACKREF", "T_OP_UNARY", "T_OP_BINARY",
+  "T_STR_BEGIN", "T_STR_END", "T_VAR_BEGIN", "T_VAR_END", "T_OP_EQ",
+  "T_OP_NE", "T_OP_LT", "T_OP_LE", "T_OP_GT", "T_OP_GE", "T_OP_REG",
+  "T_OP_NRE", "T_OP_IN", "T_OP_STR_EQ", "T_OP_STR_NE", "T_OP_STR_LT",
+  "T_OP_STR_LE", "T_OP_STR_GT", "T_OP_STR_GE", "T_OP_CONCAT", "T_OP_OR",
+  "T_OP_AND", "T_OP_NOT", "'('", "')'", "'{'", "'}'", "','", "':'",
+  "$accept", "root", "expr", "comparison", "wordlist", "words", "string",
+  "strpart", "var", "word", "regex", "backref", "lstfunccall",
+  "strfunccall", 0
 };
 #endif
 
@@ -523,31 +526,31 @@ static const yytype_uint16 yytoknum[] =
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,    40,    41,   123,
-     125,    44,    58
+     285,   286,   287,   288,   289,   290,   291,   292,   293,    40,
+      41,   123,   125,    44,    58
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    43,    44,    44,    45,    45,    45,    45,    45,    45,
-      45,    45,    45,    46,    46,    46,    46,    46,    46,    46,
-      46,    46,    46,    46,    46,    46,    46,    46,    47,    47,
-      48,    48,    49,    49,    50,    50,    50,    51,    51,    52,
-      52,    52,    52,    52,    52,    52,    53,    53,    54,    55,
-      56
+       0,    45,    46,    46,    46,    47,    47,    47,    47,    47,
+      47,    47,    47,    47,    48,    48,    48,    48,    48,    48,
+      48,    48,    48,    48,    48,    48,    48,    48,    48,    49,
+      49,    50,    50,    51,    51,    52,    52,    52,    53,    53,
+      54,    54,    54,    54,    54,    54,    54,    55,    55,    56,
+      57,    58
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     1,     1,     1,     1,     2,     3,     3,     1,
-       2,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     1,     3,
-       1,     3,     2,     1,     1,     1,     1,     3,     5,     1,
-       3,     1,     1,     1,     3,     2,     1,     1,     1,     4,
-       4
+       0,     2,     2,     2,     1,     1,     1,     2,     3,     3,
+       1,     2,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
+       3,     1,     3,     2,     1,     1,     1,     1,     3,     5,
+       1,     3,     1,     1,     1,     3,     2,     1,     1,     1,
+       4,     4
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -555,47 +558,47 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     4,     5,     3,    39,     0,    48,     0,     0,     0,
-       0,     0,     0,     2,     9,    41,     0,    42,    43,     0,
-      10,    34,    45,     0,    33,    35,    36,     0,     6,     0,
-       1,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     4,     0,     5,     6,    40,     0,    49,
+       0,     0,     0,     0,     0,     2,    10,    42,     0,    43,
+      44,    35,     3,    34,    36,    37,     1,     0,    11,    46,
+       0,     0,     7,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    44,    32,    37,     0,    12,     7,     8,    11,    13,
-      14,    15,    16,    17,    18,    46,    47,    26,    27,     0,
-       0,    25,    28,    19,    20,    21,    22,    23,    24,    40,
-      50,     0,     0,     0,    30,    38,     0,    29,     0,    49,
-      31
+       0,     0,     0,    33,     0,    45,    38,     0,    13,     8,
+       9,    12,    14,    15,    16,    17,    18,    19,    47,    48,
+      27,    28,     0,     0,    26,    29,    20,    21,    22,    23,
+      24,    25,    41,    51,     0,     0,     0,    31,    39,     0,
+      30,     0,    50,    32
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,    12,    13,    14,    71,    83,    23,    24,    15,    16,
-      67,    17,    72,    18
+      -1,     4,    15,    16,    74,    86,    22,    23,    17,    18,
+      70,    19,    75,    20
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -29
+#define YYPACT_NINF -26
 static const yytype_int8 yypact[] =
 {
-      50,   -29,   -29,   -29,   -29,   -13,   -29,     9,    -6,    14,
-      85,    85,    48,   -28,   -29,   -29,    87,   -29,   -29,     9,
-      25,   -29,   -29,    36,   -29,   -29,   -29,    -9,   -29,    45,
-     -29,    85,    85,     9,     9,     9,     9,     9,     9,     9,
-      60,    60,     4,     9,     9,     9,     9,     9,     9,     9,
-     -16,   -29,   -29,   -29,    74,   -29,    43,   -29,    25,    25,
-      25,    25,    25,    25,    25,   -29,   -29,   -29,   -29,    23,
-       9,   -29,   -29,    25,    25,    25,    25,    25,    25,   -29,
-     -29,    57,     9,     5,    25,   -29,    34,   -29,     9,   -29,
-      25
+     113,    58,    41,   -26,     8,   -26,   -26,   -26,     0,   -26,
+      76,     6,     5,    58,    58,    51,   -26,   -26,    78,   -26,
+     -26,   -26,    41,   -26,   -26,   -26,   -26,    76,    17,   -26,
+     104,    -4,   -26,    13,    58,    58,    76,    76,    76,    76,
+      76,    76,    76,    15,    15,    -3,    76,    76,    76,    76,
+      76,    76,    76,   -26,   -10,   -26,   -26,    41,   -26,    23,
+     -26,    17,    17,    17,    17,    17,    17,    17,   -26,   -26,
+     -26,   -26,    24,    76,   -26,   -26,    17,    17,    17,    17,
+      17,    17,   -26,   -26,    -6,    76,   -25,    17,   -26,    29,
+     -26,    76,   -26,    17
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -29,   -29,     3,   -29,   -29,   -29,    17,   -22,    -5,    -7,
-      52,    -4,   -29,   -29
+     -26,   -26,    44,   -26,   -26,   -26,    -9,   -19,    -2,    -5,
+      26,    -1,   -26,   -26
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -605,52 +608,52 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint8 yytable[] =
 {
-      20,    52,    21,    25,    26,     6,    31,    32,    53,    22,
-       9,    69,    50,    28,    29,     4,     5,    49,    25,    26,
-       6,    27,    80,     8,    19,     9,    58,    59,    60,    61,
-      62,    63,    64,    54,    56,    57,    73,    74,    75,    76,
-      77,    78,    79,    70,    21,    87,    88,     6,    30,    25,
-      26,    51,     9,     1,     2,     3,     4,     5,    49,    52,
-      82,     6,     7,    84,     8,    21,     9,    49,     6,    65,
-      66,    81,    89,     9,    85,    86,    25,    26,    32,    31,
-      32,    90,    21,    55,     0,     6,    10,    11,     1,     2,
-       9,     4,     5,    68,     0,     0,     6,     7,     0,     8,
-      33,     9,     0,     0,     0,    34,    35,    36,    37,    38,
+      24,    25,    30,    53,    21,    28,    72,     9,    26,    24,
+      25,    53,    12,    88,    31,    56,    21,    90,    91,     9,
+      24,    25,    54,    29,    12,    52,    68,    69,    24,    25,
+      83,    61,    62,    63,    64,    65,    66,    67,    73,    27,
+      57,    76,    77,    78,    79,    80,    81,    82,    84,    34,
+      35,    21,    52,    58,     9,    24,    25,    32,    33,    12,
+      35,     5,     6,    85,    52,    53,     7,     8,    87,    92,
+      71,     9,    10,     0,    11,     0,    12,     0,    59,    60,
+      89,     0,    24,    25,     7,     8,    93,    34,    35,     9,
+       0,     0,    11,    36,    12,     0,    13,    14,    37,    38,
       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    10,    11
+      49,    50,    51,    52,    21,     0,     0,     9,     1,     2,
+       3,    55,    12
 };
 
 static const yytype_int8 yycheck[] =
 {
-       7,    23,     8,     8,     8,    11,    34,    35,    17,    15,
-      16,     7,    19,    10,    11,     6,     7,    33,    23,    23,
-      11,     7,    38,    14,    37,    16,    33,    34,    35,    36,
-      37,    38,    39,    42,    31,    32,    43,    44,    45,    46,
-      47,    48,    49,    39,     8,    40,    41,    11,     0,    54,
-      54,    15,    16,     3,     4,     5,     6,     7,    33,    81,
-      37,    11,    12,    70,    14,     8,    16,    33,    11,     9,
-      10,    54,    38,    16,    17,    82,    81,    81,    35,    34,
-      35,    88,     8,    38,    -1,    11,    36,    37,     3,     4,
-      16,     6,     7,    41,    -1,    -1,    11,    12,    -1,    14,
-      13,    16,    -1,    -1,    -1,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    36,    37
+       2,     2,    11,    22,    10,    10,     9,    13,     0,    11,
+      11,    30,    18,    19,     9,    19,    10,    42,    43,    13,
+      22,    22,    27,    17,    18,    35,    11,    12,    30,    30,
+      40,    36,    37,    38,    39,    40,    41,    42,    41,    39,
+      44,    46,    47,    48,    49,    50,    51,    52,    57,    36,
+      37,    10,    35,    40,    13,    57,    57,    13,    14,    18,
+      37,     3,     4,    39,    35,    84,     8,     9,    73,    40,
+      44,    13,    14,    -1,    16,    -1,    18,    -1,    34,    35,
+      85,    -1,    84,    84,     8,     9,    91,    36,    37,    13,
+      -1,    -1,    16,    15,    18,    -1,    38,    39,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    10,    -1,    -1,    13,     5,     6,
+       7,    17,    18
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     3,     4,     5,     6,     7,    11,    12,    14,    16,
-      36,    37,    44,    45,    46,    51,    52,    54,    56,    37,
-      52,     8,    15,    49,    50,    51,    54,     7,    45,    45,
-       0,    34,    35,    13,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      52,    15,    50,    17,    42,    38,    45,    45,    52,    52,
-      52,    52,    52,    52,    52,     9,    10,    53,    53,     7,
-      39,    47,    55,    52,    52,    52,    52,    52,    52,    52,
-      38,    49,    37,    48,    52,    17,    52,    40,    41,    38,
-      52
+       0,     5,     6,     7,    46,     3,     4,     8,     9,    13,
+      14,    16,    18,    38,    39,    47,    48,    53,    54,    56,
+      58,    10,    51,    52,    53,    56,     0,    39,    54,    17,
+      51,     9,    47,    47,    36,    37,    15,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    52,    54,    17,    19,    44,    40,    47,
+      47,    54,    54,    54,    54,    54,    54,    54,    11,    12,
+      55,    55,     9,    41,    49,    57,    54,    54,    54,    54,
+      54,    54,    54,    40,    51,    39,    50,    54,    19,    54,
+      42,    43,    40,    54
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1469,315 +1472,322 @@ yyreduce:
         case 2:
 
 /* Line 1455 of yacc.c  */
-#line 109 "util_expr_parse.y"
-    { ctx->expr = (yyvsp[(1) - (1)].exVal); ;}
+#line 112 "util_expr_parse.y"
+    { ctx->expr = (yyvsp[(2) - (2)].exVal); ;}
     break;
 
   case 3:
 
 /* Line 1455 of yacc.c  */
-#line 110 "util_expr_parse.y"
-    { YYABORT; ;}
+#line 113 "util_expr_parse.y"
+    { ctx->expr = (yyvsp[(2) - (2)].exVal); ;}
     break;
 
   case 4:
 
 /* Line 1455 of yacc.c  */
-#line 113 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_True,        NULL, NULL, ctx); ;}
+#line 114 "util_expr_parse.y"
+    { YYABORT; ;}
     break;
 
   case 5:
 
 /* Line 1455 of yacc.c  */
-#line 114 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_False,       NULL, NULL, ctx); ;}
+#line 117 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_True,        NULL, NULL, ctx); ;}
     break;
 
   case 6:
 
 /* Line 1455 of yacc.c  */
-#line 115 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_Not,         (yyvsp[(2) - (2)].exVal),   NULL, ctx); ;}
+#line 118 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_False,       NULL, NULL, ctx); ;}
     break;
 
   case 7:
 
 /* Line 1455 of yacc.c  */
-#line 116 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_Or,          (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); ;}
+#line 119 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_Not,         (yyvsp[(2) - (2)].exVal),   NULL, ctx); ;}
     break;
 
   case 8:
 
 /* Line 1455 of yacc.c  */
-#line 117 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_And,         (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); ;}
+#line 120 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_Or,          (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); ;}
     break;
 
   case 9:
 
 /* Line 1455 of yacc.c  */
-#line 118 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_Comp,        (yyvsp[(1) - (1)].exVal),   NULL, ctx); ;}
+#line 121 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_And,         (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); ;}
     break;
 
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 119 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_unary_op_make(       (yyvsp[(1) - (2)].cpVal),   (yyvsp[(2) - (2)].exVal),   ctx); ;}
+#line 122 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_Comp,        (yyvsp[(1) - (1)].exVal),   NULL, ctx); ;}
     break;
 
   case 11:
 
 /* Line 1455 of yacc.c  */
-#line 120 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_binary_op_make((yyvsp[(2) - (3)].cpVal),   (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); ;}
+#line 123 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_unary_op_make(       (yyvsp[(1) - (2)].cpVal),   (yyvsp[(2) - (2)].exVal),   ctx); ;}
     break;
 
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 121 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); ;}
+#line 124 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_binary_op_make((yyvsp[(2) - (3)].cpVal),   (yyvsp[(1) - (3)].exVal),   (yyvsp[(3) - (3)].exVal),   ctx); ;}
     break;
 
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 124 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_EQ,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 125 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); ;}
     break;
 
   case 14:
 
 /* Line 1455 of yacc.c  */
-#line 125 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_NE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 128 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_EQ,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 15:
 
 /* Line 1455 of yacc.c  */
-#line 126 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_LT,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 129 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_NE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 16:
 
 /* Line 1455 of yacc.c  */
-#line 127 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_LE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 130 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_LT,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 17:
 
 /* Line 1455 of yacc.c  */
-#line 128 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_GT,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 131 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_LE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 18:
 
 /* Line 1455 of yacc.c  */
-#line 129 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_GE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 132 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_GT,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 130 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_STR_EQ,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 133 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_GE,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 131 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_STR_NE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 134 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_STR_EQ,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 132 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_STR_LT,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 135 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_STR_NE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 22:
 
 /* Line 1455 of yacc.c  */
-#line 133 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_STR_LE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 136 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_STR_LT,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 134 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_STR_GT,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 137 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_STR_LE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 135 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_STR_GE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 138 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_STR_GT,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 25:
 
 /* Line 1455 of yacc.c  */
-#line 136 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_IN,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 139 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_STR_GE,  (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 26:
 
 /* Line 1455 of yacc.c  */
-#line 137 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_REG,     (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 140 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_IN,      (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 138 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_NRE,     (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
+#line 141 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_REG,     (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 28:
 
 /* Line 1455 of yacc.c  */
-#line 141 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
+#line 142 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_NRE,     (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal), ctx); ;}
     break;
 
   case 29:
 
 /* Line 1455 of yacc.c  */
-#line 142 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); ;}
+#line 145 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 30:
 
 /* Line 1455 of yacc.c  */
-#line 145 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[(1) - (1)].exVal), NULL, ctx); ;}
+#line 146 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); ;}
     break;
 
   case 31:
 
 /* Line 1455 of yacc.c  */
-#line 146 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[(3) - (3)].exVal), (yyvsp[(1) - (3)].exVal),   ctx); ;}
+#line 149 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[(1) - (1)].exVal), NULL, ctx); ;}
     break;
 
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 149 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[(1) - (2)].exVal), (yyvsp[(2) - (2)].exVal), ctx); ;}
+#line 150 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_ListElement, (yyvsp[(3) - (3)].exVal), (yyvsp[(1) - (3)].exVal),   ctx); ;}
     break;
 
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 150 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
+#line 153 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[(1) - (2)].exVal), (yyvsp[(2) - (2)].exVal), ctx); ;}
     break;
 
   case 34:
 
 /* Line 1455 of yacc.c  */
-#line 153 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_String, (yyvsp[(1) - (1)].cpVal), NULL, ctx); ;}
+#line 154 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 35:
 
 /* Line 1455 of yacc.c  */
-#line 154 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
+#line 157 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_String, (yyvsp[(1) - (1)].cpVal), NULL, ctx); ;}
     break;
 
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 155 "util_expr_parse.y"
+#line 158 "util_expr_parse.y"
     { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 158 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_var_make((yyvsp[(2) - (3)].cpVal), ctx); ;}
+#line 159 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 38:
 
 /* Line 1455 of yacc.c  */
-#line 159 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_str_func_make((yyvsp[(2) - (5)].cpVal), (yyvsp[(4) - (5)].exVal), ctx); ;}
+#line 162 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_var_make((yyvsp[(2) - (3)].cpVal), ctx); ;}
     break;
 
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 162 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_Digit,  (yyvsp[(1) - (1)].cpVal), NULL, ctx); ;}
+#line 163 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_str_func_make((yyvsp[(2) - (5)].cpVal), (yyvsp[(4) - (5)].exVal), ctx); ;}
     break;
 
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 163 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal),   ctx); ;}
+#line 166 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_Digit,  (yyvsp[(1) - (1)].cpVal), NULL, ctx); ;}
     break;
 
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 164 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
+#line 167 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_Concat, (yyvsp[(1) - (3)].exVal), (yyvsp[(3) - (3)].exVal),   ctx); ;}
     break;
 
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 165 "util_expr_parse.y"
+#line 168 "util_expr_parse.y"
     { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 43:
 
 /* Line 1455 of yacc.c  */
-#line 166 "util_expr_parse.y"
+#line 169 "util_expr_parse.y"
     { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 167 "util_expr_parse.y"
-    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); ;}
+#line 170 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(1) - (1)].exVal); ;}
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 168 "util_expr_parse.y"
-    { (yyval.exVal) = ap_expr_make(op_String, "", NULL, ctx); ;}
+#line 171 "util_expr_parse.y"
+    { (yyval.exVal) = (yyvsp[(2) - (3)].exVal); ;}
     break;
 
   case 46:
 
 /* Line 1455 of yacc.c  */
-#line 171 "util_expr_parse.y"
+#line 172 "util_expr_parse.y"
+    { (yyval.exVal) = ap_expr_make(op_String, "", NULL, ctx); ;}
+    break;
+
+  case 47:
+
+/* Line 1455 of yacc.c  */
+#line 175 "util_expr_parse.y"
     {
                 ap_regex_t *regex;
                 if ((regex = ap_pregcomp(ctx->pool, (yyvsp[(1) - (1)].cpVal),
@@ -1789,10 +1799,10 @@ yyreduce:
             ;}
     break;
 
-  case 47:
+  case 48:
 
 /* Line 1455 of yacc.c  */
-#line 180 "util_expr_parse.y"
+#line 184 "util_expr_parse.y"
     {
                 ap_regex_t *regex;
                 if ((regex = ap_pregcomp(ctx->pool, (yyvsp[(1) - (1)].cpVal),
@@ -1804,10 +1814,10 @@ yyreduce:
             ;}
     break;
 
-  case 48:
+  case 49:
 
 /* Line 1455 of yacc.c  */
-#line 191 "util_expr_parse.y"
+#line 195 "util_expr_parse.y"
     {
                 int *n = apr_palloc(ctx->pool, sizeof(int));
                 *n = (yyvsp[(1) - (1)].num);
@@ -1815,24 +1825,24 @@ yyreduce:
             ;}
     break;
 
-  case 49:
+  case 50:
 
 /* Line 1455 of yacc.c  */
-#line 198 "util_expr_parse.y"
+#line 202 "util_expr_parse.y"
     { (yyval.exVal) = ap_expr_list_func_make((yyvsp[(1) - (4)].cpVal), (yyvsp[(3) - (4)].exVal), ctx); ;}
     break;
 
-  case 50:
+  case 51:
 
 /* Line 1455 of yacc.c  */
-#line 201 "util_expr_parse.y"
+#line 205 "util_expr_parse.y"
     { (yyval.exVal) = ap_expr_str_func_make((yyvsp[(1) - (4)].cpVal), (yyvsp[(3) - (4)].exVal), ctx); ;}
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 1836 "util_expr_parse.c"
+#line 1846 "util_expr_parse.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2044,7 +2054,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 204 "util_expr_parse.y"
+#line 208 "util_expr_parse.y"
 
 
 void yyerror(ap_expr_parse_ctx_t *ctx, char *s)

Modified: httpd/httpd/trunk/server/util_expr_parse.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util_expr_parse.h?rev=1142165&r1=1142164&r2=1142165&view=diff
==============================================================================
--- httpd/httpd/trunk/server/util_expr_parse.h (original)
+++ httpd/httpd/trunk/server/util_expr_parse.h Sat Jul  2 07:48:12 2011
@@ -41,38 +41,40 @@
    enum yytokentype {
      T_TRUE = 258,
      T_FALSE = 259,
-     T_ERROR = 260,
-     T_DIGIT = 261,
-     T_ID = 262,
-     T_STRING = 263,
-     T_REGEX = 264,
-     T_REGEX_I = 265,
-     T_REGEX_BACKREF = 266,
-     T_OP_UNARY = 267,
-     T_OP_BINARY = 268,
-     T_STR_BEGIN = 269,
-     T_STR_END = 270,
-     T_VAR_BEGIN = 271,
-     T_VAR_END = 272,
-     T_OP_EQ = 273,
-     T_OP_NE = 274,
-     T_OP_LT = 275,
-     T_OP_LE = 276,
-     T_OP_GT = 277,
-     T_OP_GE = 278,
-     T_OP_REG = 279,
-     T_OP_NRE = 280,
-     T_OP_IN = 281,
-     T_OP_STR_EQ = 282,
-     T_OP_STR_NE = 283,
-     T_OP_STR_LT = 284,
-     T_OP_STR_LE = 285,
-     T_OP_STR_GT = 286,
-     T_OP_STR_GE = 287,
-     T_OP_CONCAT = 288,
-     T_OP_OR = 289,
-     T_OP_AND = 290,
-     T_OP_NOT = 291
+     T_EXPR_BOOL = 260,
+     T_EXPR_STRING = 261,
+     T_ERROR = 262,
+     T_DIGIT = 263,
+     T_ID = 264,
+     T_STRING = 265,
+     T_REGEX = 266,
+     T_REGEX_I = 267,
+     T_REGEX_BACKREF = 268,
+     T_OP_UNARY = 269,
+     T_OP_BINARY = 270,
+     T_STR_BEGIN = 271,
+     T_STR_END = 272,
+     T_VAR_BEGIN = 273,
+     T_VAR_END = 274,
+     T_OP_EQ = 275,
+     T_OP_NE = 276,
+     T_OP_LT = 277,
+     T_OP_LE = 278,
+     T_OP_GT = 279,
+     T_OP_GE = 280,
+     T_OP_REG = 281,
+     T_OP_NRE = 282,
+     T_OP_IN = 283,
+     T_OP_STR_EQ = 284,
+     T_OP_STR_NE = 285,
+     T_OP_STR_LT = 286,
+     T_OP_STR_LE = 287,
+     T_OP_STR_GT = 288,
+     T_OP_STR_GE = 289,
+     T_OP_CONCAT = 290,
+     T_OP_OR = 291,
+     T_OP_AND = 292,
+     T_OP_NOT = 293
    };
 #endif
 
@@ -92,7 +94,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 96 "util_expr_parse.h"
+#line 98 "util_expr_parse.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */

Modified: httpd/httpd/trunk/server/util_expr_scan.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util_expr_scan.c?rev=1142165&r1=1142164&r2=1142165&view=diff
==============================================================================
--- httpd/httpd/trunk/server/util_expr_scan.c (original)
+++ httpd/httpd/trunk/server/util_expr_scan.c Sat Jul  2 07:48:12 2011
@@ -857,10 +857,26 @@ YY_DECL
   char *regex_ptr = NULL;
   char  regex_del = '\0';
 
+
+ /*
+  * Set initial state for string expressions
+  */
+  if (yyextra->at_start) {
+    yyextra->at_start = 0;
+    if (yyextra->flags & AP_EXPR_FLAG_STRING_RESULT) {
+        BEGIN(str);
+        return T_EXPR_STRING;
+    }
+    else {
+        return T_EXPR_BOOL;
+    }
+  }
+
+
  /*
   * Whitespaces
   */
-#line 864 "util_expr_scan.c"
+#line 880 "util_expr_scan.c"
 
     yylval = yylval_param;
 
@@ -944,7 +960,7 @@ do_action:	/* This label is used only to
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 81 "util_expr_scan.l"
+#line 97 "util_expr_scan.l"
 { 
     /* NOP */
 }
@@ -954,7 +970,7 @@ YY_RULE_SETUP
   */
 case 2:
 YY_RULE_SETUP
-#line 88 "util_expr_scan.l"
+#line 104 "util_expr_scan.l"
 {
     str_ptr = str_buf;
     str_del = yytext[0];
@@ -964,7 +980,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 94 "util_expr_scan.l"
+#line 110 "util_expr_scan.l"
 {
     if (yytext[0] == str_del) {
         if (YY_START == var) {
@@ -991,22 +1007,36 @@ YY_RULE_SETUP
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 116 "util_expr_scan.l"
+#line 132 "util_expr_scan.l"
 {
     PERROR("Unterminated string or variable");
 }
 	YY_BREAK
-case YY_STATE_EOF(str):
 case YY_STATE_EOF(var):
 case YY_STATE_EOF(vararg):
-#line 119 "util_expr_scan.l"
+#line 135 "util_expr_scan.l"
 {
     PERROR("Unterminated string or variable");
 }
 	YY_BREAK
+case YY_STATE_EOF(str):
+#line 138 "util_expr_scan.l"
+{
+    if (!(yyextra->flags & AP_EXPR_FLAG_STRING_RESULT)) {
+        PERROR("Unterminated string or variable");
+    }
+    else {
+        *str_ptr = '\0';
+        yylval->cpVal = apr_pstrdup(yyextra->pool, str_buf);
+        str_ptr = str_buf;
+        BEGIN(INITIAL);
+        return T_STRING;
+    }
+}
+	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 122 "util_expr_scan.l"
+#line 151 "util_expr_scan.l"
 {
     int result;
 
@@ -1021,40 +1051,40 @@ YY_RULE_SETUP
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 133 "util_expr_scan.l"
+#line 162 "util_expr_scan.l"
 {
     PERROR("Bad escape sequence");
 }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 136 "util_expr_scan.l"
+#line 165 "util_expr_scan.l"
 { *str_ptr++ = '\n'; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 137 "util_expr_scan.l"
+#line 166 "util_expr_scan.l"
 { *str_ptr++ = '\r'; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 138 "util_expr_scan.l"
+#line 167 "util_expr_scan.l"
 { *str_ptr++ = '\t'; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 139 "util_expr_scan.l"
+#line 168 "util_expr_scan.l"
 { *str_ptr++ = '\b'; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 140 "util_expr_scan.l"
+#line 169 "util_expr_scan.l"
 { *str_ptr++ = '\f'; }
 	YY_BREAK
 case 12:
 /* rule 12 can match eol */
 YY_RULE_SETUP
-#line 141 "util_expr_scan.l"
+#line 170 "util_expr_scan.l"
 {
     *str_ptr++ = yytext[1];
 }
@@ -1062,7 +1092,7 @@ YY_RULE_SETUP
 /* regexp backref inside string/arg */
 case 13:
 YY_RULE_SETUP
-#line 146 "util_expr_scan.l"
+#line 175 "util_expr_scan.l"
 {
     if (str_ptr != str_buf) {
         /* return what we have so far and scan '$x' again */
@@ -1080,7 +1110,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 161 "util_expr_scan.l"
+#line 190 "util_expr_scan.l"
 {
     char *cp = yytext;
     while (*cp != '\0')
@@ -1090,7 +1120,7 @@ YY_RULE_SETUP
 /* variable inside string/arg */
 case 15:
 YY_RULE_SETUP
-#line 168 "util_expr_scan.l"
+#line 197 "util_expr_scan.l"
 {
     if (str_ptr != str_buf) {
         /* return what we have so far and scan '%{' again */
@@ -1108,21 +1138,21 @@ YY_RULE_SETUP
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 183 "util_expr_scan.l"
+#line 212 "util_expr_scan.l"
 {
      *str_ptr++ = yytext[0];
 }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 187 "util_expr_scan.l"
+#line 216 "util_expr_scan.l"
 {
      *str_ptr++ = yytext[0];
 }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 191 "util_expr_scan.l"
+#line 220 "util_expr_scan.l"
 {
     yy_push_state(var, yyscanner);
     return T_VAR_BEGIN;
@@ -1130,7 +1160,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 196 "util_expr_scan.l"
+#line 225 "util_expr_scan.l"
 {
     yylval->num = yytext[1] - '0';
     return T_REGEX_BACKREF;
@@ -1141,7 +1171,7 @@ YY_RULE_SETUP
   */
 case 20:
 YY_RULE_SETUP
-#line 204 "util_expr_scan.l"
+#line 233 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, yytext);
     return T_ID;
@@ -1149,7 +1179,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 209 "util_expr_scan.l"
+#line 238 "util_expr_scan.l"
 {
     yy_pop_state(yyscanner);
     return T_VAR_END;
@@ -1157,7 +1187,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 214 "util_expr_scan.l"
+#line 243 "util_expr_scan.l"
 {
     BEGIN(vararg);
     return yytext[0];
@@ -1166,7 +1196,7 @@ YY_RULE_SETUP
 case 23:
 /* rule 23 can match eol */
 YY_RULE_SETUP
-#line 219 "util_expr_scan.l"
+#line 248 "util_expr_scan.l"
 {
     char *msg = apr_psprintf(yyextra->pool,
                              "Invalid character in variable name '%c'", yytext[0]);
@@ -1175,7 +1205,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 225 "util_expr_scan.l"
+#line 254 "util_expr_scan.l"
 {
     if (str_ptr != str_buf) {
         /* return what we have so far and scan '}' again */
@@ -1196,7 +1226,7 @@ YY_RULE_SETUP
   */
 case 25:
 YY_RULE_SETUP
-#line 243 "util_expr_scan.l"
+#line 272 "util_expr_scan.l"
 {
     regex_del = yytext[1];
     regex_ptr = regex_buf;
@@ -1205,7 +1235,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 248 "util_expr_scan.l"
+#line 277 "util_expr_scan.l"
 {
     regex_del = yytext[0];
     regex_ptr = regex_buf;
@@ -1215,7 +1245,7 @@ YY_RULE_SETUP
 case 27:
 /* rule 27 can match eol */
 YY_RULE_SETUP
-#line 253 "util_expr_scan.l"
+#line 282 "util_expr_scan.l"
 {
     if (yytext[0] == regex_del) {
         *regex_ptr = '\0';
@@ -1228,7 +1258,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 262 "util_expr_scan.l"
+#line 291 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, regex_buf);
     BEGIN(INITIAL);
@@ -1238,7 +1268,7 @@ YY_RULE_SETUP
 case 29:
 /* rule 29 can match eol */
 YY_RULE_SETUP
-#line 267 "util_expr_scan.l"
+#line 296 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, regex_buf);
     yyless(0);
@@ -1247,7 +1277,7 @@ YY_RULE_SETUP
 }
 	YY_BREAK
 case YY_STATE_EOF(regex_flags):
-#line 273 "util_expr_scan.l"
+#line 302 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, regex_buf);
     BEGIN(INITIAL);
@@ -1259,153 +1289,153 @@ case YY_STATE_EOF(regex_flags):
   */
 case 30:
 YY_RULE_SETUP
-#line 282 "util_expr_scan.l"
+#line 311 "util_expr_scan.l"
 { return T_OP_STR_EQ; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 283 "util_expr_scan.l"
+#line 312 "util_expr_scan.l"
 { return T_OP_STR_NE; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 284 "util_expr_scan.l"
+#line 313 "util_expr_scan.l"
 { return T_OP_STR_LT; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 285 "util_expr_scan.l"
+#line 314 "util_expr_scan.l"
 { return T_OP_STR_LE; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 286 "util_expr_scan.l"
+#line 315 "util_expr_scan.l"
 { return T_OP_STR_GT; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 287 "util_expr_scan.l"
+#line 316 "util_expr_scan.l"
 { return T_OP_STR_GE; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 288 "util_expr_scan.l"
+#line 317 "util_expr_scan.l"
 { return T_OP_REG; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 289 "util_expr_scan.l"
+#line 318 "util_expr_scan.l"
 { return T_OP_NRE; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 290 "util_expr_scan.l"
+#line 319 "util_expr_scan.l"
 { return T_OP_AND; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 291 "util_expr_scan.l"
+#line 320 "util_expr_scan.l"
 { return T_OP_AND; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 292 "util_expr_scan.l"
+#line 321 "util_expr_scan.l"
 { return T_OP_OR; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 293 "util_expr_scan.l"
+#line 322 "util_expr_scan.l"
 { return T_OP_OR; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 294 "util_expr_scan.l"
+#line 323 "util_expr_scan.l"
 { return T_OP_NOT; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 295 "util_expr_scan.l"
+#line 324 "util_expr_scan.l"
 { return T_OP_NOT; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 296 "util_expr_scan.l"
+#line 325 "util_expr_scan.l"
 { return T_OP_CONCAT; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 297 "util_expr_scan.l"
+#line 326 "util_expr_scan.l"
 { return T_OP_IN; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 298 "util_expr_scan.l"
+#line 327 "util_expr_scan.l"
 { return T_OP_EQ; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 299 "util_expr_scan.l"
+#line 328 "util_expr_scan.l"
 { return T_OP_NE; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 300 "util_expr_scan.l"
+#line 329 "util_expr_scan.l"
 { return T_OP_GE; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 301 "util_expr_scan.l"
+#line 330 "util_expr_scan.l"
 { return T_OP_LE; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 302 "util_expr_scan.l"
+#line 331 "util_expr_scan.l"
 { return T_OP_GT; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 303 "util_expr_scan.l"
+#line 332 "util_expr_scan.l"
 { return T_OP_LT; }
 	YY_BREAK
 /* for compatibility with ssl_expr */
 case 52:
 YY_RULE_SETUP
-#line 306 "util_expr_scan.l"
+#line 335 "util_expr_scan.l"
 { return T_OP_LT; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 307 "util_expr_scan.l"
+#line 336 "util_expr_scan.l"
 { return T_OP_LE; }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 308 "util_expr_scan.l"
+#line 337 "util_expr_scan.l"
 { return T_OP_GT; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 309 "util_expr_scan.l"
+#line 338 "util_expr_scan.l"
 { return T_OP_GE; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 310 "util_expr_scan.l"
+#line 339 "util_expr_scan.l"
 { return T_OP_NE; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 311 "util_expr_scan.l"
+#line 340 "util_expr_scan.l"
 { return T_OP_EQ; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 312 "util_expr_scan.l"
+#line 341 "util_expr_scan.l"
 { return T_OP_IN; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 314 "util_expr_scan.l"
+#line 343 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, yytext + 1);
     return T_OP_UNARY;
@@ -1413,7 +1443,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 319 "util_expr_scan.l"
+#line 348 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, yytext + 1);
     return T_OP_BINARY;
@@ -1424,12 +1454,12 @@ YY_RULE_SETUP
   */
 case 61:
 YY_RULE_SETUP
-#line 327 "util_expr_scan.l"
+#line 356 "util_expr_scan.l"
 { return T_TRUE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 328 "util_expr_scan.l"
+#line 357 "util_expr_scan.l"
 { return T_FALSE; }
 	YY_BREAK
 /*
@@ -1437,7 +1467,7 @@ YY_RULE_SETUP
   */
 case 63:
 YY_RULE_SETUP
-#line 333 "util_expr_scan.l"
+#line 362 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, yytext);
     return T_DIGIT;
@@ -1448,7 +1478,7 @@ YY_RULE_SETUP
   */
 case 64:
 YY_RULE_SETUP
-#line 341 "util_expr_scan.l"
+#line 370 "util_expr_scan.l"
 {
     yylval->cpVal = apr_pstrdup(yyextra->pool, yytext);
     return T_ID;
@@ -1459,7 +1489,7 @@ YY_RULE_SETUP
   */
 case 65:
 YY_RULE_SETUP
-#line 349 "util_expr_scan.l"
+#line 378 "util_expr_scan.l"
 {
     return yytext[0];
 }
@@ -1470,7 +1500,7 @@ YY_RULE_SETUP
 case 66:
 /* rule 66 can match eol */
 YY_RULE_SETUP
-#line 356 "util_expr_scan.l"
+#line 385 "util_expr_scan.l"
 {
     char *msg = apr_psprintf(yyextra->pool, "Parse error near '%c'", yytext[0]);
     PERROR(msg);
@@ -1478,10 +1508,10 @@ YY_RULE_SETUP
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 361 "util_expr_scan.l"
+#line 390 "util_expr_scan.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 1485 "util_expr_scan.c"
+#line 1515 "util_expr_scan.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(regex):
 	yyterminate();
@@ -2623,7 +2653,7 @@ void ap_expr_yyfree (void * ptr , yyscan
 
 #define YYTABLES_NAME "yytables"
 
-#line 361 "util_expr_scan.l"
+#line 390 "util_expr_scan.l"
 
 
 



Mime
View raw message