Return-Path: X-Original-To: apmail-httpd-cvs-archive@www.apache.org Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0D5076377 for ; Sat, 2 Jul 2011 07:49:09 +0000 (UTC) Received: (qmail 81098 invoked by uid 500); 2 Jul 2011 07:49:05 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 80862 invoked by uid 500); 2 Jul 2011 07:48:47 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 80844 invoked by uid 99); 2 Jul 2011 07:48:43 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jul 2011 07:48:43 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jul 2011 07:48:35 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 2DD9C23888BD; Sat, 2 Jul 2011 07:48:13 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit 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 -0000 To: cvs@httpd.apache.org From: sf@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110702074813.2DD9C23888BD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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"