From 1641d2afbe559bb3d95a6afe62b006ee90b17f1a Mon Sep 17 00:00:00 2001 From: krakjoe Date: Mon, 17 Feb 2014 08:53:47 +0000 Subject: [PATCH] case insensitivity where we can additional param types --- dev/phpdbg_lexer.l | 52 +++--- dev/phpdbg_parser.y | 44 +++-- phpdbg_cmd.h | 6 +- phpdbg_lexer.c | 379 +++++++++++++++++++++++++------------------- phpdbg_lexer.h | 2 +- phpdbg_parser.c | 193 +++++++++++++--------- phpdbg_parser.h | 19 +-- 7 files changed, 405 insertions(+), 290 deletions(-) diff --git a/dev/phpdbg_lexer.l b/dev/phpdbg_lexer.l index 9be1f533b0..76c28c45dd 100644 --- a/dev/phpdbg_lexer.l +++ b/dev/phpdbg_lexer.l @@ -21,16 +21,17 @@ %option reentrant noyywrap never-interactive nounistd %option bison-bridge -C_TRUE "true" -C_YES "yes" -C_ON "on" -C_ENABLED "enabled" -C_FALSE "false" -C_NO "no" -C_OFF "off" -C_DISABLED "disabled" -C_EVAL "eval" -C_SHELL "shell" +C_TRUE ?i:"true" +C_YES ?i:"yes" +C_ON ?i:"on" +C_ENABLED ?i:"enabled" +C_FALSE ?i:"false" +C_NO ?i:"no" +C_OFF ?i:"off" +C_DISABLED ?i:"disabled" +C_EVAL ?i:"eval" +C_SHELL ?i:"shell" +C_IF ?i:"if" DIGITS [0-9]+ ID [a-zA-Z_\x7f-\xff\-][a-zA-Z0-9_\x7f-\xff\-]* @@ -44,6 +45,21 @@ INPUT [^\n]+ %% { + {C_EVAL} { + BEGIN(RAW); + phpdbg_init_param(yylval, EMPTY_PARAM); + return C_EVAL; + } + {C_SHELL} { + BEGIN(RAW); + phpdbg_init_param(yylval, EMPTY_PARAM); + return C_SHELL; + } + {C_IF} { + BEGIN(RAW); + phpdbg_init_param(yylval, EMPTY_PARAM); + return C_IF; + } {C_YES}|{C_ON}|{C_ENABLED}|{C_TRUE} { phpdbg_init_param(yylval, NUMERIC_PARAM); yylval->num = 1; @@ -54,20 +70,6 @@ INPUT [^\n]+ yylval->num = 0; return C_FALSY; } - {C_EVAL} { - BEGIN(RAW); - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = strndup(yytext, yyleng); - yylval->len = yyleng; - return C_EVAL; - } - {C_SHELL} { - BEGIN(RAW); - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = strndup(yytext, yyleng); - yylval->len = yyleng; - return C_SHELL; - } {DIGITS} { phpdbg_init_param(yylval, NUMERIC_PARAM); yylval->num = atoi(yytext); @@ -96,7 +98,7 @@ INPUT [^\n]+ yylval->len = yyleng; return T_LITERAL; } - {ID} { + {NSID} { phpdbg_init_param(yylval, STR_PARAM); yylval->str = strndup(yytext, yyleng); yylval->len = yyleng; diff --git a/dev/phpdbg_parser.y b/dev/phpdbg_parser.y index 713c0efccf..185283eb8e 100644 --- a/dev/phpdbg_parser.y +++ b/dev/phpdbg_parser.y @@ -45,6 +45,10 @@ void phpdbg_debug_param(const phpdbg_param_t *param, const char *msg) { case NUMERIC_PARAM: fprintf(stderr, "%s NUMERIC_PARAM(%ld)\n", msg, param->num); break; + + case COND_PARAM: + fprintf(stderr, "%s COND_PARAM(%s=%d)\n", msg, param->str, param->len); + break; } } } @@ -119,16 +123,28 @@ int phpdbg_stack_execute(phpdbg_param_t *stack, char **why) { } command = params = (phpdbg_param_t*) stack->next; - - if (command->type != STR_PARAM) { - asprintf( - why, "the first parameter is expected to be a string !!"); - return FAILURE; - } - /* do resolve command(s) */ + switch (command->type) { + case EVAL_PARAM: + phpdbg_notice("eval (%s)", command->str); + break; + + case SHELL_PARAM: + phpdbg_notice("shell (%s)", command->str); + break; + + case STR_PARAM: { + /* do resolve command(s) */ + } break; + + default: + asprintf( + why, "the first parameter makes no sense !!"); + return FAILURE; + } /* do prepare params for function */ + while (params) { phpdbg_debug_param(params, "-> ..."); params = params->next; @@ -161,6 +177,7 @@ typedef void* yyscan_t; %token C_STRING "string (some input, perhaps)" %token C_EVAL "eval" %token C_SHELL "shell" +%token C_IF "if (condition)" %token T_DIGITS "digits (numbers)" %token T_LITERAL "literal (string)" @@ -187,18 +204,18 @@ params ; normal - : T_ID { phpdbg_stack_push(stack, &$1); } - | normal T_ID { phpdbg_stack_push(stack, &$2); } + : T_ID { $$ = $1; } + | normal T_ID { $$ = $2; } ; special - : C_EVAL T_INPUT { phpdbg_stack_push(stack, &$1); phpdbg_stack_push(stack, &$2); } - | C_SHELL T_INPUT { phpdbg_stack_push(stack, &$1); phpdbg_stack_push(stack, &$2); } + : C_EVAL T_INPUT { $$ = $2; $$.type = EVAL_PARAM; } + | C_SHELL T_INPUT { $$ = $2; $$.type = SHELL_PARAM;; } ; command - : normal - | special + : normal { phpdbg_stack_push(stack, &$1); } + | special { phpdbg_stack_push(stack, &$1); } ; parameter @@ -210,6 +227,7 @@ parameter | T_LITERAL { $$ = $1; } | C_TRUTHY { $$ = $1; } | C_FALSY { $$ = $1; } + | C_IF T_INPUT { $$ = $2; $$.type = COND_PARAM; } ; handler diff --git a/phpdbg_cmd.h b/phpdbg_cmd.h index 7cfe35ba9e..cf503812a7 100644 --- a/phpdbg_cmd.h +++ b/phpdbg_cmd.h @@ -41,7 +41,11 @@ typedef enum { NUMERIC_PARAM, NUMERIC_FUNCTION_PARAM, NUMERIC_METHOD_PARAM, - STACK_PARAM + STACK_PARAM, + EVAL_PARAM, + SHELL_PARAM, + COND_PARAM, + ORIG_PARAM } phpdbg_param_type; typedef struct _phpdbg_input_t phpdbg_input_t; diff --git a/phpdbg_lexer.c b/phpdbg_lexer.c index 0804af5619..cc8535fe5c 100644 --- a/phpdbg_lexer.c +++ b/phpdbg_lexer.c @@ -349,8 +349,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 14 -#define YY_END_OF_BUFFER 15 +#define YY_NUM_RULES 15 +#define YY_END_OF_BUFFER 16 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -358,17 +358,19 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[83] = +static yyconst flex_int16_t yy_accept[92] = { 0, - 0, 0, 0, 0, 15, 13, 12, 12, 12, 13, - 10, 5, 5, 13, 13, 10, 10, 10, 10, 10, - 10, 10, 10, 11, 11, 12, 0, 0, 12, 12, - 0, 0, 9, 0, 0, 10, 10, 0, 0, 5, - 0, 0, 10, 10, 10, 10, 2, 10, 1, 10, - 10, 10, 11, 11, 7, 9, 0, 7, 0, 8, - 0, 0, 10, 10, 10, 10, 10, 10, 6, 10, - 10, 3, 10, 10, 6, 10, 10, 4, 10, 10, - 10, 0 + 0, 0, 0, 0, 16, 14, 13, 13, 13, 14, + 11, 6, 6, 14, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 14, 12, 12, 13, 0, 0, 13, + 13, 0, 0, 10, 0, 0, 11, 11, 0, 0, + 6, 0, 11, 11, 11, 11, 3, 5, 11, 4, + 11, 11, 11, 11, 12, 12, 8, 10, 0, 8, + 0, 0, 9, 11, 11, 11, 11, 5, 11, 11, + 4, 7, 0, 0, 11, 11, 1, 11, 11, 4, + 7, 11, 11, 5, 2, 11, 11, 11, 4, 5, + 0 + } ; static yyconst flex_int32_t yy_ec[256] = @@ -379,14 +381,14 @@ static yyconst flex_int32_t yy_ec[256] = 1, 4, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 1, 1, - 1, 1, 1, 1, 10, 10, 10, 10, 10, 10, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 1, 11, 1, 1, 6, 1, 12, 13, 10, 14, - - 15, 16, 6, 17, 18, 6, 6, 19, 6, 20, - 21, 6, 6, 22, 23, 24, 25, 26, 6, 27, - 28, 6, 1, 1, 1, 1, 6, 6, 6, 6, + 1, 1, 1, 1, 10, 11, 12, 13, 14, 15, + 6, 16, 17, 6, 6, 18, 6, 19, 20, 6, + 6, 21, 22, 23, 24, 25, 6, 6, 26, 6, + 1, 27, 1, 1, 6, 1, 28, 29, 12, 30, + + 31, 32, 6, 33, 34, 6, 6, 35, 6, 36, + 37, 6, 6, 38, 39, 40, 41, 42, 6, 43, + 44, 6, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, @@ -403,115 +405,157 @@ static yyconst flex_int32_t yy_ec[256] = 6, 6, 6, 6, 6 } ; -static yyconst flex_int32_t yy_meta[29] = +static yyconst flex_int32_t yy_meta[45] = { 0, 1, 1, 2, 3, 1, 4, 5, 5, 1, 4, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4 + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4 } ; -static yyconst flex_int16_t yy_base[93] = +static yyconst flex_int16_t yy_base[103] = { 0, - 0, 0, 27, 30, 247, 228, 33, 36, 44, 45, - 56, 44, 61, 272, 71, 82, 68, 48, 23, 79, - 84, 59, 88, 0, 105, 108, 219, 97, 111, 114, - 117, 87, 208, 122, 128, 179, 144, 116, 137, 127, - 142, 158, 150, 129, 152, 153, 135, 158, 125, 160, - 37, 159, 0, 177, 176, 272, 116, 180, 0, 0, - 191, 0, 177, 188, 185, 187, 189, 194, 0, 198, - 195, 78, 200, 201, 0, 203, 208, 57, 209, 172, - 211, 272, 229, 234, 239, 244, 249, 254, 259, 264, - 39, 266 - + 0, 0, 43, 46, 161, 150, 49, 52, 60, 61, + 88, 60, 64, 433, 115, 58, 70, 42, 65, 93, + 97, 116, 121, 155, 0, 103, 137, 125, 71, 142, + 163, 164, 116, 77, 167, 144, 67, 92, 169, 194, + 172, 215, 166, 176, 203, 172, 94, 102, 200, 153, + 202, 218, 231, 175, 0, 236, 177, 433, 78, 249, + 0, 276, 0, 241, 238, 256, 265, 246, 271, 278, + 276, 0, 312, 339, 316, 290, 277, 318, 319, 284, + 0, 338, 343, 309, 317, 344, 346, 351, 345, 348, + 433, 385, 390, 395, 400, 405, 410, 415, 420, 56, + + 425, 427 } ; -static yyconst flex_int16_t yy_def[93] = +static yyconst flex_int16_t yy_def[103] = { 0, - 82, 1, 83, 83, 82, 84, 84, 84, 82, 85, - 86, 84, 84, 82, 87, 86, 16, 16, 16, 16, - 16, 16, 16, 88, 88, 82, 84, 82, 84, 82, - 85, 89, 84, 89, 85, 16, 16, 82, 87, 84, - 84, 90, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 88, 88, 82, 82, 89, 89, 91, 41, - 90, 61, 16, 16, 16, 16, 16, 16, 92, 16, - 16, 16, 16, 16, 92, 16, 16, 16, 16, 16, - 16, 0, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82 - + 91, 1, 92, 92, 91, 93, 93, 93, 91, 94, + 95, 93, 93, 91, 95, 15, 15, 15, 15, 15, + 15, 15, 15, 96, 97, 97, 91, 93, 91, 93, + 91, 94, 98, 93, 98, 94, 15, 15, 91, 99, + 93, 93, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 97, 97, 91, 91, 98, 98, + 100, 101, 42, 15, 15, 15, 15, 15, 15, 15, + 15, 102, 101, 101, 15, 15, 15, 15, 15, 15, + 102, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91 } ; -static yyconst flex_int16_t yy_nxt[301] = +static yyconst flex_int16_t yy_nxt[478] = { 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 11, - 15, 11, 11, 16, 17, 18, 11, 11, 11, 19, - 20, 11, 21, 22, 11, 11, 11, 23, 25, 26, - 25, 25, 26, 25, 29, 29, 30, 29, 29, 30, - 36, 28, 69, 47, 28, 30, 30, 30, 32, 33, - 40, 40, 28, 34, 36, 35, 27, 27, 27, 46, - 27, 68, 37, 37, 38, 36, 39, 40, 40, 28, - 41, 27, 27, 27, 36, 27, 36, 27, 27, 28, - 51, 27, 27, 27, 27, 36, 27, 44, 37, 37, - 38, 56, 39, 45, 48, 36, 36, 57, 49, 43, - - 50, 36, 52, 55, 55, 36, 54, 30, 54, 30, - 30, 30, 29, 29, 30, 30, 30, 30, 82, 28, - 32, 33, 55, 55, 59, 34, 56, 35, 58, 58, - 27, 32, 57, 40, 40, 28, 34, 27, 27, 27, - 64, 27, 36, 27, 27, 28, 36, 27, 60, 60, - 28, 60, 36, 60, 60, 60, 60, 60, 27, 27, - 27, 36, 27, 65, 62, 62, 38, 36, 39, 36, - 36, 66, 63, 47, 67, 36, 36, 36, 54, 30, - 54, 49, 55, 55, 56, 49, 58, 58, 70, 36, - 57, 27, 27, 27, 36, 27, 36, 62, 62, 38, - - 71, 39, 36, 72, 36, 36, 36, 74, 49, 73, - 76, 36, 36, 77, 47, 36, 28, 36, 36, 78, - 36, 79, 80, 81, 47, 36, 36, 28, 36, 24, - 24, 24, 24, 24, 27, 27, 28, 27, 27, 31, - 31, 31, 31, 31, 36, 36, 82, 36, 36, 42, - 42, 82, 42, 42, 53, 82, 53, 53, 53, 32, - 32, 32, 32, 32, 61, 61, 82, 61, 61, 75, - 75, 5, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82 - + 11, 11, 15, 16, 17, 11, 18, 11, 19, 20, + 11, 21, 22, 11, 11, 23, 24, 11, 11, 15, + 16, 17, 11, 18, 11, 19, 20, 11, 21, 22, + 11, 11, 11, 23, 26, 27, 26, 26, 27, 26, + 30, 30, 31, 30, 30, 31, 47, 29, 37, 72, + 29, 31, 31, 31, 33, 34, 41, 41, 29, 35, + 41, 41, 29, 47, 37, 37, 44, 57, 57, 46, + 91, 37, 45, 37, 48, 29, 37, 36, 28, 28, + 28, 37, 28, 44, 38, 38, 39, 46, 37, 45, + + 37, 48, 42, 37, 56, 31, 56, 49, 37, 37, + 37, 50, 51, 37, 40, 28, 28, 28, 37, 28, + 58, 38, 38, 39, 49, 37, 37, 37, 50, 51, + 37, 43, 37, 29, 53, 37, 52, 37, 31, 31, + 31, 40, 59, 30, 30, 31, 28, 33, 43, 37, + 29, 53, 35, 52, 37, 28, 28, 28, 29, 28, + 91, 28, 28, 29, 31, 31, 31, 33, 34, 37, + 91, 58, 35, 60, 60, 57, 57, 61, 41, 41, + 29, 28, 37, 57, 57, 65, 37, 64, 37, 67, + 36, 37, 37, 59, 28, 28, 28, 91, 28, 37, + + 28, 28, 29, 65, 64, 37, 67, 91, 37, 37, + 91, 91, 66, 91, 68, 69, 37, 91, 37, 37, + 28, 63, 63, 29, 63, 63, 63, 63, 63, 63, + 66, 68, 69, 37, 37, 37, 37, 56, 31, 56, + 91, 70, 63, 63, 63, 63, 63, 37, 76, 91, + 75, 37, 71, 58, 37, 60, 60, 37, 70, 91, + 91, 91, 37, 91, 37, 91, 76, 91, 75, 71, + 91, 37, 37, 77, 37, 59, 28, 28, 28, 37, + 28, 37, 74, 74, 39, 91, 78, 37, 79, 37, + 77, 80, 37, 37, 37, 91, 91, 91, 37, 91, + + 37, 91, 40, 78, 37, 79, 37, 83, 80, 37, + 37, 37, 28, 28, 28, 91, 28, 37, 74, 74, + 39, 91, 91, 37, 83, 37, 82, 91, 91, 91, + 91, 84, 37, 37, 37, 37, 85, 91, 40, 28, + 28, 28, 37, 28, 82, 74, 74, 39, 84, 37, + 37, 37, 37, 85, 37, 86, 87, 88, 89, 37, + 37, 37, 37, 90, 37, 40, 91, 37, 91, 91, + 91, 37, 86, 87, 88, 89, 37, 37, 37, 37, + 90, 37, 91, 91, 37, 25, 25, 25, 25, 25, + 28, 28, 91, 28, 28, 32, 32, 32, 32, 32, + + 37, 37, 91, 37, 37, 54, 54, 91, 54, 54, + 55, 91, 55, 55, 55, 33, 33, 33, 33, 33, + 62, 62, 91, 62, 62, 73, 73, 91, 73, 73, + 81, 81, 5, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91 } ; -static yyconst flex_int16_t yy_chk[301] = +static yyconst flex_int16_t yy_chk[478] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 4, 4, 4, 7, 7, 7, 8, 8, 8, - 19, 7, 91, 19, 8, 9, 9, 9, 10, 10, - 12, 12, 12, 10, 51, 10, 11, 11, 11, 18, - 11, 51, 11, 11, 11, 18, 11, 13, 13, 13, - 12, 15, 15, 15, 78, 15, 22, 15, 15, 15, - 22, 15, 16, 16, 16, 17, 16, 17, 16, 16, - 16, 32, 16, 17, 20, 72, 20, 32, 20, 16, - - 21, 21, 23, 28, 28, 23, 25, 25, 25, 26, - 26, 26, 29, 29, 29, 30, 30, 30, 57, 29, - 31, 31, 38, 38, 38, 31, 34, 31, 34, 34, - 35, 35, 34, 40, 40, 40, 35, 39, 39, 39, - 44, 39, 49, 39, 39, 39, 44, 39, 41, 41, - 41, 41, 47, 41, 41, 41, 41, 41, 42, 42, - 42, 37, 42, 45, 42, 42, 42, 43, 42, 45, - 46, 46, 43, 48, 50, 48, 52, 50, 54, 54, - 54, 52, 55, 55, 58, 80, 58, 58, 63, 80, - 58, 61, 61, 61, 63, 61, 36, 61, 61, 61, - - 64, 61, 65, 65, 66, 64, 67, 67, 68, 66, - 70, 68, 71, 71, 73, 70, 33, 73, 74, 74, - 76, 76, 77, 79, 81, 77, 79, 27, 81, 83, - 83, 83, 83, 83, 84, 84, 6, 84, 84, 85, - 85, 85, 85, 85, 86, 86, 5, 86, 86, 87, - 87, 0, 87, 87, 88, 0, 88, 88, 88, 89, - 89, 89, 89, 89, 90, 90, 0, 90, 90, 92, - 92, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82 - + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, + 7, 7, 7, 8, 8, 8, 18, 7, 18, 100, + 8, 9, 9, 9, 10, 10, 12, 12, 12, 10, + 13, 13, 13, 18, 16, 18, 16, 29, 29, 17, + 59, 19, 16, 37, 19, 34, 17, 10, 11, 11, + 11, 16, 11, 16, 11, 11, 11, 17, 19, 16, + + 37, 19, 12, 17, 26, 26, 26, 20, 38, 20, + 47, 20, 21, 21, 11, 15, 15, 15, 48, 15, + 33, 15, 15, 15, 20, 38, 20, 47, 20, 21, + 21, 15, 22, 28, 23, 48, 22, 23, 27, 27, + 27, 15, 33, 30, 30, 30, 36, 36, 15, 22, + 30, 23, 36, 22, 23, 24, 24, 24, 6, 24, + 5, 24, 24, 24, 31, 31, 31, 32, 32, 50, + 0, 35, 32, 35, 35, 39, 39, 39, 41, 41, + 41, 24, 43, 57, 57, 44, 50, 43, 46, 46, + 32, 54, 44, 35, 40, 40, 40, 0, 40, 43, + + 40, 40, 40, 44, 43, 46, 46, 0, 54, 44, + 0, 0, 45, 0, 49, 51, 49, 0, 51, 45, + 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 45, 49, 51, 49, 52, 51, 45, 56, 56, 56, + 0, 52, 42, 42, 42, 42, 42, 53, 65, 0, + 64, 52, 53, 60, 65, 60, 60, 64, 52, 0, + 0, 0, 68, 0, 53, 0, 65, 0, 64, 53, + 0, 65, 66, 66, 64, 60, 62, 62, 62, 68, + 62, 67, 62, 62, 62, 0, 67, 69, 69, 66, + 66, 70, 71, 77, 70, 0, 0, 0, 67, 0, + + 80, 0, 62, 67, 69, 69, 76, 76, 70, 71, + 77, 70, 73, 73, 73, 0, 73, 80, 73, 73, + 73, 0, 0, 76, 76, 84, 75, 0, 0, 0, + 0, 78, 75, 85, 78, 79, 79, 0, 73, 74, + 74, 74, 84, 74, 75, 74, 74, 74, 78, 75, + 85, 78, 79, 79, 82, 82, 83, 86, 87, 83, + 86, 89, 87, 88, 90, 74, 0, 88, 0, 0, + 0, 82, 82, 83, 86, 87, 83, 86, 89, 87, + 88, 90, 0, 0, 88, 92, 92, 92, 92, 92, + 93, 93, 0, 93, 93, 94, 94, 94, 94, 94, + + 95, 95, 0, 95, 95, 96, 96, 0, 96, 96, + 97, 0, 97, 97, 97, 98, 98, 98, 98, 98, + 99, 99, 0, 99, 99, 101, 101, 0, 101, 101, + 102, 102, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91 } ; /* The intent behind this definition is that it'll catch @@ -537,7 +581,7 @@ static yyconst flex_int16_t yy_chk[301] = #include #define YY_NO_UNISTD_H 1 -#line 541 "sapi/phpdbg/phpdbg_lexer.c" +#line 585 "sapi/phpdbg/phpdbg_lexer.c" #define INITIAL 0 #define RAW 1 @@ -775,9 +819,9 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 44 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 45 "sapi/phpdbg/dev/phpdbg_lexer.l" -#line 781 "sapi/phpdbg/phpdbg_lexer.c" +#line 825 "sapi/phpdbg/phpdbg_lexer.c" yylval = yylval_param; @@ -832,13 +876,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 83 ) + if ( yy_current_state >= 92 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_current_state != 82 ); + while ( yy_current_state != 91 ); yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; @@ -860,56 +904,61 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 47 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 48 "sapi/phpdbg/dev/phpdbg_lexer.l" { - phpdbg_init_param(yylval, NUMERIC_PARAM); - yylval->num = 1; - return C_TRUTHY; + BEGIN(RAW); + phpdbg_init_param(yylval, EMPTY_PARAM); + return C_EVAL; } YY_BREAK case 2: YY_RULE_SETUP -#line 52 "sapi/phpdbg/dev/phpdbg_lexer.l" -{ - phpdbg_init_param(yylval, NUMERIC_PARAM); - yylval->num = 0; - return C_FALSY; +#line 53 "sapi/phpdbg/dev/phpdbg_lexer.l" +{ + BEGIN(RAW); + phpdbg_init_param(yylval, EMPTY_PARAM); + return C_SHELL; } YY_BREAK case 3: YY_RULE_SETUP -#line 57 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 58 "sapi/phpdbg/dev/phpdbg_lexer.l" { BEGIN(RAW); - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = strndup(yytext, yyleng); - yylval->len = yyleng; - return C_EVAL; + phpdbg_init_param(yylval, EMPTY_PARAM); + return C_IF; } YY_BREAK case 4: YY_RULE_SETUP -#line 64 "sapi/phpdbg/dev/phpdbg_lexer.l" -{ - BEGIN(RAW); - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = strndup(yytext, yyleng); - yylval->len = yyleng; - return C_SHELL; +#line 63 "sapi/phpdbg/dev/phpdbg_lexer.l" +{ + phpdbg_init_param(yylval, NUMERIC_PARAM); + yylval->num = 1; + return C_TRUTHY; } YY_BREAK case 5: YY_RULE_SETUP -#line 71 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 68 "sapi/phpdbg/dev/phpdbg_lexer.l" +{ + phpdbg_init_param(yylval, NUMERIC_PARAM); + yylval->num = 0; + return C_FALSY; + } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 73 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, NUMERIC_PARAM); yylval->num = atoi(yytext); return T_DIGITS; } YY_BREAK -case 6: +case 7: YY_RULE_SETUP -#line 76 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 78 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, METHOD_PARAM); yylval->method.class = "class"; @@ -917,10 +966,10 @@ YY_RULE_SETUP return T_METHOD; } YY_BREAK -case 7: -/* rule 7 can match eol */ +case 8: +/* rule 8 can match eol */ YY_RULE_SETUP -#line 82 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 84 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, FILE_PARAM); yylval->file.name = strndup(yytext, yyleng); @@ -928,19 +977,19 @@ YY_RULE_SETUP return T_FILE; } YY_BREAK -case 8: +case 9: YY_RULE_SETUP -#line 88 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 90 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, ADDR_PARAM); yylval->addr = strtoul(yytext, NULL, 10); return T_OPLINE; } YY_BREAK -case 9: -/* rule 9 can match eol */ +case 10: +/* rule 10 can match eol */ YY_RULE_SETUP -#line 93 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 95 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, STR_PARAM); yylval->str = strndup(yytext, yyleng); @@ -948,9 +997,9 @@ YY_RULE_SETUP return T_LITERAL; } YY_BREAK -case 10: +case 11: YY_RULE_SETUP -#line 99 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 101 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, STR_PARAM); yylval->str = strndup(yytext, yyleng); @@ -959,9 +1008,9 @@ YY_RULE_SETUP } YY_BREAK -case 11: +case 12: YY_RULE_SETUP -#line 106 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 108 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, STR_PARAM); yylval->str = strndup(yytext, yyleng); @@ -970,26 +1019,26 @@ YY_RULE_SETUP return T_INPUT; } YY_BREAK -case 12: -/* rule 12 can match eol */ +case 13: +/* rule 13 can match eol */ YY_RULE_SETUP -#line 113 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 115 "sapi/phpdbg/dev/phpdbg_lexer.l" { /* ignore whitespace */ } YY_BREAK -case 13: +case 14: YY_RULE_SETUP -#line 114 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 116 "sapi/phpdbg/dev/phpdbg_lexer.l" { phpdbg_init_param(yylval, EMPTY_PARAM); return T_UNEXPECTED; } YY_BREAK -case 14: +case 15: YY_RULE_SETUP -#line 118 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 120 "sapi/phpdbg/dev/phpdbg_lexer.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 993 "sapi/phpdbg/phpdbg_lexer.c" +#line 1042 "sapi/phpdbg/phpdbg_lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(RAW): yyterminate(); @@ -1285,7 +1334,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 83 ) + if ( yy_current_state >= 92 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1314,11 +1363,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 83 ) + if ( yy_current_state >= 92 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 82); + yy_is_jam = (yy_current_state == 91); return yy_is_jam ? 0 : yy_current_state; } @@ -2154,7 +2203,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 118 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 120 "sapi/phpdbg/dev/phpdbg_lexer.l" diff --git a/phpdbg_lexer.h b/phpdbg_lexer.h index c6d9f1b8bc..b835a6695e 100644 --- a/phpdbg_lexer.h +++ b/phpdbg_lexer.h @@ -338,7 +338,7 @@ extern int yylex \ #undef YY_DECL #endif -#line 118 "sapi/phpdbg/dev/phpdbg_lexer.l" +#line 120 "sapi/phpdbg/dev/phpdbg_lexer.l" #line 345 "sapi/phpdbg/phpdbg_lexer.h" diff --git a/phpdbg_parser.c b/phpdbg_parser.c index 2c8cbfce51..fee118564d 100644 --- a/phpdbg_parser.c +++ b/phpdbg_parser.c @@ -113,6 +113,10 @@ void phpdbg_debug_param(const phpdbg_param_t *param, const char *msg) { case NUMERIC_PARAM: fprintf(stderr, "%s NUMERIC_PARAM(%ld)\n", msg, param->num); break; + + case COND_PARAM: + fprintf(stderr, "%s COND_PARAM(%s=%d)\n", msg, param->str, param->len); + break; } } } @@ -187,16 +191,28 @@ int phpdbg_stack_execute(phpdbg_param_t *stack, char **why) { } command = params = (phpdbg_param_t*) stack->next; - - if (command->type != STR_PARAM) { - asprintf( - why, "the first parameter is expected to be a string !!"); - return FAILURE; - } - /* do resolve command(s) */ + switch (command->type) { + case EVAL_PARAM: + phpdbg_notice("eval (%s)", command->str); + break; + + case SHELL_PARAM: + phpdbg_notice("shell (%s)", command->str); + break; + + case STR_PARAM: { + /* do resolve command(s) */ + } break; + + default: + asprintf( + why, "the first parameter makes no sense !!"); + return FAILURE; + } /* do prepare params for function */ + while (params) { phpdbg_debug_param(params, "-> ..."); params = params->next; @@ -209,7 +225,7 @@ int phpdbg_stack_execute(phpdbg_param_t *stack, char **why) { /* Line 268 of yacc.c */ -#line 213 "sapi/phpdbg/phpdbg_parser.c" +#line 229 "sapi/phpdbg/phpdbg_parser.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -232,7 +248,7 @@ int phpdbg_stack_execute(phpdbg_param_t *stack, char **why) { /* "%code requires" blocks. */ /* Line 288 of yacc.c */ -#line 143 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 159 "sapi/phpdbg/dev/phpdbg_parser.y" #include "phpdbg.h" #ifndef YY_TYPEDEF_YY_SCANNER_T @@ -243,7 +259,7 @@ typedef void* yyscan_t; /* Line 288 of yacc.c */ -#line 247 "sapi/phpdbg/phpdbg_parser.c" +#line 263 "sapi/phpdbg/phpdbg_parser.c" /* Tokens. */ #ifndef YYTOKENTYPE @@ -256,14 +272,15 @@ typedef void* yyscan_t; C_STRING = 260, C_EVAL = 261, C_SHELL = 262, - T_DIGITS = 263, - T_LITERAL = 264, - T_METHOD = 265, - T_OPLINE = 266, - T_FILE = 267, - T_ID = 268, - T_INPUT = 269, - T_UNEXPECTED = 270 + C_IF = 263, + T_DIGITS = 264, + T_LITERAL = 265, + T_METHOD = 266, + T_OPLINE = 267, + T_FILE = 268, + T_ID = 269, + T_INPUT = 270, + T_UNEXPECTED = 271 }; #endif @@ -281,7 +298,7 @@ typedef int YYSTYPE; /* Line 343 of yacc.c */ -#line 285 "sapi/phpdbg/phpdbg_parser.c" +#line 302 "sapi/phpdbg/phpdbg_parser.c" #ifdef short # undef short @@ -500,20 +517,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 11 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 18 +#define YYLAST 20 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 16 +#define YYNTOKENS 17 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 9 /* YYNRULES -- Number of rules. */ -#define YYNRULES 21 +#define YYNRULES 22 /* YYNRULES -- Number of states. */ -#define YYNSTATES 25 +#define YYNSTATES 27 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 270 +#define YYMAXUTOK 271 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -548,7 +565,7 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15 + 15, 16 }; #if YYDEBUG @@ -558,25 +575,25 @@ static const yytype_uint8 yyprhs[] = { 0, 0, 3, 5, 7, 10, 11, 13, 15, 18, 21, 24, 26, 28, 30, 32, 34, 36, 38, 40, - 42, 44 + 42, 44, 47 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 17, 0, -1, 24, -1, 23, -1, 18, 23, -1, - -1, 18, -1, 13, -1, 20, 13, -1, 6, 14, - -1, 7, 14, -1, 20, -1, 21, -1, 8, -1, - 12, -1, 10, -1, 11, -1, 13, -1, 9, -1, - 3, -1, 4, -1, 22, 19, -1 + 18, 0, -1, 25, -1, 24, -1, 19, 24, -1, + -1, 19, -1, 14, -1, 21, 14, -1, 6, 15, + -1, 7, 15, -1, 21, -1, 22, -1, 9, -1, + 13, -1, 11, -1, 12, -1, 14, -1, 10, -1, + 3, -1, 4, -1, 8, 15, -1, 23, 20, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { - 0, 176, 176, 180, 181, 184, 186, 190, 191, 195, - 196, 200, 201, 205, 206, 207, 208, 209, 210, 211, - 212, 216 + 0, 193, 193, 197, 198, 201, 203, 207, 208, 212, + 213, 217, 218, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 234 }; #endif @@ -588,8 +605,9 @@ static const char *const yytname[] = "$end", "error", "$undefined", "\"truthy (true, on, yes or enabled)\"", "\"falsy (false, off, no or disabled)\"", "\"string (some input, perhaps)\"", "\"eval\"", "\"shell\"", - "\"digits (numbers)\"", "\"literal (string)\"", "\"method\"", - "\"opline\"", "\"file\"", "\"identifier (command or function name)\"", + "\"if (condition)\"", "\"digits (numbers)\"", "\"literal (string)\"", + "\"method\"", "\"opline\"", "\"file\"", + "\"identifier (command or function name)\"", "\"input (input string or data)\"", "\"input\"", "$accept", "input", "parameters", "params", "normal", "special", "command", "parameter", "handler", 0 @@ -602,16 +620,16 @@ static const char *const yytname[] = static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270 + 265, 266, 267, 268, 269, 270, 271 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 16, 17, 18, 18, 19, 19, 20, 20, 21, - 21, 22, 22, 23, 23, 23, 23, 23, 23, 23, - 23, 24 + 0, 17, 18, 19, 19, 20, 20, 21, 21, 22, + 22, 23, 23, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 25 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -619,7 +637,7 @@ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 2, 0, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2 + 1, 2, 2 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. @@ -628,30 +646,30 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 0, 0, 0, 7, 0, 11, 12, 5, 2, 9, - 10, 1, 8, 19, 20, 13, 18, 15, 16, 14, - 17, 6, 21, 3, 4 + 10, 1, 8, 19, 20, 0, 13, 18, 15, 16, + 14, 17, 6, 22, 3, 21, 4 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { - -1, 4, 21, 22, 5, 6, 7, 23, 8 + -1, 4, 22, 23, 5, 6, 7, 24, 8 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -13 +#define YYPACT_NINF -14 static const yytype_int8 yypact[] = { - 5, -12, -11, -13, 4, 0, -13, -3, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -3, -13, -13, -13 + 6, -13, -12, -14, 4, 0, -14, -3, -14, -14, + -14, -14, -14, -14, -14, 1, -14, -14, -14, -14, + -14, -14, -3, -14, -14, -14, -14 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -13, -13, -13, -13, -13, -13, -13, -7, -13 + -14, -14, -14, -14, -14, -14, -14, -7, -14 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -661,28 +679,30 @@ static const yytype_int8 yypgoto[] = static const yytype_uint8 yytable[] = { 13, 14, 9, 10, 11, 15, 16, 17, 18, 19, - 20, 1, 2, 12, 24, 0, 0, 0, 3 + 20, 21, 1, 2, 12, 26, 25, 0, 0, 0, + 3 }; #define yypact_value_is_default(yystate) \ - ((yystate) == (-13)) + ((yystate) == (-14)) #define yytable_value_is_error(yytable_value) \ YYID (0) static const yytype_int8 yycheck[] = { - 3, 4, 14, 14, 0, 8, 9, 10, 11, 12, - 13, 6, 7, 13, 21, -1, -1, -1, 13 + 3, 4, 15, 15, 0, 8, 9, 10, 11, 12, + 13, 14, 6, 7, 14, 22, 15, -1, -1, -1, + 14 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 6, 7, 13, 17, 20, 21, 22, 24, 14, - 14, 0, 13, 3, 4, 8, 9, 10, 11, 12, - 13, 18, 19, 23, 23 + 0, 6, 7, 14, 18, 21, 22, 23, 25, 15, + 15, 0, 14, 3, 4, 8, 9, 10, 11, 12, + 13, 14, 19, 20, 24, 15, 24 }; #define yyerrok (yyerrstatus = 0) @@ -1531,105 +1551,126 @@ yyreduce: case 3: /* Line 1806 of yacc.c */ -#line 180 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 197 "sapi/phpdbg/dev/phpdbg_parser.y" { phpdbg_stack_push(stack, &(yyvsp[(1) - (1)])); } break; case 4: /* Line 1806 of yacc.c */ -#line 181 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 198 "sapi/phpdbg/dev/phpdbg_parser.y" { phpdbg_stack_push(stack, &(yyvsp[(2) - (2)])); } break; case 7: /* Line 1806 of yacc.c */ -#line 190 "sapi/phpdbg/dev/phpdbg_parser.y" - { phpdbg_stack_push(stack, &(yyvsp[(1) - (1)])); } +#line 207 "sapi/phpdbg/dev/phpdbg_parser.y" + { (yyval) = (yyvsp[(1) - (1)]); } break; case 8: /* Line 1806 of yacc.c */ -#line 191 "sapi/phpdbg/dev/phpdbg_parser.y" - { phpdbg_stack_push(stack, &(yyvsp[(2) - (2)])); } +#line 208 "sapi/phpdbg/dev/phpdbg_parser.y" + { (yyval) = (yyvsp[(2) - (2)]); } break; case 9: /* Line 1806 of yacc.c */ -#line 195 "sapi/phpdbg/dev/phpdbg_parser.y" - { phpdbg_stack_push(stack, &(yyvsp[(1) - (2)])); phpdbg_stack_push(stack, &(yyvsp[(2) - (2)])); } +#line 212 "sapi/phpdbg/dev/phpdbg_parser.y" + { (yyval) = (yyvsp[(2) - (2)]); (yyval).type = EVAL_PARAM; } break; case 10: /* Line 1806 of yacc.c */ -#line 196 "sapi/phpdbg/dev/phpdbg_parser.y" - { phpdbg_stack_push(stack, &(yyvsp[(1) - (2)])); phpdbg_stack_push(stack, &(yyvsp[(2) - (2)])); } +#line 213 "sapi/phpdbg/dev/phpdbg_parser.y" + { (yyval) = (yyvsp[(2) - (2)]); (yyval).type = SHELL_PARAM;; } + break; + + case 11: + +/* Line 1806 of yacc.c */ +#line 217 "sapi/phpdbg/dev/phpdbg_parser.y" + { phpdbg_stack_push(stack, &(yyvsp[(1) - (1)])); } + break; + + case 12: + +/* Line 1806 of yacc.c */ +#line 218 "sapi/phpdbg/dev/phpdbg_parser.y" + { phpdbg_stack_push(stack, &(yyvsp[(1) - (1)])); } break; case 13: /* Line 1806 of yacc.c */ -#line 205 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 222 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 14: /* Line 1806 of yacc.c */ -#line 206 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 223 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 15: /* Line 1806 of yacc.c */ -#line 207 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 224 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 16: /* Line 1806 of yacc.c */ -#line 208 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 225 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 17: /* Line 1806 of yacc.c */ -#line 209 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 226 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 18: /* Line 1806 of yacc.c */ -#line 210 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 227 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 19: /* Line 1806 of yacc.c */ -#line 211 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 228 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; case 20: /* Line 1806 of yacc.c */ -#line 212 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 229 "sapi/phpdbg/dev/phpdbg_parser.y" { (yyval) = (yyvsp[(1) - (1)]); } break; + case 21: + +/* Line 1806 of yacc.c */ +#line 230 "sapi/phpdbg/dev/phpdbg_parser.y" + { (yyval) = (yyvsp[(2) - (2)]); (yyval).type = COND_PARAM; } + break; + /* Line 1806 of yacc.c */ -#line 1633 "sapi/phpdbg/phpdbg_parser.c" +#line 1674 "sapi/phpdbg/phpdbg_parser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -1860,6 +1901,6 @@ yyreturn: /* Line 2067 of yacc.c */ -#line 218 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 236 "sapi/phpdbg/dev/phpdbg_parser.y" diff --git a/phpdbg_parser.h b/phpdbg_parser.h index 08a4e9ce96..d3ba58aa70 100644 --- a/phpdbg_parser.h +++ b/phpdbg_parser.h @@ -33,7 +33,7 @@ /* "%code requires" blocks. */ /* Line 2068 of yacc.c */ -#line 143 "sapi/phpdbg/dev/phpdbg_parser.y" +#line 159 "sapi/phpdbg/dev/phpdbg_parser.y" #include "phpdbg.h" #ifndef YY_TYPEDEF_YY_SCANNER_T @@ -57,14 +57,15 @@ typedef void* yyscan_t; C_STRING = 260, C_EVAL = 261, C_SHELL = 262, - T_DIGITS = 263, - T_LITERAL = 264, - T_METHOD = 265, - T_OPLINE = 266, - T_FILE = 267, - T_ID = 268, - T_INPUT = 269, - T_UNEXPECTED = 270 + C_IF = 263, + T_DIGITS = 264, + T_LITERAL = 265, + T_METHOD = 266, + T_OPLINE = 267, + T_FILE = 268, + T_ID = 269, + T_INPUT = 270, + T_UNEXPECTED = 271 }; #endif -- 2.40.0