1
0
mirror of https://github.com/php/php-src.git synced 2026-04-26 09:28:21 +02:00

parse stream locations properly, bp.c still needs work for #82

This commit is contained in:
krakjoe
2014-02-28 07:41:34 +00:00
parent 623888adc0
commit a2d7e336e6
7 changed files with 323 additions and 225 deletions
+9 -3
View File
@@ -51,9 +51,15 @@ OPCODE ?i:ZEND_([A-Za-z])+
INPUT [^\n]+
%%
<INITIAL>{
[#]{1} { return T_POUND; }
[:]{2} { return T_DCOLON; }
[:]{1} { return T_COLON; }
{ID}[:]{1}[//]{2} {
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = strndup(yytext, yyleng);
yylval->len = yyleng;
return T_PROTO;
}
[#]{1} { return T_POUND; }
[:]{2} { return T_DCOLON; }
[:]{1} { return T_COLON; }
{T_EVAL} {
BEGIN(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
+25 -3
View File
@@ -61,7 +61,7 @@ typedef void* yyscan_t;
%token T_COLON ": (colon)"
%token T_DCOLON ":: (double colon)"
%token T_POUND "# (pound sign)"
%token T_PROTO "protocol (file://)"
%token T_DIGITS "digits (numbers)"
%token T_LITERAL "literal (string)"
%token T_ADDR "address"
@@ -84,14 +84,36 @@ parameters
parameter
: T_ID T_COLON T_DIGITS {
$$.type = FILE_PARAM;
$$.file.name = $1.str;
$$.file.name = $2.str;
$$.file.line = $3.num;
}
| T_ID T_COLON T_POUND T_DIGITS {
| T_ID T_COLON T_POUND T_DIGITS {
$$.type = NUMERIC_FILE_PARAM;
$$.file.name = $1.str;
$$.file.line = $4.num;
}
| T_PROTO T_ID T_COLON T_DIGITS {
$$.type = FILE_PARAM;
$$.file.name = malloc($1.len +
$2.len + 1);
if ($$.file.name) {
memcpy(&$$.file.name[0], $1.str, $1.len);
memcpy(&$$.file.name[$1.len], $2.str, $2.len);
$$.file.name[$1.len + $2.len] = '\0';
}
$$.file.line = $4.num;
}
| T_PROTO T_ID T_COLON T_POUND T_DIGITS {
$$.type = NUMERIC_FILE_PARAM;
$$.file.name = malloc($1.len +
$2.len + 1);
if ($$.file.name) {
memcpy(&$$.file.name[0], $1.str, $1.len);
memcpy(&$$.file.name[$1.len], $2.str, $2.len);
$$.file.name[$1.len + $2.len] = '\0';
}
$$.file.line = $5.num;
}
| T_ID T_DCOLON T_ID {
$$.type = METHOD_PARAM;
$$.method.class = $1.str;
+12 -6
View File
@@ -221,14 +221,20 @@ PHPDBG_API void phpdbg_export_breakpoints(FILE *handle TSRMLS_DC) /* {{{ */
PHPDBG_API void phpdbg_set_breakpoint_file(const char *path, long line_num TSRMLS_DC) /* {{{ */
{
struct stat sb;
if (VCWD_STAT(path, &sb) != FAILURE) {
if (sb.st_mode & (S_IFREG|S_IFLNK)) {
php_stream_statbuf ssb;
char realpath[MAXPATHLEN];
if (php_stream_stat_path(path, &ssb) != FAILURE) {
if (ssb.sb.st_mode & (S_IFREG|S_IFLNK)) {
HashTable *broken;
phpdbg_breakfile_t new_break;
size_t path_len = strlen(path);
size_t path_len = 0L;
if (VCWD_REALPATH(path, realpath)) {
path = realpath;
}
path_len = strlen(path);
if (zend_hash_find(&PHPDBG_G(bp)[PHPDBG_BREAK_FILE],
path, path_len, (void**)&broken) == FAILURE) {
HashTable breaks;
+144 -120
View File
@@ -350,8 +350,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 15
#define YY_END_OF_BUFFER 16
#define YY_NUM_RULES 16
#define YY_END_OF_BUFFER 17
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -359,15 +359,15 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static yyconst flex_int16_t yy_accept[67] =
static yyconst flex_int16_t yy_accept[70] =
{ 0,
0, 0, 0, 0, 16, 12, 14, 1, 9, 9,
3, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 13, 13, 12, 14, 9, 12, 2, 12, 12,
4, 12, 6, 8, 12, 7, 5, 12, 12, 12,
13, 13, 10, 12, 12, 12, 8, 12, 7, 12,
12, 12, 12, 7, 12, 12, 12, 8, 12, 12,
12, 11, 12, 7, 8, 0
0, 0, 0, 0, 17, 13, 15, 2, 10, 10,
4, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 14, 14, 13, 0, 15, 10, 13, 3, 13,
13, 5, 13, 7, 9, 13, 8, 6, 13, 13,
13, 14, 14, 0, 11, 13, 13, 13, 9, 13,
8, 13, 1, 13, 13, 13, 8, 13, 13, 13,
9, 13, 13, 13, 12, 13, 8, 9, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -376,16 +376,16 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 1, 4, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 5, 1, 6, 7, 7,
7, 7, 7, 7, 7, 7, 7, 8, 1, 1,
1, 1, 1, 1, 9, 10, 11, 12, 13, 14,
15, 16, 17, 15, 15, 18, 15, 19, 20, 15,
15, 21, 22, 23, 24, 25, 15, 15, 26, 27,
1, 1, 1, 1, 28, 1, 29, 30, 11, 31,
1, 1, 1, 1, 1, 5, 6, 7, 8, 8,
8, 8, 8, 8, 8, 8, 8, 9, 1, 1,
1, 1, 1, 1, 10, 11, 12, 13, 14, 15,
16, 17, 18, 16, 16, 19, 16, 20, 21, 16,
16, 22, 23, 24, 25, 26, 16, 16, 27, 28,
1, 1, 1, 1, 29, 1, 30, 31, 12, 32,
32, 33, 15, 34, 35, 15, 15, 36, 15, 37,
38, 15, 15, 39, 40, 41, 42, 43, 15, 44,
45, 46, 1, 1, 1, 1, 1, 1, 1, 1,
33, 34, 16, 35, 36, 16, 16, 37, 16, 38,
39, 16, 16, 40, 41, 42, 43, 44, 16, 45,
46, 47, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -402,93 +402,107 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
static yyconst flex_int32_t yy_meta[47] =
static yyconst flex_int32_t yy_meta[48] =
{ 0,
1, 2, 3, 2, 1, 1, 1, 2, 1, 1,
1, 2, 3, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1
} ;
static yyconst flex_int16_t yy_base[71] =
static yyconst flex_int16_t yy_base[74] =
{ 0,
0, 0, 45, 47, 148, 0, 49, 184, 48, 51,
138, 42, 41, 52, 49, 42, 50, 51, 47, 57,
58, 0, 70, 0, 72, 86, 90, 184, 54, 79,
0, 80, 0, 0, 91, 0, 0, 83, 87, 91,
0, 109, 0, 97, 103, 92, 0, 102, 0, 105,
108, 111, 117, 0, 117, 117, 118, 0, 136, 126,
128, 150, 132, 0, 0, 184, 178, 78, 181, 64
0, 0, 46, 48, 213, 198, 50, 238, 49, 54,
197, 46, 51, 56, 58, 59, 63, 67, 65, 61,
76, 0, 101, 187, 186, 104, 103, 106, 238, 118,
113, 182, 115, 178, 176, 116, 171, 148, 117, 121,
126, 0, 126, 142, 0, 123, 136, 140, 91, 142,
87, 145, 238, 157, 146, 160, 84, 161, 152, 164,
82, 193, 170, 163, 203, 173, 79, 72, 238, 232,
78, 235, 68
} ;
static yyconst flex_int16_t yy_def[71] =
static yyconst flex_int16_t yy_def[74] =
{ 0,
66, 1, 67, 67, 66, 68, 66, 66, 68, 68,
66, 68, 68, 68, 68, 68, 68, 68, 68, 68,
68, 69, 69, 68, 66, 68, 68, 66, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
69, 69, 27, 68, 68, 68, 68, 68, 68, 68,
68, 68, 68, 68, 68, 68, 68, 68, 70, 68,
68, 70, 68, 68, 68, 0, 66, 66, 66, 66
69, 1, 70, 70, 69, 71, 69, 69, 71, 71,
69, 71, 71, 71, 71, 71, 71, 71, 71, 71,
71, 72, 72, 71, 69, 69, 71, 71, 69, 71,
71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
71, 72, 72, 69, 28, 71, 71, 71, 71, 71,
71, 71, 69, 71, 71, 71, 71, 71, 71, 71,
71, 73, 71, 71, 73, 71, 71, 71, 0, 69,
69, 69, 69
} ;
static yyconst flex_int16_t yy_nxt[231] =
static yyconst flex_int16_t yy_nxt[286] =
{ 0,
6, 7, 7, 8, 9, 10, 9, 11, 6, 6,
6, 12, 13, 14, 6, 6, 15, 6, 16, 17,
6, 18, 19, 6, 6, 20, 21, 6, 6, 6,
12, 13, 14, 6, 15, 6, 16, 17, 6, 18,
19, 6, 6, 6, 20, 21, 23, 7, 23, 7,
25, 25, 26, 26, 26, 26, 26, 26, 29, 30,
32, 34, 33, 35, 62, 31, 37, 38, 36, 39,
40, 42, 25, 25, 25, 44, 29, 30, 24, 34,
32, 33, 35, 31, 37, 38, 36, 45, 39, 40,
26, 26, 26, 44, 27, 43, 43, 46, 43, 43,
6, 7, 7, 8, 9, 6, 10, 9, 11, 6,
6, 6, 12, 13, 14, 6, 6, 15, 6, 16,
17, 6, 18, 19, 6, 6, 20, 21, 6, 6,
6, 12, 13, 14, 6, 15, 6, 16, 17, 6,
18, 19, 6, 6, 6, 20, 21, 23, 7, 23,
7, 26, 26, 27, 25, 27, 27, 25, 27, 25,
27, 27, 25, 30, 25, 33, 25, 25, 65, 25,
31, 25, 34, 25, 40, 25, 32, 36, 24, 35,
25, 30, 37, 38, 25, 33, 39, 25, 31, 41,
25, 34, 25, 40, 32, 25, 36, 35, 28, 25,
43, 43, 43, 43, 47, 51, 48, 45, 49, 50,
42, 25, 52, 53, 54, 46, 55, 56, 43, 43,
43, 43, 43, 47, 48, 51, 49, 50, 57, 58,
61, 53, 52, 54, 60, 55, 24, 56, 63, 64,
24, 24, 24, 65, 59, 28, 57, 66, 58, 61,
24, 66, 60, 66, 24, 24, 24, 63, 64, 66,
66, 66, 65, 24, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 24, 22, 22,
22, 41, 41, 5, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
37, 38, 43, 26, 39, 26, 26, 27, 41, 27,
27, 25, 45, 45, 25, 45, 45, 45, 45, 45,
45, 25, 47, 25, 25, 25, 25, 43, 26, 25,
49, 25, 54, 48, 25, 45, 45, 45, 45, 45,
46, 50, 47, 51, 25, 52, 55, 53, 25, 49,
25, 48, 54, 25, 25, 57, 25, 58, 46, 50,
25, 51, 56, 52, 60, 25, 55, 59, 25, 25,
63, 25, 25, 61, 57, 67, 58, 64, 25, 25,
56, 25, 60, 66, 25, 68, 25, 59, 63, 62,
25, 44, 61, 24, 67, 25, 64, 24, 24, 24,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66
24, 25, 66, 24, 68, 29, 25, 24, 24, 24,
24, 25, 69, 69, 69, 69, 69, 69, 69, 69,
69, 24, 69, 69, 69, 69, 69, 69, 69, 69,
69, 24, 22, 22, 22, 42, 42, 5, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69
} ;
static yyconst flex_int16_t yy_chk[231] =
static yyconst flex_int16_t yy_chk[286] =
{ 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, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 3, 3, 4, 4,
7, 7, 9, 9, 9, 10, 10, 10, 12, 13,
14, 16, 15, 17, 70, 13, 18, 19, 17, 20,
21, 23, 23, 25, 25, 29, 12, 13, 68, 16,
14, 15, 17, 13, 18, 19, 17, 30, 20, 21,
26, 26, 26, 29, 10, 27, 27, 32, 27, 27,
1, 1, 1, 1, 1, 1, 1, 3, 3, 4,
4, 7, 7, 9, 12, 9, 9, 9, 10, 13,
10, 10, 10, 12, 14, 14, 15, 16, 73, 20,
13, 17, 15, 19, 20, 18, 13, 17, 71, 16,
68, 12, 17, 18, 21, 14, 19, 67, 13, 21,
61, 15, 57, 20, 13, 51, 17, 16, 10, 49,
27, 27, 27, 27, 35, 44, 38, 30, 39, 40,
42, 42, 45, 46, 48, 32, 50, 51, 27, 27,
27, 27, 27, 35, 38, 44, 39, 40, 52, 53,
57, 46, 45, 48, 56, 50, 59, 51, 60, 61,
59, 59, 59, 63, 55, 11, 52, 5, 53, 57,
62, 0, 56, 0, 62, 62, 62, 60, 61, 0,
0, 0, 63, 59, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 62, 67, 67,
67, 69, 69, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
17, 18, 23, 23, 19, 26, 26, 27, 21, 27,
27, 27, 28, 28, 28, 28, 28, 28, 28, 28,
28, 31, 31, 33, 36, 39, 30, 43, 43, 40,
36, 46, 46, 33, 41, 28, 28, 28, 28, 28,
30, 39, 31, 40, 47, 41, 47, 44, 48, 36,
50, 33, 46, 52, 55, 50, 38, 52, 30, 39,
59, 40, 48, 41, 55, 54, 47, 54, 56, 58,
59, 64, 60, 56, 50, 64, 52, 60, 63, 37,
48, 66, 55, 63, 35, 66, 34, 54, 59, 58,
32, 25, 56, 62, 64, 24, 60, 62, 62, 62,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 66, 66, 66, 66
62, 62, 63, 65, 66, 11, 6, 65, 65, 65,
65, 65, 5, 0, 0, 0, 0, 0, 0, 0,
0, 62, 0, 0, 0, 0, 0, 0, 0, 0,
0, 65, 70, 70, 70, 72, 72, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
69, 69, 69, 69, 69
} ;
/* The intent behind this definition is that it'll catch
@@ -524,7 +538,7 @@ static inline void phpdbg_append_string(phpdbg_param_t *param, const char *strin
}
#define YY_NO_UNISTD_H 1
#line 528 "sapi/phpdbg/phpdbg_lexer.c"
#line 542 "sapi/phpdbg/phpdbg_lexer.c"
#define INITIAL 0
#define RAW 1
@@ -764,7 +778,7 @@ YY_DECL
#line 52 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 768 "sapi/phpdbg/phpdbg_lexer.c"
#line 782 "sapi/phpdbg/phpdbg_lexer.c"
yylval = yylval_param;
@@ -819,13 +833,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 >= 67 )
if ( yy_current_state >= 70 )
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 != 66 );
while ( yy_current_state != 69 );
yy_cp = yyg->yy_last_accepting_cpos;
yy_current_state = yyg->yy_last_accepting_state;
@@ -848,84 +862,94 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
#line 54 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ return T_POUND; }
{
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = strndup(yytext, yyleng);
yylval->len = yyleng;
return T_PROTO;
}
YY_BREAK
case 2:
YY_RULE_SETUP
#line 55 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ return T_DCOLON; }
#line 60 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ return T_POUND; }
YY_BREAK
case 3:
YY_RULE_SETUP
#line 56 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ return T_COLON; }
#line 61 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ return T_DCOLON; }
YY_BREAK
case 4:
YY_RULE_SETUP
#line 57 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 62 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ return T_COLON; }
YY_BREAK
case 5:
YY_RULE_SETUP
#line 63 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
BEGIN(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_EVAL;
}
YY_BREAK
case 5:
case 6:
YY_RULE_SETUP
#line 62 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 68 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
BEGIN(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_SHELL;
}
YY_BREAK
case 6:
case 7:
YY_RULE_SETUP
#line 67 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 73 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
BEGIN(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_IF;
}
YY_BREAK
case 7:
case 8:
YY_RULE_SETUP
#line 72 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 78 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, NUMERIC_PARAM);
yylval->num = 1;
return T_TRUTHY;
}
YY_BREAK
case 8:
case 9:
YY_RULE_SETUP
#line 77 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 83 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, NUMERIC_PARAM);
yylval->num = 0;
return T_FALSY;
}
YY_BREAK
case 9:
case 10:
YY_RULE_SETUP
#line 82 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 88 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, NUMERIC_PARAM);
yylval->num = atoi(yytext);
return T_DIGITS;
}
YY_BREAK
case 10:
case 11:
YY_RULE_SETUP
#line 87 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 93 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, ADDR_PARAM);
yylval->addr = strtoul(yytext, NULL, 10);
return T_ADDR;
}
YY_BREAK
case 11:
case 12:
YY_RULE_SETUP
#line 92 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 98 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, OP_PARAM);
yylval->str = strndup(yytext, yyleng);
@@ -933,9 +957,9 @@ YY_RULE_SETUP
return T_OPCODE;
}
YY_BREAK
case 12:
case 13:
YY_RULE_SETUP
#line 98 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 104 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = strndup(yytext, yyleng);
@@ -944,9 +968,9 @@ YY_RULE_SETUP
}
YY_BREAK
case 13:
case 14:
YY_RULE_SETUP
#line 106 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 112 "sapi/phpdbg/dev/phpdbg_lexer.l"
{
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = strndup(yytext, yyleng);
@@ -955,18 +979,18 @@ YY_RULE_SETUP
return T_INPUT;
}
YY_BREAK
case 14:
/* rule 14 can match eol */
case 15:
/* rule 15 can match eol */
YY_RULE_SETUP
#line 114 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 120 "sapi/phpdbg/dev/phpdbg_lexer.l"
{ /* ignore whitespace */ }
YY_BREAK
case 15:
case 16:
YY_RULE_SETUP
#line 115 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 121 "sapi/phpdbg/dev/phpdbg_lexer.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
#line 970 "sapi/phpdbg/phpdbg_lexer.c"
#line 994 "sapi/phpdbg/phpdbg_lexer.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(RAW):
yyterminate();
@@ -1262,7 +1286,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 >= 67 )
if ( yy_current_state >= 70 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1291,11 +1315,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 >= 67 )
if ( yy_current_state >= 70 )
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 == 66);
yy_is_jam = (yy_current_state == 69);
(void)yyg;
return yy_is_jam ? 0 : yy_current_state;
@@ -2132,7 +2156,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
#line 115 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 121 "sapi/phpdbg/dev/phpdbg_lexer.l"
+1 -1
View File
@@ -339,7 +339,7 @@ extern int yylex \
#undef YY_DECL
#endif
#line 115 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 121 "sapi/phpdbg/dev/phpdbg_lexer.l"
#line 346 "sapi/phpdbg/phpdbg_lexer.h"
+124 -85
View File
@@ -160,13 +160,14 @@ typedef void* yyscan_t;
T_COLON = 264,
T_DCOLON = 265,
T_POUND = 266,
T_DIGITS = 267,
T_LITERAL = 268,
T_ADDR = 269,
T_OPCODE = 270,
T_ID = 271,
T_INPUT = 272,
T_UNEXPECTED = 273
T_PROTO = 267,
T_DIGITS = 268,
T_LITERAL = 269,
T_ADDR = 270,
T_OPCODE = 271,
T_ID = 272,
T_INPUT = 273,
T_UNEXPECTED = 274
};
#endif
@@ -198,7 +199,7 @@ int yyparse ();
/* Copy the second part of user declarations. */
/* Line 390 of yacc.c */
#line 202 "sapi/phpdbg/phpdbg_parser.c"
#line 203 "sapi/phpdbg/phpdbg_parser.c"
#ifdef short
# undef short
@@ -416,22 +417,22 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 20
#define YYFINAL 22
/* YYLAST -- Last index in YYTABLE. */
#define YYLAST 25
#define YYLAST 31
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 19
#define YYNTOKENS 20
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 4
/* YYNRULES -- Number of rules. */
#define YYNRULES 20
#define YYNRULES 22
/* YYNRULES -- Number of states. */
#define YYNSTATES 29
#define YYNSTATES 35
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
#define YYMAXUTOK 273
#define YYMAXUTOK 274
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -466,7 +467,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, 16, 17, 18
15, 16, 17, 18, 19
};
#if YYDEBUG
@@ -474,28 +475,29 @@ static const yytype_uint8 yytranslate[] =
YYRHS. */
static const yytype_uint8 yyprhs[] =
{
0, 0, 3, 5, 6, 8, 11, 15, 20, 24,
30, 34, 37, 40, 43, 45, 47, 49, 51, 53,
55
0, 0, 3, 5, 6, 8, 11, 15, 20, 25,
31, 35, 41, 45, 48, 51, 54, 56, 58, 60,
62, 64, 66
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
20, 0, -1, 21, -1, -1, 22, -1, 21, 22,
-1, 16, 9, 12, -1, 16, 9, 11, 12, -1,
16, 10, 16, -1, 16, 10, 16, 11, 12, -1,
16, 11, 12, -1, 5, 17, -1, 3, 17, -1,
4, 17, -1, 15, -1, 14, -1, 13, -1, 6,
-1, 7, -1, 12, -1, 16, -1
21, 0, -1, 22, -1, -1, 23, -1, 22, 23,
-1, 17, 9, 13, -1, 17, 9, 11, 13, -1,
12, 17, 9, 13, -1, 12, 17, 9, 11, 13,
-1, 17, 10, 17, -1, 17, 10, 17, 11, 13,
-1, 17, 11, 13, -1, 5, 18, -1, 3, 18,
-1, 4, 18, -1, 16, -1, 15, -1, 14, -1,
6, -1, 7, -1, 13, -1, 17, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
0, 75, 75, 76, 80, 81, 85, 90, 95, 100,
106, 112, 117, 122, 127, 128, 129, 130, 131, 132,
133
0, 75, 75, 76, 80, 81, 85, 90, 95, 106,
117, 122, 128, 134, 139, 144, 149, 150, 151, 152,
153, 154, 155
};
#endif
@@ -508,9 +510,9 @@ static const char *const yytname[] =
"\"if (condition)\"", "\"truthy (true, on, yes or enabled)\"",
"\"falsy (false, off, no or disabled)\"",
"\"string (some input, perhaps)\"", "\": (colon)\"",
"\":: (double colon)\"", "\"# (pound sign)\"", "\"digits (numbers)\"",
"\"literal (string)\"", "\"address\"", "\"opcode\"",
"\"identifier (command or function name)\"",
"\":: (double colon)\"", "\"# (pound sign)\"", "\"protocol (file://)\"",
"\"digits (numbers)\"", "\"literal (string)\"", "\"address\"",
"\"opcode\"", "\"identifier (command or function name)\"",
"\"input (input string or data)\"", "\"input\"", "$accept", "input",
"parameters", "parameter", YY_NULL
};
@@ -522,24 +524,24 @@ 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, 271, 272, 273
265, 266, 267, 268, 269, 270, 271, 272, 273, 274
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
0, 19, 20, 20, 21, 21, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22
0, 20, 21, 21, 22, 22, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 1, 0, 1, 2, 3, 4, 3, 5,
3, 2, 2, 2, 1, 1, 1, 1, 1, 1,
1
0, 2, 1, 0, 1, 2, 3, 4, 4, 5,
3, 5, 3, 2, 2, 2, 1, 1, 1, 1,
1, 1, 1
};
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -547,31 +549,33 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
3, 0, 0, 0, 17, 18, 19, 16, 15, 14,
20, 0, 2, 4, 12, 13, 11, 0, 0, 0,
1, 5, 0, 6, 8, 10, 7, 0, 9
3, 0, 0, 0, 19, 20, 0, 21, 18, 17,
16, 22, 0, 2, 4, 14, 15, 13, 0, 0,
0, 0, 1, 5, 0, 0, 6, 10, 12, 0,
8, 7, 0, 9, 11
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
-1, 11, 12, 13
-1, 12, 13, 14
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
#define YYPACT_NINF -10
#define YYPACT_NINF -11
static const yytype_int8 yypact[] =
{
-3, -9, -1, 0, -10, -10, -10, -10, -10, -10,
-4, 18, -3, -10, -10, -10, -10, 3, 4, 7,
-10, -10, 9, -10, 11, -10, -10, 12, -10
-3, -10, 1, 2, -11, -11, 6, -11, -11, -11,
-11, -4, 21, -3, -11, -11, -11, -11, 13, 4,
7, 12, -11, -11, 5, 14, -11, 15, -11, 16,
-11, -11, 17, -11, -11
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int8 yypgoto[] =
{
-10, -10, -10, 13
-11, -11, -11, 18
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -580,22 +584,24 @@ static const yytype_int8 yypgoto[] =
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
1, 2, 3, 4, 5, 17, 18, 19, 14, 6,
7, 8, 9, 10, 22, 23, 15, 16, 20, 25,
24, 26, 27, 0, 28, 21
1, 2, 3, 4, 5, 19, 20, 21, 15, 6,
7, 8, 9, 10, 11, 25, 29, 26, 30, 16,
17, 22, 24, 18, 27, 28, 32, 31, 0, 33,
34, 23
};
#define yypact_value_is_default(Yystate) \
(!!((Yystate) == (-10)))
(!!((Yystate) == (-11)))
#define yytable_value_is_error(Yytable_value) \
YYID (0)
static const yytype_int8 yycheck[] =
{
3, 4, 5, 6, 7, 9, 10, 11, 17, 12,
13, 14, 15, 16, 11, 12, 17, 17, 0, 12,
16, 12, 11, -1, 12, 12
3, 4, 5, 6, 7, 9, 10, 11, 18, 12,
13, 14, 15, 16, 17, 11, 11, 13, 13, 18,
18, 0, 9, 17, 17, 13, 11, 13, -1, 13,
13, 13
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -603,8 +609,9 @@ static const yytype_int8 yycheck[] =
static const yytype_uint8 yystos[] =
{
0, 3, 4, 5, 6, 7, 12, 13, 14, 15,
16, 20, 21, 22, 17, 17, 17, 9, 10, 11,
0, 22, 11, 12, 16, 12, 12, 11, 12
16, 17, 21, 22, 23, 18, 18, 18, 17, 9,
10, 11, 0, 23, 9, 11, 13, 17, 13, 11,
13, 13, 11, 13, 13
};
#define yyerrok (yyerrstatus = 0)
@@ -1447,7 +1454,7 @@ yyreduce:
#line 85 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
(yyval).file.name = (yyvsp[(1) - (3)]).str;
(yyval).file.name = (yyvsp[(2) - (3)]).str;
(yyval).file.line = (yyvsp[(3) - (3)]).num;
}
break;
@@ -1465,6 +1472,38 @@ yyreduce:
case 8:
/* Line 1792 of yacc.c */
#line 95 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
(yyval).file.name = malloc((yyvsp[(1) - (4)]).len +
(yyvsp[(2) - (4)]).len + 1);
if ((yyval).file.name) {
memcpy(&(yyval).file.name[0], (yyvsp[(1) - (4)]).str, (yyvsp[(1) - (4)]).len);
memcpy(&(yyval).file.name[(yyvsp[(1) - (4)]).len], (yyvsp[(2) - (4)]).str, (yyvsp[(2) - (4)]).len);
(yyval).file.name[(yyvsp[(1) - (4)]).len + (yyvsp[(2) - (4)]).len] = '\0';
}
(yyval).file.line = (yyvsp[(4) - (4)]).num;
}
break;
case 9:
/* Line 1792 of yacc.c */
#line 106 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FILE_PARAM;
(yyval).file.name = malloc((yyvsp[(1) - (5)]).len +
(yyvsp[(2) - (5)]).len + 1);
if ((yyval).file.name) {
memcpy(&(yyval).file.name[0], (yyvsp[(1) - (5)]).str, (yyvsp[(1) - (5)]).len);
memcpy(&(yyval).file.name[(yyvsp[(1) - (5)]).len], (yyvsp[(2) - (5)]).str, (yyvsp[(2) - (5)]).len);
(yyval).file.name[(yyvsp[(1) - (5)]).len + (yyvsp[(2) - (5)]).len] = '\0';
}
(yyval).file.line = (yyvsp[(5) - (5)]).num;
}
break;
case 10:
/* Line 1792 of yacc.c */
#line 117 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (3)]).str;
@@ -1472,9 +1511,9 @@ yyreduce:
}
break;
case 9:
case 11:
/* Line 1792 of yacc.c */
#line 100 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 122 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = NUMERIC_METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (5)]).str;
@@ -1483,9 +1522,9 @@ yyreduce:
}
break;
case 10:
case 12:
/* Line 1792 of yacc.c */
#line 106 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 128 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FUNCTION_PARAM;
(yyval).str = (yyvsp[(1) - (3)]).str;
@@ -1494,9 +1533,9 @@ yyreduce:
}
break;
case 11:
case 13:
/* Line 1792 of yacc.c */
#line 112 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 134 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = COND_PARAM;
(yyval).str = (yyvsp[(2) - (2)]).str;
@@ -1504,9 +1543,9 @@ yyreduce:
}
break;
case 12:
case 14:
/* Line 1792 of yacc.c */
#line 117 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 139 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = EVAL_PARAM;
(yyval).str = (yyvsp[(2) - (2)]).str;
@@ -1514,9 +1553,9 @@ yyreduce:
}
break;
case 13:
case 15:
/* Line 1792 of yacc.c */
#line 122 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 144 "sapi/phpdbg/dev/phpdbg_parser.y"
{
(yyval).type = SHELL_PARAM;
(yyval).str = (yyvsp[(2) - (2)]).str;
@@ -1524,51 +1563,51 @@ yyreduce:
}
break;
case 14:
/* Line 1792 of yacc.c */
#line 127 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 15:
/* Line 1792 of yacc.c */
#line 128 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 16:
/* Line 1792 of yacc.c */
#line 129 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 149 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 17:
/* Line 1792 of yacc.c */
#line 130 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 150 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 18:
/* Line 1792 of yacc.c */
#line 131 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 151 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 19:
/* Line 1792 of yacc.c */
#line 132 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 152 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 20:
/* Line 1792 of yacc.c */
#line 133 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 153 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 21:
/* Line 1792 of yacc.c */
#line 154 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 22:
/* Line 1792 of yacc.c */
#line 155 "sapi/phpdbg/dev/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
/* Line 1792 of yacc.c */
#line 1572 "sapi/phpdbg/phpdbg_parser.c"
#line 1611 "sapi/phpdbg/phpdbg_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -1800,5 +1839,5 @@ yyreturn:
/* Line 2055 of yacc.c */
#line 136 "sapi/phpdbg/dev/phpdbg_parser.y"
#line 158 "sapi/phpdbg/dev/phpdbg_parser.y"
+8 -7
View File
@@ -68,13 +68,14 @@ typedef void* yyscan_t;
T_COLON = 264,
T_DCOLON = 265,
T_POUND = 266,
T_DIGITS = 267,
T_LITERAL = 268,
T_ADDR = 269,
T_OPCODE = 270,
T_ID = 271,
T_INPUT = 272,
T_UNEXPECTED = 273
T_PROTO = 267,
T_DIGITS = 268,
T_LITERAL = 269,
T_ADDR = 270,
T_OPCODE = 271,
T_ID = 272,
T_INPUT = 273,
T_UNEXPECTED = 274
};
#endif