Skip to content

Instantly share code, notes, and snippets.

@yohgaki
Created August 4, 2016 05:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yohgaki/87e50ee4fa871232da92ba8c1c1bea6e to your computer and use it in GitHub Desktop.
Save yohgaki/87e50ee4fa871232da92ba8c1c1bea6e to your computer and use it in GitHub Desktop.
diff --git a/ext/standard/tests/general_functions/url_rewriter.phpt b/ext/standard/tests/general_functions/url_rewriter.phpt
new file mode 100644
index 0000000..ce91b27
--- /dev/null
+++ b/ext/standard/tests/general_functions/url_rewriter.phpt
@@ -0,0 +1,139 @@
+--TEST--
+URL Rewriter tests
+--INI--
+url_rewriter.tags="a=href,form="
+session.use_only_cookies=0
+session.use_trans_sid=1
+session.use_strict_mode=0
+--FILE--
+<?php
+session_id('id');
+
+$_SERVER['HTTP_HOST'] = 'php.net';
+session_start();
+output_add_rewrite_var('a','b');
+?>
+
+<a></a>
+<a href=""></a>
+<a href="foo"></a>
+<a href="?foo"></a>
+<a href="/foo"></a>
+<a href="foo=bar"></a>
+<a href="foo.php#bar"></a>
+<a href="../foo.php#bar"></a>
+
+<a href="//bad.net/foo"></a>
+<a href="//bad.net/?foo"></a>
+<a href="//bad.net/foo"></a>
+<a href="//bad.net/foo=bar"></a>
+<a href="//bad.net/foo.php#bar"></a>
+<a href="//bad.net/../foo.php#bar"></a>
+
+<a href="//php.net/foo"></a>
+<a href="//php.net/?foo"></a>
+<a href="//php.net//foo"></a>
+<a href="//php.net/foo=bar"></a>
+<a href="//php.net/foo.php#bar"></a>
+
+<a href="http://bad.net/foo"></a>
+<a href="http://bad.net/?foo"></a>
+<a href="http://bad.net/foo"></a>
+<a href="http://bad.net/foo=bar"></a>
+<a href="http://bad.net/foo.php#bar"></a>
+<a href="http://bad.net/../foo.php#bar"></a>
+
+<a href="http://php.net/foo"></a>
+<a href="http://php.net/?foo"></a>
+<a href="http://php.net//foo"></a>
+<a href="http://php.net/foo=bar"></a>
+<a href="http://php.net/foo.php#bar"></a>
+<a href="http://php.net/../foo.php#bar"></a>
+
+<a href="bad://bad.net/foo"></a>
+<a href="bad://bad.net/?foo"></a>
+<a href="bad://bad.net/foo"></a>
+<a href="bad://bad.net/foo=bar"></a>
+<a href="bad://bad.net/foo.php#bar"></a>
+<a href="bad://bad.net/../foo.php#bar"></a>
+
+<a href="bad://php.net/foo"></a>
+<a href="bad://php.net/?foo"></a>
+<a href="bad://php.net//foo"></a>
+<a href="bad://php.net/foo=bar"></a>
+<a href="bad://php.net/foo.php#bar"></a>
+<a href="bad://php.net/../foo.php#bar"></a>
+
+<form></form>
+<form action=""></form>
+<form action="foo.php"></form>
+<form action="//php.net/foo.php"></form>
+<form action="http://php.net/foo.php"></form>
+
+<form action="bad://php.net/foo.php"></form>
+<form action="//bad.net/foo.php"></form>
+<form action="http://php.net/foo.php"></form>
+<form action="bad://php.net/foo.php"></form>
+<form action="//bad.net/foo.php"></form>
+--EXPECT--
+<a></a>
+<a href="?PHPSESSID=id&a=b"></a>
+<a href="foo?PHPSESSID=id&a=b"></a>
+<a href="?foo&PHPSESSID=id&a=b"></a>
+<a href="/foo?PHPSESSID=id&a=b"></a>
+<a href="foo=bar?PHPSESSID=id&a=b"></a>
+<a href="foo.php?PHPSESSID=id&a=b#bar"></a>
+<a href="../foo.php?PHPSESSID=id&a=b#bar"></a>
+
+<a href="//bad.net/foo"></a>
+<a href="//bad.net/?foo"></a>
+<a href="//bad.net/foo"></a>
+<a href="//bad.net/foo=bar"></a>
+<a href="//bad.net/foo.php#bar"></a>
+<a href="//bad.net/../foo.php#bar"></a>
+
+<a href="//php.net/foo?PHPSESSID=id&a=b"></a>
+<a href="//php.net/?foo&PHPSESSID=id&a=b"></a>
+<a href="//php.net//foo?PHPSESSID=id&a=b"></a>
+<a href="//php.net/foo=bar?PHPSESSID=id&a=b"></a>
+<a href="//php.net/foo.php?PHPSESSID=id&a=b#bar"></a>
+
+<a href="http://bad.net/foo"></a>
+<a href="http://bad.net/?foo"></a>
+<a href="http://bad.net/foo"></a>
+<a href="http://bad.net/foo=bar"></a>
+<a href="http://bad.net/foo.php#bar"></a>
+<a href="http://bad.net/../foo.php#bar"></a>
+
+<a href="http://php.net/foo"></a>
+<a href="http://php.net/?foo"></a>
+<a href="http://php.net//foo"></a>
+<a href="http://php.net/foo=bar"></a>
+<a href="http://php.net/foo.php#bar"></a>
+<a href="http://php.net/../foo.php#bar"></a>
+
+<a href="bad://bad.net/foo"></a>
+<a href="bad://bad.net/?foo"></a>
+<a href="bad://bad.net/foo"></a>
+<a href="bad://bad.net/foo=bar"></a>
+<a href="bad://bad.net/foo.php#bar"></a>
+<a href="bad://bad.net/../foo.php#bar"></a>
+
+<a href="bad://php.net/foo"></a>
+<a href="bad://php.net/?foo"></a>
+<a href="bad://php.net//foo"></a>
+<a href="bad://php.net/foo=bar"></a>
+<a href="bad://php.net/foo.php#bar"></a>
+<a href="bad://php.net/../foo.php#bar"></a>
+
+<form><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action=""><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="//php.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="http://php.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+
+<form action="bad://php.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="//bad.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="http://php.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="bad://php.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
+<form action="//bad.net/foo.php"><input type="hidden" name="PHPSESSID" value="id" /><input type="hidden" name="a" value="b" /></form>
diff --git a/ext/standard/url_scanner_ex.c b/ext/standard/url_scanner_ex.c
index 07ebbe0..5db9c6d 100644
--- a/ext/standard/url_scanner_ex.c
+++ b/ext/standard/url_scanner_ex.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 */
+/* Generated by re2c 0.14.3 */
#line 1 "ext/standard/url_scanner_ex.re"
/*
+----------------------------------------------------------------------+
@@ -115,11 +115,37 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st
const char *bash = NULL;
const char *sep = "?";
+ /*
+ * Don't modify "//example.com" full path, unless
+ * HTTP_HOST matches.
+ */
+ if (ZSTR_VAL(url->s)[0] == '/' && ZSTR_VAL(url->s)[1] == '/') {
+ zval *tmp = NULL, *http_host = NULL;
+ size_t target_len, host_len;
+ if ((!(tmp = zend_hash_str_find(&EG(symbol_table), ZEND_STRL("_SERVER"))))
+ || Z_TYPE_P(tmp) != IS_ARRAY
+ || !(http_host = zend_hash_str_find(HASH_OF(tmp), ZEND_STRL("HTTP_HOST")))
+ || Z_TYPE_P(http_host) != IS_STRING) {
+ smart_str_append_smart_str(dest, url);
+ return;
+ }
+ /* HTTP_HOST could be "example.com:8888", etc. */
+ /* Need to find end of URL in buffer */
+ host_len = strcspn(Z_STRVAL_P(http_host), ":");
+ target_len = strcspn(ZSTR_VAL(url->s)+2, "/\"'?>\r\n");
+ if (host_len
+ && host_len == target_len
+ && strncasecmp(Z_STRVAL_P(http_host), ZSTR_VAL(url->s)+2, host_len)) {
+ smart_str_append_smart_str(dest, url);
+ return;
+ }
+ }
+
q = (p = ZSTR_VAL(url->s)) + ZSTR_LEN(url->s);
scan:
-#line 123 "ext/standard/url_scanner_ex.c"
+#line 149 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -162,22 +188,22 @@ scan:
if (yybm[0+yych] & 128) {
goto yy8;
}
- if (yych <= '9') goto yy6;
+ if (yych <= '#') goto yy6;
if (yych >= ';') goto yy4;
++YYCURSOR;
-#line 125 "ext/standard/url_scanner_ex.re"
+#line 151 "ext/standard/url_scanner_ex.re"
{ smart_str_append_smart_str(dest, url); return; }
-#line 171 "ext/standard/url_scanner_ex.c"
+#line 197 "ext/standard/url_scanner_ex.c"
yy4:
++YYCURSOR;
-#line 126 "ext/standard/url_scanner_ex.re"
+#line 152 "ext/standard/url_scanner_ex.re"
{ sep = separator; goto scan; }
-#line 176 "ext/standard/url_scanner_ex.c"
+#line 202 "ext/standard/url_scanner_ex.c"
yy6:
++YYCURSOR;
-#line 127 "ext/standard/url_scanner_ex.re"
+#line 153 "ext/standard/url_scanner_ex.re"
{ bash = p - 1; goto done; }
-#line 181 "ext/standard/url_scanner_ex.c"
+#line 207 "ext/standard/url_scanner_ex.c"
yy8:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -185,11 +211,11 @@ yy8:
if (yybm[0+yych] & 128) {
goto yy8;
}
-#line 128 "ext/standard/url_scanner_ex.re"
+#line 154 "ext/standard/url_scanner_ex.re"
{ goto scan; }
-#line 191 "ext/standard/url_scanner_ex.c"
+#line 217 "ext/standard/url_scanner_ex.c"
}
-#line 129 "ext/standard/url_scanner_ex.re"
+#line 155 "ext/standard/url_scanner_ex.re"
done:
@@ -374,7 +400,7 @@ state_plain_begin:
state_plain:
start = YYCURSOR;
-#line 378 "ext/standard/url_scanner_ex.c"
+#line 404 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -417,9 +443,9 @@ state_plain:
goto yy15;
}
++YYCURSOR;
-#line 313 "ext/standard/url_scanner_ex.re"
+#line 339 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
-#line 423 "ext/standard/url_scanner_ex.c"
+#line 449 "ext/standard/url_scanner_ex.c"
yy15:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -427,17 +453,17 @@ yy15:
if (yybm[0+yych] & 128) {
goto yy15;
}
-#line 314 "ext/standard/url_scanner_ex.re"
+#line 340 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_plain; }
-#line 433 "ext/standard/url_scanner_ex.c"
+#line 459 "ext/standard/url_scanner_ex.c"
}
-#line 315 "ext/standard/url_scanner_ex.re"
+#line 341 "ext/standard/url_scanner_ex.re"
state_tag:
start = YYCURSOR;
-#line 441 "ext/standard/url_scanner_ex.c"
+#line 467 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -488,14 +514,14 @@ yy20:
yych = *YYCURSOR;
goto yy25;
yy21:
-#line 320 "ext/standard/url_scanner_ex.re"
+#line 346 "ext/standard/url_scanner_ex.re"
{ handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
-#line 494 "ext/standard/url_scanner_ex.c"
+#line 520 "ext/standard/url_scanner_ex.c"
yy22:
++YYCURSOR;
-#line 321 "ext/standard/url_scanner_ex.re"
+#line 347 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_plain_begin; }
-#line 499 "ext/standard/url_scanner_ex.c"
+#line 525 "ext/standard/url_scanner_ex.c"
yy24:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -506,7 +532,7 @@ yy25:
}
goto yy21;
}
-#line 322 "ext/standard/url_scanner_ex.re"
+#line 348 "ext/standard/url_scanner_ex.re"
state_next_arg_begin:
@@ -515,7 +541,7 @@ state_next_arg_begin:
state_next_arg:
start = YYCURSOR;
-#line 519 "ext/standard/url_scanner_ex.c"
+#line 545 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -580,28 +606,28 @@ yy28:
++YYCURSOR;
if ((yych = *YYCURSOR) == '>') goto yy39;
yy29:
-#line 333 "ext/standard/url_scanner_ex.re"
+#line 359 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_plain_begin; }
-#line 586 "ext/standard/url_scanner_ex.c"
+#line 612 "ext/standard/url_scanner_ex.c"
yy30:
++YYCURSOR;
yy31:
-#line 330 "ext/standard/url_scanner_ex.re"
+#line 356 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
-#line 592 "ext/standard/url_scanner_ex.c"
+#line 618 "ext/standard/url_scanner_ex.c"
yy32:
++YYCURSOR;
yych = *YYCURSOR;
goto yy38;
yy33:
-#line 331 "ext/standard/url_scanner_ex.re"
+#line 357 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_next_arg; }
-#line 600 "ext/standard/url_scanner_ex.c"
+#line 626 "ext/standard/url_scanner_ex.c"
yy34:
++YYCURSOR;
-#line 332 "ext/standard/url_scanner_ex.re"
+#line 358 "ext/standard/url_scanner_ex.re"
{ --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
-#line 605 "ext/standard/url_scanner_ex.c"
+#line 631 "ext/standard/url_scanner_ex.c"
yy36:
yych = *++YYCURSOR;
goto yy29;
@@ -619,13 +645,13 @@ yy39:
yych = *YYCURSOR;
goto yy31;
}
-#line 334 "ext/standard/url_scanner_ex.re"
+#line 360 "ext/standard/url_scanner_ex.re"
state_arg:
start = YYCURSOR;
-#line 629 "ext/standard/url_scanner_ex.c"
+#line 655 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -673,14 +699,14 @@ yy42:
yych = *YYCURSOR;
goto yy47;
yy43:
-#line 339 "ext/standard/url_scanner_ex.re"
+#line 365 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; }
-#line 679 "ext/standard/url_scanner_ex.c"
+#line 705 "ext/standard/url_scanner_ex.c"
yy44:
++YYCURSOR;
-#line 340 "ext/standard/url_scanner_ex.re"
+#line 366 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
-#line 684 "ext/standard/url_scanner_ex.c"
+#line 710 "ext/standard/url_scanner_ex.c"
yy46:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -691,13 +717,13 @@ yy47:
}
goto yy43;
}
-#line 341 "ext/standard/url_scanner_ex.re"
+#line 367 "ext/standard/url_scanner_ex.re"
state_before_val:
start = YYCURSOR;
-#line 701 "ext/standard/url_scanner_ex.c"
+#line 727 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -744,17 +770,17 @@ yy50:
if (yych == ' ') goto yy57;
if (yych == '=') goto yy55;
yy51:
-#line 347 "ext/standard/url_scanner_ex.re"
+#line 373 "ext/standard/url_scanner_ex.re"
{ --YYCURSOR; goto state_next_arg_begin; }
-#line 750 "ext/standard/url_scanner_ex.c"
+#line 776 "ext/standard/url_scanner_ex.c"
yy52:
++YYCURSOR;
yych = *YYCURSOR;
goto yy56;
yy53:
-#line 346 "ext/standard/url_scanner_ex.re"
+#line 372 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
-#line 758 "ext/standard/url_scanner_ex.c"
+#line 784 "ext/standard/url_scanner_ex.c"
yy54:
yych = *++YYCURSOR;
goto yy51;
@@ -776,14 +802,14 @@ yy57:
YYCURSOR = YYMARKER;
goto yy51;
}
-#line 348 "ext/standard/url_scanner_ex.re"
+#line 374 "ext/standard/url_scanner_ex.re"
state_val:
start = YYCURSOR;
-#line 787 "ext/standard/url_scanner_ex.c"
+#line 813 "ext/standard/url_scanner_ex.c"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
@@ -844,9 +870,9 @@ state_val:
yych = *(YYMARKER = ++YYCURSOR);
if (yych != '>') goto yy76;
yy63:
-#line 357 "ext/standard/url_scanner_ex.re"
+#line 383 "ext/standard/url_scanner_ex.re"
{ passthru(STD_ARGS); goto state_next_arg_begin; }
-#line 850 "ext/standard/url_scanner_ex.c"
+#line 876 "ext/standard/url_scanner_ex.c"
yy64:
yych = *(YYMARKER = ++YYCURSOR);
if (yych == '>') goto yy63;
@@ -856,9 +882,9 @@ yy65:
yych = *YYCURSOR;
goto yy69;
yy66:
-#line 356 "ext/standard/url_scanner_ex.re"
+#line 382 "ext/standard/url_scanner_ex.re"
{ handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
-#line 862 "ext/standard/url_scanner_ex.c"
+#line 888 "ext/standard/url_scanner_ex.c"
yy67:
yych = *++YYCURSOR;
goto yy63;
@@ -879,15 +905,15 @@ yy71:
if (yybm[0+yych] & 64) {
goto yy70;
}
- if (yych <= '=') goto yy73;
+ if (yych <= '\'') goto yy73;
yy72:
YYCURSOR = YYMARKER;
goto yy63;
yy73:
++YYCURSOR;
-#line 355 "ext/standard/url_scanner_ex.re"
+#line 381 "ext/standard/url_scanner_ex.re"
{ handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
-#line 891 "ext/standard/url_scanner_ex.c"
+#line 917 "ext/standard/url_scanner_ex.c"
yy75:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -896,13 +922,13 @@ yy76:
if (yybm[0+yych] & 128) {
goto yy75;
}
- if (yych >= '>') goto yy72;
+ if (yych >= '#') goto yy72;
++YYCURSOR;
-#line 354 "ext/standard/url_scanner_ex.re"
+#line 380 "ext/standard/url_scanner_ex.re"
{ handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
-#line 904 "ext/standard/url_scanner_ex.c"
+#line 930 "ext/standard/url_scanner_ex.c"
}
-#line 358 "ext/standard/url_scanner_ex.re"
+#line 384 "ext/standard/url_scanner_ex.re"
stop:
diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re
index 9eb0952..945f547 100644
--- a/ext/standard/url_scanner_ex.re
+++ b/ext/standard/url_scanner_ex.re
@@ -118,6 +118,32 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st
const char *bash = NULL;
const char *sep = "?";
+ /*
+ * Don't modify "//example.com" full path, unless
+ * HTTP_HOST matches.
+ */
+ if (ZSTR_VAL(url->s)[0] == '/' && ZSTR_VAL(url->s)[1] == '/') {
+ zval *tmp = NULL, *http_host = NULL;
+ size_t target_len, host_len;
+ if ((!(tmp = zend_hash_str_find(&EG(symbol_table), ZEND_STRL("_SERVER"))))
+ || Z_TYPE_P(tmp) != IS_ARRAY
+ || !(http_host = zend_hash_str_find(HASH_OF(tmp), ZEND_STRL("HTTP_HOST")))
+ || Z_TYPE_P(http_host) != IS_STRING) {
+ smart_str_append_smart_str(dest, url);
+ return;
+ }
+ /* HTTP_HOST could be "example.com:8888", etc. */
+ /* Need to find end of URL in buffer */
+ host_len = strcspn(Z_STRVAL_P(http_host), ":");
+ target_len = strcspn(ZSTR_VAL(url->s)+2, "/\"'?>\r\n");
+ if (host_len
+ && host_len == target_len
+ && strncasecmp(Z_STRVAL_P(http_host), ZSTR_VAL(url->s)+2, host_len)) {
+ smart_str_append_smart_str(dest, url);
+ return;
+ }
+ }
+
q = (p = ZSTR_VAL(url->s)) + ZSTR_LEN(url->s);
scan:
diff --git a/sapi/phpdbg/phpdbg_parser.c b/sapi/phpdbg/phpdbg_parser.c
index c5222a0..88aba8f 100644
--- a/sapi/phpdbg/phpdbg_parser.c
+++ b/sapi/phpdbg/phpdbg_parser.c
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+/* A Bison parser, made by GNU Bison 2.6.4. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.7.12-4996"
+#define YYBISON_VERSION "2.6.4"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -69,8 +69,8 @@
#define yynerrs phpdbg_nerrs
/* Copy the first part of user declarations. */
-/* Line 371 of yacc.c */
-#line 1 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 358 of yacc.c */
+#line 1 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
/*
@@ -102,7 +102,7 @@ ZEND_EXTERN_MODULE_GLOBALS(phpdbg)
#endif
-/* Line 371 of yacc.c */
+/* Line 358 of yacc.c */
#line 107 "sapi/phpdbg/phpdbg_parser.c"
# ifndef YY_NULL
@@ -133,8 +133,8 @@ ZEND_EXTERN_MODULE_GLOBALS(phpdbg)
extern int phpdbg_debug;
#endif
/* "%code requires" blocks. */
-/* Line 387 of yacc.c */
-#line 36 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 374 of yacc.c */
+#line 36 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
#include "phpdbg.h"
#ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -143,7 +143,7 @@ typedef void* yyscan_t;
#endif
-/* Line 387 of yacc.c */
+/* Line 374 of yacc.c */
#line 148 "sapi/phpdbg/phpdbg_parser.c"
/* Tokens. */
@@ -174,28 +174,6 @@ typedef void* yyscan_t;
T_REQ_ID = 277
};
#endif
-/* Tokens. */
-#define T_EVAL 258
-#define T_RUN 259
-#define T_SHELL 260
-#define T_IF 261
-#define T_TRUTHY 262
-#define T_FALSY 263
-#define T_STRING 264
-#define T_COLON 265
-#define T_DCOLON 266
-#define T_POUND 267
-#define T_SEPARATOR 268
-#define T_PROTO 269
-#define T_DIGITS 270
-#define T_LITERAL 271
-#define T_ADDR 272
-#define T_OPCODE 273
-#define T_ID 274
-#define T_INPUT 275
-#define T_UNEXPECTED 276
-#define T_REQ_ID 277
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -224,8 +202,8 @@ int phpdbg_parse ();
/* Copy the second part of user declarations. */
-/* Line 390 of yacc.c */
-#line 229 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 377 of yacc.c */
+#line 207 "sapi/phpdbg/phpdbg_parser.c"
#ifdef short
# undef short
@@ -286,14 +264,6 @@ typedef short int yytype_int16;
# endif
#endif
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
- || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-# define __attribute__(Spec) /* empty */
-# endif
-#endif
-
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E))
@@ -301,7 +271,6 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
-
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
# define YYID(N) (N)
@@ -710,18 +679,47 @@ do \
} \
while (YYID (0))
-/* Error token number */
+
#define YYTERROR 1
#define YYERRCODE 256
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
/* This macro is provided for backward compatibility. */
+
#ifndef YY_LOCATION_PRINT
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
#endif
/* YYLEX -- calling `yylex' with the right arguments. */
+
#ifdef YYLEX_PARAM
# define YYLEX yylex (&yylval, YYLEX_PARAM)
#else
@@ -781,7 +779,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
# else
YYUSE (yyoutput);
# endif
- YYUSE (yytype);
+ switch (yytype)
+ {
+ default:
+ break;
+ }
}
@@ -1022,6 +1024,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
{
YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
const char *yyformat = YY_NULL;
@@ -1084,13 +1087,11 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
break;
}
yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
}
}
}
@@ -1110,12 +1111,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
# undef YYCASE_
}
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
if (*yymsg_alloc < yysize)
{
@@ -1171,7 +1170,12 @@ yydestruct (yymsg, yytype, yyvaluep)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
- YYUSE (yytype);
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
}
@@ -1207,11 +1211,10 @@ yyparse ()
int yychar;
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && (4 < __GNUC__ + (6 <= __GNUC_MINOR__))
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
@@ -1219,18 +1222,18 @@ int yychar;
/* Default value used for initialization, for pacifying older GCCs
or non-GCC compilers. */
static YYSTYPE yyval_default;
-# define YY_INITIAL_VALUE(Value) = Value
+# define YYLVAL_INITIALIZE() (yylval = yyval_default)
+#endif
+#ifndef YYLVAL_INITIALIZE
+# define YYLVAL_INITIALIZE()
#endif
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+YYSTYPE yylval;
/* Number of syntax errors so far. */
int yynerrs;
@@ -1279,8 +1282,8 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;
+ yyss = yyssa;
+ yyvs = yyvsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1289,6 +1292,15 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ YYLVAL_INITIALIZE ();
goto yysetstate;
/*------------------------------------------------------------.
@@ -1468,50 +1480,50 @@ yyreduce:
switch (yyn)
{
case 2:
-/* Line 1802 of yacc.c */
-#line 71 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 71 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 3:
-/* Line 1802 of yacc.c */
-#line 72 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 72 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ phpdbg_stack_separate((yyvsp[(1) - (3)]).top); (yyval) = (yyvsp[(3) - (3)]); }
break;
case 5:
-/* Line 1802 of yacc.c */
-#line 77 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 77 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval).top = PHPDBG_G(parser_stack)->top; }
break;
case 6:
-/* Line 1802 of yacc.c */
-#line 78 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 78 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); (yyval).top = PHPDBG_G(parser_stack)->top; }
break;
case 7:
-/* Line 1802 of yacc.c */
-#line 82 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 82 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); (yyval).top = PHPDBG_G(parser_stack)->top; }
break;
case 8:
-/* Line 1802 of yacc.c */
-#line 83 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 83 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(2) - (2)])); (yyval).top = PHPDBG_G(parser_stack)->top; }
break;
case 9:
-/* Line 1802 of yacc.c */
-#line 84 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 84 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (2)]); }
break;
case 10:
-/* Line 1802 of yacc.c */
-#line 88 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 88 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
(yyval).file.name = (yyvsp[(2) - (3)]).str;
@@ -1520,8 +1532,8 @@ yyreduce:
break;
case 11:
-/* Line 1802 of yacc.c */
-#line 93 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 93 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FILE_PARAM;
(yyval).file.name = (yyvsp[(1) - (4)]).str;
@@ -1530,8 +1542,8 @@ yyreduce:
break;
case 12:
-/* Line 1802 of yacc.c */
-#line 98 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 98 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
(yyval).file.name = malloc((yyvsp[(1) - (4)]).len + (yyvsp[(2) - (4)]).len + 1);
@@ -1545,8 +1557,8 @@ yyreduce:
break;
case 13:
-/* Line 1802 of yacc.c */
-#line 108 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 108 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FILE_PARAM;
(yyval).file.name = malloc((yyvsp[(1) - (5)]).len + (yyvsp[(2) - (5)]).len + 1);
@@ -1560,8 +1572,8 @@ yyreduce:
break;
case 14:
-/* Line 1802 of yacc.c */
-#line 118 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 118 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (3)]).str;
@@ -1570,8 +1582,8 @@ yyreduce:
break;
case 15:
-/* Line 1802 of yacc.c */
-#line 123 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 123 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (5)]).str;
@@ -1581,8 +1593,8 @@ yyreduce:
break;
case 16:
-/* Line 1802 of yacc.c */
-#line 129 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 129 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FUNCTION_PARAM;
(yyval).str = (yyvsp[(1) - (3)]).str;
@@ -1592,8 +1604,8 @@ yyreduce:
break;
case 17:
-/* Line 1802 of yacc.c */
-#line 135 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 135 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = COND_PARAM;
(yyval).str = (yyvsp[(2) - (2)]).str;
@@ -1602,56 +1614,56 @@ yyreduce:
break;
case 18:
-/* Line 1802 of yacc.c */
-#line 140 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 140 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 19:
-/* Line 1802 of yacc.c */
-#line 141 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 141 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 20:
-/* Line 1802 of yacc.c */
-#line 142 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 142 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 21:
-/* Line 1802 of yacc.c */
-#line 143 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 143 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 22:
-/* Line 1802 of yacc.c */
-#line 144 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 144 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 23:
-/* Line 1802 of yacc.c */
-#line 145 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 145 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 24:
-/* Line 1802 of yacc.c */
-#line 146 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 146 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 25:
-/* Line 1802 of yacc.c */
-#line 150 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 150 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{ PHPDBG_G(req_id) = (yyvsp[(1) - (1)]).num; }
break;
case 27:
-/* Line 1802 of yacc.c */
-#line 155 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 155 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = EVAL_PARAM;
(yyval).str = (yyvsp[(3) - (3)]).str;
@@ -1660,8 +1672,8 @@ yyreduce:
break;
case 28:
-/* Line 1802 of yacc.c */
-#line 160 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 160 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = SHELL_PARAM;
(yyval).str = (yyvsp[(3) - (3)]).str;
@@ -1670,8 +1682,8 @@ yyreduce:
break;
case 29:
-/* Line 1802 of yacc.c */
-#line 165 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 165 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = RUN_PARAM;
(yyval).len = 0;
@@ -1679,8 +1691,8 @@ yyreduce:
break;
case 30:
-/* Line 1802 of yacc.c */
-#line 169 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 1813 of yacc.c */
+#line 169 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = RUN_PARAM;
(yyval).str = (yyvsp[(3) - (3)]).str;
@@ -1689,8 +1701,8 @@ yyreduce:
break;
-/* Line 1802 of yacc.c */
-#line 1694 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 1813 of yacc.c */
+#line 1706 "sapi/phpdbg/phpdbg_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -1921,8 +1933,8 @@ yyreturn:
}
-/* Line 2050 of yacc.c */
-#line 176 "sapi/phpdbg/phpdbg_parser.y"
+/* Line 2076 of yacc.c */
+#line 176 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
static int yyerror(const char *msg) {
diff --git a/sapi/phpdbg/phpdbg_parser.h b/sapi/phpdbg/phpdbg_parser.h
index 38d3ecb..59992fb 100644
--- a/sapi/phpdbg/phpdbg_parser.h
+++ b/sapi/phpdbg/phpdbg_parser.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+/* A Bison parser, made by GNU Bison 2.6.4. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -40,8 +40,8 @@
extern int phpdbg_debug;
#endif
/* "%code requires" blocks. */
-/* Line 2060 of yacc.c */
-#line 36 "/Users/Bob/php-src-X/sapi/phpdbg/phpdbg_parser.y"
+/* Line 2077 of yacc.c */
+#line 36 "/home/yohgaki/workspace/ext/git/oss/php.net/github-php-src/sapi/phpdbg/phpdbg_parser.y"
#include "phpdbg.h"
#ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -50,7 +50,7 @@ typedef void* yyscan_t;
#endif
-/* Line 2060 of yacc.c */
+/* Line 2077 of yacc.c */
#line 55 "sapi/phpdbg/phpdbg_parser.h"
/* Tokens. */
@@ -81,28 +81,6 @@ typedef void* yyscan_t;
T_REQ_ID = 277
};
#endif
-/* Tokens. */
-#define T_EVAL 258
-#define T_RUN 259
-#define T_SHELL 260
-#define T_IF 261
-#define T_TRUTHY 262
-#define T_FALSY 263
-#define T_STRING 264
-#define T_COLON 265
-#define T_DCOLON 266
-#define T_POUND 267
-#define T_SEPARATOR 268
-#define T_PROTO 269
-#define T_DIGITS 270
-#define T_LITERAL 271
-#define T_ADDR 272
-#define T_OPCODE 273
-#define T_ID 274
-#define T_INPUT 275
-#define T_UNEXPECTED 276
-#define T_REQ_ID 277
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment