summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2014-06-09 10:06:29 +0200
committerBob Weinand <bobwei9@hotmail.com>2014-06-09 10:06:29 +0200
commit6adc30028cfd04a1c6bcb0866de2fb22dae49ef5 (patch)
tree0e46646d08d8b28a3e02de8b9eab1a9bf52b166a
parentbe133d4eebb3856d76e935d618b2cccb262145b4 (diff)
parent158b03fdef46458604d9ada7560f062bd36b8ef6 (diff)
downloadphp-git-6adc30028cfd04a1c6bcb0866de2fb22dae49ef5.tar.gz
Merge sapi/phpdbg into PHP-5.6
-rw-r--r--sapi/phpdbg/.gitignore1
-rw-r--r--sapi/phpdbg/Makefile.frag15
-rw-r--r--sapi/phpdbg/config.m42
-rw-r--r--sapi/phpdbg/phpdbg.h7
-rw-r--r--sapi/phpdbg/phpdbg_lexer.c3121
-rw-r--r--sapi/phpdbg/phpdbg_lexer.h385
-rw-r--r--sapi/phpdbg/phpdbg_lexer.l270
-rw-r--r--sapi/phpdbg/phpdbg_parser.c550
-rw-r--r--sapi/phpdbg/phpdbg_parser.h24
-rw-r--r--sapi/phpdbg/phpdbg_parser.y152
-rw-r--r--sapi/phpdbg/phpdbg_prompt.c37
-rwxr-xr-xsapi/phpdbg/travis/ci.sh1
12 files changed, 1522 insertions, 3043 deletions
diff --git a/sapi/phpdbg/.gitignore b/sapi/phpdbg/.gitignore
index 5506a2652d..51165dab2f 100644
--- a/sapi/phpdbg/.gitignore
+++ b/sapi/phpdbg/.gitignore
@@ -2,4 +2,5 @@
phpdbg
*.lo
*.o
+*.output
build
diff --git a/sapi/phpdbg/Makefile.frag b/sapi/phpdbg/Makefile.frag
index 45768de2ef..d787b0fb18 100644
--- a/sapi/phpdbg/Makefile.frag
+++ b/sapi/phpdbg/Makefile.frag
@@ -8,14 +8,17 @@ $(BUILD_SHARED): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_PHPDBG_OBJS)
$(BUILD_BINARY): $(PHP_GLOBAL_OBJS) $(PHP_BINARY_OBJS) $(PHP_PHPDBG_OBJS)
$(BUILD_PHPDBG)
-$(builddir)/sapi/phpdbg/phpdbg_lexer.lo: $(srcdir)/sapi/phpdbg/phpdbg_parser.h
+%.c: %.y
+%.c: %.l
-$(srcdir)/sapi/phpdbg/phpdbg_lexer.c: $(srcdir)/sapi/phpdbg/phpdbg_lexer.l
- @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --no-generation-date -cbdFo sapi/phpdbg/phpdbg_lexer.c sapi/phpdbg/phpdbg_lexer.l)
+$(builddir)/phpdbg_lexer.lo: $(srcdir)/phpdbg_parser.h
-$(srcdir)/sapi/phpdbg/phpdbg_parser.h: $(srcdir)/sapi/phpdbg/phpdbg_parser.c
-$(srcdir)/sapi/phpdbg/phpdbg_parser.c: $(srcdir)/sapi/phpdbg/phpdbg_parser.y
- @$(YACC) -p phpdbg_ -v -d $(srcdir)/sapi/phpdbg/phpdbg_parser.y -o $@
+$(srcdir)/phpdbg_lexer.c: $(srcdir)/phpdbg_lexer.l
+ @(cd $(top_srcdir); $(RE2C) $(RE2C_FLAGS) --no-generation-date -cbdFo $(srcdir)/phpdbg_lexer.c $(srcdir)/phpdbg_lexer.l)
+
+$(srcdir)/phpdbg_parser.h: $(srcdir)/phpdbg_parser.c
+$(srcdir)/phpdbg_parser.c: $(srcdir)/phpdbg_parser.y
+ @$(YACC) -p phpdbg_ -v -d $(srcdir)/phpdbg_parser.y -o $@
install-phpdbg: $(BUILD_BINARY)
@echo "Installing phpdbg binary: $(INSTALL_ROOT)$(bindir)/"
diff --git a/sapi/phpdbg/config.m4 b/sapi/phpdbg/config.m4
index a1b2f9faa1..ecac171506 100644
--- a/sapi/phpdbg/config.m4
+++ b/sapi/phpdbg/config.m4
@@ -28,7 +28,7 @@ if test "$PHP_PHPDBG" != "no"; then
PHP_SUBST(PHP_PHPDBG_FILES)
PHP_SUBST(PHPDBG_EXTRA_LIBS)
- PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/phpdbg/Makefile.frag])
+ PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/phpdbg/Makefile.frag], [$abs_srcdir/sapi/phpdbg], [$abs_builddir/sapi/phpdbg])
PHP_SELECT_SAPI(phpdbg, program, $PHP_PHPDBG_FILES, $PHP_PHPDBG_CFLAGS, [$(SAPI_PHPDBG_PATH)])
BUILD_BINARY="sapi/phpdbg/phpdbg"
diff --git a/sapi/phpdbg/phpdbg.h b/sapi/phpdbg/phpdbg.h
index be009e40d0..12350d5425 100644
--- a/sapi/phpdbg/phpdbg.h
+++ b/sapi/phpdbg/phpdbg.h
@@ -69,11 +69,14 @@
# include <readline/history.h>
#endif
+#include "phpdbg_lexer.h"
#include "phpdbg_cmd.h"
#include "phpdbg_utils.h"
#include "phpdbg_btree.h"
#include "phpdbg_watch.h"
+int phpdbg_do_parse(phpdbg_param_t *stack, char *input TSRMLS_DC);
+
#ifdef ZTS
# define PHPDBG_G(v) TSRMG(phpdbg_globals_id, zend_phpdbg_globals *, v)
#else
@@ -176,10 +179,12 @@ ZEND_BEGIN_MODULE_GLOBALS(phpdbg)
phpdbg_frame_t frame; /* frame */
zend_uint last_line; /* last executed line */
+ phpdbg_lexer_data lexer; /* lexer data */
+ phpdbg_param_t *parser_stack; /* param stack during lexer / parser phase */
+
#ifndef _WIN32
struct sigaction old_sigsegv_signal; /* segv signal handler */
#endif
-
phpdbg_btree watchpoint_tree; /* tree with watchpoints */
phpdbg_btree watch_HashTables; /* tree with original dtors of watchpoints */
HashTable watchpoints; /* watchpoints */
diff --git a/sapi/phpdbg/phpdbg_lexer.c b/sapi/phpdbg/phpdbg_lexer.c
index 94a4ba9766..420dcac042 100644
--- a/sapi/phpdbg/phpdbg_lexer.c
+++ b/sapi/phpdbg/phpdbg_lexer.c
@@ -1,2271 +1,996 @@
-#line 2 "sapi/phpdbg/phpdbg_lexer.c"
-
-#line 4 "sapi/phpdbg/phpdbg_lexer.c"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index. If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* An opaque pointer. */
-#ifndef YY_TYPEDEF_YY_SCANNER_T
-#define YY_TYPEDEF_YY_SCANNER_T
-typedef void* yyscan_t;
-#endif
-
-/* For convenience, these vars (plus the bison vars far below)
- are macros in the reentrant scanner. */
-#define yyin yyg->yyin_r
-#define yyout yyg->yyout_r
-#define yyextra yyg->yyextra_r
-#define yyleng yyg->yyleng_r
-#define yytext yyg->yytext_r
-#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
-#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
-#define yy_flex_debug yyg->yy_flex_debug_r
-
-/* Enter a start condition. This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yyg->yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state. The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yyg->yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart(yyin ,yyscanner )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
- #define YY_LESS_LINENO(n)
-
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- *yy_cp = yyg->yy_hold_char; \
- YY_RESTORE_YY_MORE_OFFSET \
- yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
- } \
- while ( 0 )
-
-#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
- {
- FILE *yy_input_file;
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- yy_size_t yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
- /* When an EOF's been seen but there's still some text to process
- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
- * shouldn't try reading from the input source any more. We might
- * still have a bunch of tokens to match, though, because of
- * possible backing-up.
- *
- * When we actually see the EOF, we change the status to "new"
- * (via yyrestart()), so that the user can continue scanning by
- * just pointing yyin at a new input file.
- */
-#define YY_BUFFER_EOF_PENDING 2
-
- };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
- ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
- : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
-
-void yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void yypop_buffer_state (yyscan_t yyscanner );
-
-static void yyensure_buffer_stack (yyscan_t yyscanner );
-static void yy_load_buffer_state (yyscan_t yyscanner );
-static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
-
-#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
-
-YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
-
-void *yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void yyfree (void * ,yyscan_t yyscanner );
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
- { \
- if ( ! YY_CURRENT_BUFFER ){ \
- yyensure_buffer_stack (yyscanner); \
- YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
- }
-
-#define yy_set_bol(at_bol) \
- { \
- if ( ! YY_CURRENT_BUFFER ){\
- yyensure_buffer_stack (yyscanner); \
- YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
- }
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-/* Begin user sect3 */
-
-#define yywrap(yyscanner) 1
-#define YY_SKIP_YYWRAP
-
-typedef unsigned char YY_CHAR;
-
-typedef int yy_state_type;
-
-#define yytext_ptr yytext_r
-
-static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
-static int yy_get_next_buffer (yyscan_t yyscanner );
-static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
- yyg->yytext_ptr = yy_bp; \
- yyleng = (size_t) (yy_cp - yy_bp); \
- yyg->yy_hold_char = *yy_cp; \
- *yy_cp = '\0'; \
- yyg->yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 18
-#define YY_END_OF_BUFFER 19
-/* This struct is not used in this scanner,
- but its presence is necessary. */
-struct yy_trans_info
- {
- flex_int32_t yy_verify;
- flex_int32_t yy_nxt;
- };
-static yyconst flex_int16_t yy_acclist[229] =
- { 0,
- 19, 4, 15, 18, 4, 17, 18, 17, 18, 4,
- 7, 18, 4, 12, 15, 18, 4, 12, 15, 18,
- 4, 9, 18, 4, 15, 18, 4, 15, 18, 4,
- 15, 18, 4, 15, 18, 4, 15, 18, 4, 15,
- 18, 3, 4, 15, 18, 4, 15, 18, 4, 15,
- 18, 4, 15, 18, 4, 15, 18, 16, 18, 16,
- 17, 18, 15, 18, 7, 18, 12, 15, 18, 12,
- 15, 18, 9, 18, 15, 18, 15, 18, 15, 18,
- 15, 18, 15, 18, 15, 18, 15, 18, 15, 18,
- 15, 18, 15, 18, 4, 15, 4, 4, 4, 17,
-
- 17, 4, 12, 15, 4, 15, 4, 8, 4, 15,
- 4, 15, 4, 15, 1, 4, 15, 4, 15, 4,
- 11, 15, 4, 15, 4, 10, 15, 4, 15, 2,
- 4, 15, 4, 15, 4, 15, 4, 15, 16, 16,
- 17, 15, 12, 15, 15, 8, 15, 15, 15, 15,
- 5, 15, 11, 15, 15, 10, 15, 15, 15, 15,
- 4, 4, 13, 15, 4, 15, 4, 15, 4, 15,
- 4, 15, 3, 4, 15, 4, 15, 4, 15, 13,
- 15, 15, 15, 15, 15, 15, 15, 4, 6, 4,
- 15, 4, 15, 4, 15, 4, 15, 4, 15, 6,
-
- 15, 15, 15, 15, 15, 4, 15, 4, 15, 4,
- 15, 15, 15, 15, 4, 14, 15, 4, 15, 4,
- 15, 14, 15, 15, 15, 4, 15, 15
- } ;
-
-static yyconst flex_int16_t yy_accept[127] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 2, 5, 8,
- 10, 13, 17, 21, 24, 27, 30, 33, 36, 39,
- 42, 46, 49, 52, 55, 58, 60, 63, 65, 67,
- 70, 73, 75, 77, 79, 81, 83, 85, 87, 89,
- 91, 93, 95, 97, 98, 99, 101, 102, 105, 107,
- 109, 111, 113, 115, 118, 120, 123, 125, 128, 130,
- 133, 135, 137, 139, 140, 142, 143, 143, 145, 146,
- 147, 148, 149, 150, 151, 153, 155, 156, 158, 159,
- 160, 161, 162, 165, 167, 169, 171, 173, 176, 178,
- 180, 180, 182, 183, 184, 185, 186, 187, 188, 190,
-
- 192, 194, 196, 198, 200, 201, 202, 203, 204, 205,
- 206, 208, 210, 212, 213, 214, 215, 218, 220, 222,
- 224, 225, 226, 228, 229, 229
- } ;
-
-static yyconst flex_int32_t yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 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, 6, 7, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 9, 1, 1,
- 1, 1, 1, 1, 10, 10, 10, 11, 12, 10,
- 13, 13, 13, 13, 13, 13, 13, 14, 13, 13,
- 13, 13, 13, 13, 13, 13, 13, 13, 13, 15,
- 1, 1, 1, 1, 16, 1, 17, 18, 10, 19,
-
- 20, 21, 13, 22, 23, 13, 13, 24, 13, 25,
- 26, 13, 13, 27, 28, 29, 30, 31, 13, 32,
- 33, 34, 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, 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,
- 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_int32_t yy_meta[35] =
- { 0,
- 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
- } ;
-
-static yyconst flex_int16_t yy_base[133] =
- { 0,
- 0, 0, 33, 35, 38, 0, 357, 71, 74, 76,
- 352, 79, 87, 90, 96, 100, 108, 109, 112, 120,
- 123, 126, 138, 142, 148, 0, 104, 316, 455, 151,
- 162, 313, 73, 92, 65, 146, 122, 94, 152, 127,
- 155, 163, 172, 318, 131, 176, 182, 288, 190, 314,
- 178, 184, 187, 211, 212, 215, 221, 224, 225, 235,
- 236, 239, 245, 0, 203, 260, 259, 248, 264, 455,
- 237, 190, 243, 253, 255, 222, 259, 194, 249, 250,
- 277, 229, 0, 285, 286, 289, 295, 304, 307, 310,
- 184, 0, 252, 283, 292, 296, 306, 309, 163, 328,
-
- 329, 332, 341, 344, 455, 326, 331, 330, 342, 343,
- 362, 370, 371, 394, 368, 356, 410, 384, 404, 426,
- 376, 378, 420, 411, 455, 442, 445, 447, 450, 148,
- 452, 96
- } ;
-
-static yyconst flex_int16_t yy_def[133] =
- { 0,
- 125, 1, 126, 126, 125, 5, 125, 127, 128, 125,
- 128, 127, 127, 128, 127, 127, 127, 127, 127, 127,
- 127, 127, 127, 127, 127, 129, 129, 130, 125, 130,
- 130, 125, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 130, 127, 128, 128, 128, 125, 13, 13, 128,
- 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
- 127, 127, 127, 129, 129, 130, 125, 130, 130, 125,
- 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
- 130, 128, 49, 127, 127, 127, 127, 127, 127, 127,
- 125, 69, 130, 130, 130, 130, 130, 130, 128, 127,
-
- 127, 127, 127, 127, 125, 130, 130, 130, 130, 130,
- 131, 127, 127, 132, 130, 130, 131, 127, 127, 132,
- 130, 130, 127, 130, 0, 125, 125, 125, 125, 125,
- 125, 125
- } ;
-
-static yyconst flex_int16_t yy_nxt[490] =
- { 0,
- 8, 9, 10, 11, 12, 8, 13, 12, 14, 8,
- 8, 8, 8, 8, 15, 8, 8, 8, 16, 17,
- 18, 8, 8, 8, 19, 20, 21, 22, 23, 8,
- 8, 8, 24, 25, 27, 10, 27, 10, 28, 10,
- 10, 29, 30, 28, 31, 30, 32, 28, 28, 28,
- 28, 28, 33, 28, 28, 28, 34, 35, 36, 28,
- 37, 28, 38, 39, 28, 28, 40, 28, 28, 28,
- 41, 42, 44, 67, 44, 46, 47, 47, 47, 45,
- 44, 67, 44, 48, 71, 48, 48, 45, 44, 73,
- 44, 48, 125, 48, 48, 45, 120, 44, 50, 44,
-
- 67, 44, 67, 44, 45, 65, 47, 51, 45, 44,
- 44, 44, 44, 44, 72, 44, 45, 45, 49, 76,
- 45, 44, 52, 44, 44, 55, 44, 44, 45, 44,
- 67, 45, 53, 125, 45, 67, 82, 56, 54, 44,
- 57, 44, 75, 44, 58, 44, 45, 60, 66, 44,
- 45, 44, 59, 79, 67, 68, 45, 68, 68, 67,
- 67, 62, 74, 67, 61, 125, 68, 63, 68, 68,
- 67, 67, 77, 44, 80, 44, 78, 46, 47, 44,
- 45, 44, 81, 47, 47, 44, 45, 44, 44, 105,
- 44, 84, 45, 69, 43, 45, 83, 83, 67, 83,
-
- 83, 83, 67, 86, 65, 47, 83, 83, 83, 83,
- 83, 85, 44, 44, 44, 44, 44, 94, 44, 45,
- 45, 43, 44, 45, 44, 44, 44, 44, 44, 45,
- 67, 125, 45, 45, 99, 87, 44, 44, 44, 44,
- 44, 56, 44, 45, 45, 67, 44, 45, 44, 88,
- 93, 67, 68, 45, 68, 68, 67, 67, 67, 95,
- 67, 67, 106, 67, 91, 89, 58, 67, 67, 90,
- 92, 92, 67, 92, 92, 92, 96, 78, 97, 76,
- 92, 92, 92, 92, 92, 67, 44, 44, 44, 44,
- 44, 67, 44, 45, 45, 100, 44, 45, 44, 107,
-
- 67, 98, 101, 45, 67, 44, 102, 44, 44, 108,
- 44, 44, 45, 44, 67, 45, 125, 67, 45, 43,
- 125, 70, 103, 109, 67, 78, 58, 110, 104, 44,
- 44, 44, 44, 44, 67, 44, 45, 45, 67, 67,
- 45, 114, 44, 111, 44, 44, 112, 44, 115, 45,
- 67, 67, 45, 116, 125, 113, 125, 125, 114, 111,
- 56, 76, 43, 44, 67, 44, 43, 43, 43, 43,
- 45, 44, 44, 44, 44, 122, 67, 43, 45, 45,
- 125, 125, 125, 125, 67, 44, 67, 44, 125, 125,
- 119, 121, 45, 118, 66, 124, 78, 125, 66, 66,
-
- 66, 66, 67, 123, 125, 44, 125, 44, 125, 66,
- 43, 44, 45, 44, 43, 43, 43, 43, 45, 67,
- 125, 44, 58, 44, 125, 43, 66, 125, 45, 76,
- 66, 66, 66, 66, 67, 125, 125, 125, 56, 125,
- 125, 66, 26, 26, 26, 43, 43, 44, 44, 44,
- 64, 64, 117, 117, 7, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125
- } ;
-
-static yyconst flex_int16_t yy_chk[490] =
- { 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, 3, 3, 4, 4, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 8, 35, 8, 9, 9, 10, 10, 8,
- 12, 33, 12, 12, 33, 12, 12, 12, 13, 35,
- 13, 13, 14, 13, 13, 13, 132, 15, 14, 15,
-
- 34, 16, 38, 16, 15, 27, 27, 15, 16, 17,
- 18, 17, 18, 19, 34, 19, 17, 18, 13, 38,
- 19, 20, 16, 20, 21, 18, 21, 22, 20, 22,
- 37, 21, 17, 45, 22, 40, 45, 19, 17, 23,
- 20, 23, 37, 24, 20, 24, 23, 22, 130, 25,
- 24, 25, 21, 40, 36, 30, 25, 30, 30, 30,
- 39, 24, 36, 41, 23, 99, 31, 25, 31, 31,
- 31, 42, 39, 43, 41, 43, 39, 46, 46, 51,
- 43, 51, 42, 47, 47, 52, 51, 52, 53, 91,
- 53, 51, 52, 31, 49, 53, 49, 49, 72, 49,
-
- 49, 49, 78, 53, 65, 65, 49, 49, 49, 49,
- 49, 52, 54, 55, 54, 55, 56, 72, 56, 54,
- 55, 49, 57, 56, 57, 58, 59, 58, 59, 57,
- 76, 82, 58, 59, 82, 55, 60, 61, 60, 61,
- 62, 57, 62, 60, 61, 71, 63, 62, 63, 59,
- 71, 73, 68, 63, 68, 68, 68, 79, 80, 73,
- 93, 74, 93, 75, 67, 61, 62, 77, 66, 63,
- 69, 69, 69, 69, 69, 69, 74, 80, 79, 77,
- 69, 69, 69, 69, 69, 81, 84, 85, 84, 85,
- 86, 94, 86, 84, 85, 84, 87, 86, 87, 94,
-
- 95, 81, 85, 87, 96, 88, 86, 88, 89, 95,
- 89, 90, 88, 90, 97, 89, 50, 98, 90, 48,
- 44, 32, 87, 96, 28, 97, 89, 98, 90, 100,
- 101, 100, 101, 102, 106, 102, 100, 101, 108, 107,
- 102, 106, 103, 100, 103, 104, 101, 104, 107, 103,
- 109, 110, 104, 108, 11, 102, 7, 0, 110, 104,
- 103, 109, 111, 111, 116, 111, 111, 111, 111, 111,
- 111, 112, 113, 112, 113, 116, 115, 111, 112, 113,
- 0, 0, 0, 0, 121, 118, 122, 118, 0, 0,
- 113, 115, 118, 112, 114, 121, 122, 0, 114, 114,
-
- 114, 114, 114, 118, 0, 119, 0, 119, 0, 114,
- 117, 117, 119, 117, 117, 117, 117, 117, 117, 124,
- 0, 123, 119, 123, 0, 117, 120, 0, 123, 124,
- 120, 120, 120, 120, 120, 0, 0, 0, 123, 0,
- 0, 120, 126, 126, 126, 127, 127, 128, 128, 128,
- 129, 129, 131, 131, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125
- } ;
-
-#define REJECT \
-{ \
-*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ \
-yy_cp = yyg->yy_full_match; /* restore poss. backed-over text */ \
-++yyg->yy_lp; \
-goto find_rule; \
-}
-
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-#line 1 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-#line 2 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
+/* Generated by re2c 0.13.5 */
+#line 1 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
/*
* phpdbg_lexer.l
*/
#include "phpdbg.h"
#include "phpdbg_cmd.h"
-#define YYSTYPE phpdbg_param_t
#include "phpdbg_parser.h"
-
+#define LEX(v) (PHPDBG_G(lexer).v)
-#define YY_NO_UNISTD_H 1
-#line 629 "sapi/phpdbg/phpdbg_lexer.c"
+#define YYCTYPE unsigned char
+#define YYSETCONDITION(x) LEX(state) = x;
+#define YYGETCONDITION() LEX(state)
+#define YYCURSOR LEX(cursor)
+#define YYMARKER LEX(marker)
+#define yyleng LEX(len)
+#define yytext ((char*) LEX(text))
+#undef YYDEBUG
+#define YYDEBUG(a, b)
+#define YYFILL(n)
-#define INITIAL 0
+#define NORMAL 0
#define RAW 1
-#define NORMAL 2
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-/* Holds the entire state of the reentrant scanner. */
-struct yyguts_t
- {
-
- /* User-defined. Not touched by flex. */
- YY_EXTRA_TYPE yyextra_r;
+#define INITIAL 2
- /* The rest are the same as the globals declared in the non-reentrant scanner. */
- FILE *yyin_r, *yyout_r;
- size_t yy_buffer_stack_top; /**< index of top of stack. */
- size_t yy_buffer_stack_max; /**< capacity of stack. */
- YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
- char yy_hold_char;
- yy_size_t yy_n_chars;
- yy_size_t yyleng_r;
- char *yy_c_buf_p;
- int yy_init;
- int yy_start;
- int yy_did_buffer_switch_on_eof;
- int yy_start_stack_ptr;
- int yy_start_stack_depth;
- int *yy_start_stack;
- yy_state_type yy_last_accepting_state;
- char* yy_last_accepting_cpos;
+ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
- int yylineno_r;
- int yy_flex_debug_r;
+void phpdbg_init_lexer (phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ PHPDBG_G(parser_stack) = stack;
- yy_state_type *yy_state_buf;
- yy_state_type *yy_state_ptr;
- char *yy_full_match;
- int yy_lp;
+ YYSETCONDITION(INITIAL);
- /* These are only needed for trailing context rules,
- * but there's no conditional variable for that yet. */
- int yy_looking_for_trail_begin;
- int yy_full_lp;
- int *yy_full_state;
-
- char *yytext_r;
- int yy_more_flag;
- int yy_more_len;
-
- YYSTYPE * yylval_r;
-
- }; /* end struct yyguts_t */
-
-static int yy_init_globals (yyscan_t yyscanner );
-
- /* This must go here because YYSTYPE and YYLTYPE are included
- * from bison output in section 1.*/
- # define yylval yyg->yylval_r
-
-int yylex_init (yyscan_t* scanner);
-
-int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
-/* Accessor methods to globals.
- These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy (yyscan_t yyscanner );
-
-int yyget_debug (yyscan_t yyscanner );
-
-void yyset_debug (int debug_flag ,yyscan_t yyscanner );
-
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
-
-void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
-
-FILE *yyget_in (yyscan_t yyscanner );
-
-void yyset_in (FILE * in_str ,yyscan_t yyscanner );
-
-FILE *yyget_out (yyscan_t yyscanner );
-
-void yyset_out (FILE * out_str ,yyscan_t yyscanner );
-
-yy_size_t yyget_leng (yyscan_t yyscanner );
-
-char *yyget_text (yyscan_t yyscanner );
-
-int yyget_lineno (yyscan_t yyscanner );
-
-void yyset_lineno (int line_number ,yyscan_t yyscanner );
-
-int yyget_column (yyscan_t yyscanner );
-
-void yyset_column (int column_no ,yyscan_t yyscanner );
-
-YYSTYPE * yyget_lval (yyscan_t yyscanner );
-
-void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap (yyscan_t yyscanner );
-#else
-extern int yywrap (yyscan_t yyscanner );
-#endif
-#endif
-
- static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner);
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (yyscan_t yyscanner );
-#else
-static int input (yyscan_t yyscanner );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
-#endif
-
-/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
- { \
- int c = '*'; \
- size_t n; \
- for ( n = 0; n < max_size && \
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
- if ( c == '\n' ) \
- buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
- } \
- else \
- { \
- errno=0; \
- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(yyin); \
- } \
- }\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int yylex \
- (YYSTYPE * yylval_param ,yyscan_t yyscanner);
-
-#define YY_DECL int yylex \
- (YYSTYPE * yylval_param , yyscan_t yyscanner)
-#endif /* !YY_DECL */
+ LEX(text) = YYCURSOR = (unsigned char *) input;
+ LEX(len) = strlen(input);
+}
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
+int phpdbg_lex (phpdbg_param_t* yylval) {
+ TSRMLS_FETCH(); /* Slow, but this is not a major problem here. TODO: Use TSRMLS_DC */
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
+restart:
+ LEX(text) = YYCURSOR;
-#define YY_RULE_SETUP \
- YY_USER_ACTION
-/** The main scanner function which does all the work.
- */
-YY_DECL
+#line 48 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
-#line 44 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
-
-#line 882 "sapi/phpdbg/phpdbg_lexer.c"
-
- yylval = yylval_param;
-
- if ( !yyg->yy_init )
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ if (YYGETCONDITION() < 1) {
+ goto yyc_NORMAL;
+ } else {
+ if (YYGETCONDITION() < 2) {
+ goto yyc_RAW;
+ } else {
+ goto yyc_INITIAL;
+ }
+ }
+/* *********************************** */
+yyc_INITIAL:
+ {
+ static const unsigned char yybm[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 0, 0, 128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+ YYDEBUG(0, *YYCURSOR);
+ YYFILL(3);
+ yych = *YYCURSOR;
+ if (yych <= 0x1F) {
+ if (yych <= '\t') {
+ if (yych <= 0x00) goto yy6;
+ if (yych <= 0x08) goto yy11;
+ } else {
+ if (yych <= '\n') goto yy4;
+ if (yych != '\r') goto yy11;
+ }
+ } else {
+ if (yych <= 'e') {
+ if (yych <= ' ') goto yy2;
+ if (yych <= 'd') goto yy11;
+ goto yy7;
+ } else {
+ if (yych <= 'q') goto yy11;
+ if (yych <= 'r') goto yy9;
+ if (yych <= 's') goto yy8;
+ goto yy11;
+ }
+ }
+yy2:
+ YYDEBUG(2, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 128) {
+ goto yy19;
+ }
+yy3:
+ YYDEBUG(3, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 161 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- yyg->yy_init = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- /* Create the reject buffer large enough to save one state per allowed character. */
- if ( ! yyg->yy_state_buf )
- yyg->yy_state_buf = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ,yyscanner);
- if ( ! yyg->yy_state_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
-
- if ( ! yyg->yy_start )
- yyg->yy_start = 1; /* first start state */
+ YYSETCONDITION(NORMAL);
- if ( ! yyin )
- yyin = stdin;
-
- if ( ! yyout )
- yyout = stdout;
-
- if ( ! YY_CURRENT_BUFFER ) {
- yyensure_buffer_stack (yyscanner);
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+ YYCURSOR = LEX(text);
+ goto restart;
+}
+#line 138 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy4:
+ YYDEBUG(4, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 128) {
+ goto yy19;
}
-
- yy_load_buffer_state(yyscanner );
+ YYDEBUG(5, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return 0;
+}
+#line 151 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy6:
+ YYDEBUG(6, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy3;
+yy7:
+ YYDEBUG(7, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'v') goto yy17;
+ goto yy3;
+yy8:
+ YYDEBUG(8, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'h') goto yy15;
+ goto yy3;
+yy9:
+ YYDEBUG(9, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'u') goto yy12;
+yy10:
+ YYDEBUG(10, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 155 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_RUN;
+}
+#line 180 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy11:
+ YYDEBUG(11, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy3;
+yy12:
+ YYDEBUG(12, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'n') goto yy14;
+ YYDEBUG(13, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ goto yy10;
+yy14:
+ YYDEBUG(14, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy10;
+yy15:
+ YYDEBUG(15, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(16, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 150 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_SHELL;
+}
+#line 207 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy17:
+ YYDEBUG(17, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(18, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 145 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_EVAL;
+}
+#line 219 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy19:
+ YYDEBUG(19, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(20, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy19;
}
-
- while ( 1 ) /* loops until end-of-file is reached */
+ YYDEBUG(21, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- yy_cp = yyg->yy_c_buf_p;
+ /* ignore whitespace */
- /* Support of yytext. */
- *yy_cp = yyg->yy_hold_char;
-
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
-
- yy_current_state = yyg->yy_start;
-
- yyg->yy_state_ptr = yyg->yy_state_buf;
- *yyg->yy_state_ptr++ = yy_current_state;
-
-yy_match:
- do
- {
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- 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 >= 126 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ goto restart;
+}
+#line 237 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+ }
+/* *********************************** */
+yyc_NORMAL:
+ {
+ static const unsigned char yybm[] = {
+ 0, 16, 16, 16, 16, 16, 16, 16,
+ 16, 8, 8, 16, 16, 8, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 8, 16, 16, 0, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 48, 16,
+ 176, 176, 176, 176, 176, 176, 176, 176,
+ 176, 176, 0, 16, 16, 16, 16, 16,
+ 16, 208, 208, 208, 208, 208, 208, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 16, 16, 16, 16, 16,
+ 16, 208, 208, 208, 208, 208, 208, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ };
+ YYDEBUG(22, *YYCURSOR);
+ YYFILL(11);
+ yych = *YYCURSOR;
+ if (yych <= ':') {
+ if (yych <= ' ') {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy29;
+ if (yych <= 0x08) goto yy32;
+ if (yych >= '\n') goto yy27;
+ } else {
+ if (yych == '\r') goto yy24;
+ if (yych <= 0x1F) goto yy32;
+ }
+ } else {
+ if (yych <= '.') {
+ if (yych == '#') goto yy47;
+ if (yych <= '-') goto yy32;
+ goto yy34;
+ } else {
+ if (yych <= '/') goto yy32;
+ if (yych <= '0') goto yy37;
+ if (yych <= '9') goto yy34;
+ goto yy49;
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- *yyg->yy_state_ptr++ = yy_current_state;
- ++yy_cp;
}
- while ( yy_current_state != 125 );
-
-yy_find_action:
- yy_current_state = *--yyg->yy_state_ptr;
- yyg->yy_lp = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
- for ( ; ; ) /* until we find what rule we matched */
- {
- if ( yyg->yy_lp && yyg->yy_lp < yy_accept[yy_current_state + 1] )
- {
- yy_act = yy_acclist[yyg->yy_lp];
- {
- yyg->yy_full_match = yy_cp;
- break;
+ } else {
+ if (yych <= 'i') {
+ if (yych <= 'd') {
+ if (yych == 'Z') goto yy38;
+ if (yych <= 'c') goto yy32;
+ goto yy39;
+ } else {
+ if (yych <= 'e') goto yy40;
+ if (yych <= 'f') goto yy41;
+ if (yych <= 'h') goto yy32;
+ goto yy30;
+ }
+ } else {
+ if (yych <= 's') {
+ if (yych <= 'm') goto yy32;
+ if (yych <= 'n') goto yy42;
+ if (yych <= 'o') goto yy43;
+ goto yy32;
+ } else {
+ if (yych <= 'x') {
+ if (yych <= 't') goto yy44;
+ goto yy32;
+ } else {
+ if (yych <= 'y') goto yy45;
+ if (yych <= 'z') goto yy46;
+ goto yy32;
}
}
- --yy_cp;
- yy_current_state = *--yyg->yy_state_ptr;
- yyg->yy_lp = yy_accept[yy_current_state];
}
+ }
+yy24:
+ YYDEBUG(24, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(25, *YYCURSOR);
+ if (yybm[0+yych] & 8) {
+ goto yy24;
+ }
+ YYDEBUG(26, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ /* ignore whitespace */
- YY_DO_BEFORE_ACTION;
-
-do_action: /* This label is used only to access EOF actions. */
-
- switch ( yy_act )
- { /* beginning of action switch */
-
-case 1:
-YY_RULE_SETUP
-#line 47 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_EVAL;
- }
- YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 52 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_SHELL;
- }
- YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 57 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_RUN;
- }
- YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 63 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(NORMAL);
- REJECT;
- }
- YY_BREAK
-
-
-case 5:
-YY_RULE_SETUP
-#line 70 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_IF;
- }
- YY_BREAK
-
-
-case 6:
-YY_RULE_SETUP
-#line 78 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_PROTO;
- }
- YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 84 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ return T_POUND; }
- YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 85 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ return T_DCOLON; }
- YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 86 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ return T_COLON; }
- YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 88 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 1;
- return T_TRUTHY;
- }
- YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 93 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 0;
- return T_FALSY;
- }
- YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 98 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = atoi(yytext);
- return T_DIGITS;
- }
- YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 103 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, ADDR_PARAM);
- yylval->addr = strtoul(yytext, 0, 16);
- return T_ADDR;
- }
- YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 108 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, OP_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_OPCODE;
- }
- YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 114 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_ID;
- }
- YY_BREAK
-
-case 16:
-YY_RULE_SETUP
-#line 122 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{
+ goto restart;
+}
+#line 348 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy27:
+ YYDEBUG(27, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 8) {
+ goto yy24;
+ }
+yy28:
+ YYDEBUG(28, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return 0;
+}
+#line 362 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy29:
+ YYDEBUG(29, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy28;
+yy30:
+ YYDEBUG(30, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'f') goto yy94;
+ goto yy33;
+yy31:
+ YYDEBUG(31, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 125 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = zend_strndup(yytext, yyleng);
yylval->len = yyleng;
- BEGIN(INITIAL);
- return T_INPUT;
-}
- YY_BREAK
-case 17:
-/* rule 17 can match eol */
-YY_RULE_SETUP
-#line 130 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-{ /* ignore whitespace */ }
- YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 131 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-YY_FATAL_ERROR( "flex scanner jammed" );
- YY_BREAK
-#line 1129 "sapi/phpdbg/phpdbg_lexer.c"
- case YY_STATE_EOF(INITIAL):
- case YY_STATE_EOF(RAW):
- case YY_STATE_EOF(NORMAL):
- yyterminate();
-
- case YY_END_OF_BUFFER:
+ return T_ID;
+}
+#line 383 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy32:
+ YYDEBUG(32, *YYCURSOR);
+ yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+yy33:
+ YYDEBUG(33, *YYCURSOR);
+ if (yybm[0+yych] & 16) {
+ goto yy32;
+ }
+ if (yych <= '9') goto yy31;
+ goto yy54;
+yy34:
+ YYDEBUG(34, *YYCURSOR);
+ yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+ YYDEBUG(35, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy34;
+ }
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy36;
+ if (yych <= 0x08) goto yy32;
+ } else {
+ if (yych != '\r') goto yy32;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy36;
+ if (yych <= '"') goto yy32;
+ } else {
+ if (yych == ':') goto yy54;
+ goto yy32;
+ }
+ }
+yy36:
+ YYDEBUG(36, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 106 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- /* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = yyg->yy_hold_char;
- YY_RESTORE_YY_MORE_OFFSET
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed yyin at a new source and called
- * yylex(). If so, then we have to assure
- * consistency between YY_CURRENT_BUFFER and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
- yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = atoi(yytext);
+ return T_DIGITS;
+}
+#line 432 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy37:
+ YYDEBUG(37, *YYCURSOR);
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy34;
+ }
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy36;
+ if (yych <= 0x08) goto yy33;
+ goto yy36;
+ } else {
+ if (yych == '\r') goto yy36;
+ goto yy33;
}
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
- * of the first EOB in the buffer, since yy_c_buf_p will
- * already have been incremented past the NUL character
- * (since all states make transitions on EOB to the
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
- if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
- yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( yyscanner );
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
- * yy_get_previous_state() go ahead and do it
- * for us because it doesn't know how to deal
- * with the possibility of jamming (and we don't
- * want to build jamming into it because then it
- * will run more slowly).
- */
-
- yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
-
- yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
- yy_cp = ++yyg->yy_c_buf_p;
- yy_current_state = yy_next_state;
- goto yy_match;
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy36;
+ if (yych <= '"') goto yy33;
+ goto yy36;
+ } else {
+ if (yych == 'x') goto yy90;
+ goto yy33;
+ }
+ }
+yy38:
+ YYDEBUG(38, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'E') goto yy87;
+ goto yy33;
+yy39:
+ YYDEBUG(39, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'i') goto yy81;
+ goto yy33;
+yy40:
+ YYDEBUG(40, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'n') goto yy76;
+ goto yy33;
+yy41:
+ YYDEBUG(41, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'a') goto yy73;
+ goto yy33;
+yy42:
+ YYDEBUG(42, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'o') goto yy71;
+ goto yy33;
+yy43:
+ YYDEBUG(43, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'f') goto yy70;
+ if (yych == 'n') goto yy66;
+ goto yy33;
+yy44:
+ YYDEBUG(44, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'r') goto yy68;
+ goto yy33;
+yy45:
+ YYDEBUG(45, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy65;
+ goto yy33;
+yy46:
+ YYDEBUG(46, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy53;
+ goto yy33;
+yy47:
+ YYDEBUG(47, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(48, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 84 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return T_POUND;
+}
+#line 523 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy49:
+ YYDEBUG(49, *YYCURSOR);
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == ':') goto yy51;
+ YYDEBUG(50, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 90 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return T_COLON;
+}
+#line 534 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy51:
+ YYDEBUG(51, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(52, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 87 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ return T_DCOLON;
+}
+#line 544 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy53:
+ YYDEBUG(53, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'n') goto yy59;
+ goto yy33;
+yy54:
+ YYDEBUG(54, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == '/') goto yy56;
+yy55:
+ YYDEBUG(55, *YYCURSOR);
+ YYCURSOR = YYMARKER;
+ if (yyaccept <= 3) {
+ if (yyaccept <= 1) {
+ if (yyaccept <= 0) {
+ goto yy31;
+ } else {
+ goto yy36;
}
-
- else
- {
- yy_cp = yyg->yy_c_buf_p;
- goto yy_find_action;
+ } else {
+ if (yyaccept <= 2) {
+ goto yy64;
+ } else {
+ goto yy67;
}
}
-
- else switch ( yy_get_next_buffer( yyscanner ) )
- {
- case EOB_ACT_END_OF_FILE:
- {
- yyg->yy_did_buffer_switch_on_eof = 0;
-
- if ( yywrap(yyscanner ) )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
- * yytext, we can now set up
- * yy_c_buf_p so that if some total
- * hoser (like flex itself) wants to
- * call the scanner after we return the
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
- yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
- }
-
- else
- {
- if ( ! yyg->yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
- }
- break;
+ } else {
+ if (yyaccept <= 5) {
+ if (yyaccept <= 4) {
+ goto yy72;
+ } else {
+ goto yy93;
}
-
- case EOB_ACT_CONTINUE_SCAN:
- yyg->yy_c_buf_p =
- yyg->yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( yyscanner );
-
- yy_cp = yyg->yy_c_buf_p;
- yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
- yyg->yy_c_buf_p =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
-
- yy_current_state = yy_get_previous_state( yyscanner );
-
- yy_cp = yyg->yy_c_buf_p;
- yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
- goto yy_find_action;
+ } else {
+ goto yy95;
}
- break;
}
-
- default:
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
-} /* end of yylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- * EOB_ACT_LAST_MATCH -
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = yyg->yytext_ptr;
- register int number_to_move, i;
- int ret_val;
-
- if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
+yy56:
+ YYDEBUG(56, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych != '/') goto yy55;
+ YYDEBUG(57, *YYCURSOR);
+ ++YYCURSOR;
+ YYDEBUG(58, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 78 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_PROTO;
+}
+#line 598 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy59:
+ YYDEBUG(59, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'd') goto yy33;
+ YYDEBUG(60, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != '_') goto yy33;
+yy61:
+ YYDEBUG(61, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy62;
+ }
+ goto yy33;
+yy62:
+ YYDEBUG(62, *YYCURSOR);
+ yyaccept = 2;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+ YYDEBUG(63, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy62;
+ }
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy64;
+ if (yych <= 0x08) goto yy32;
+ } else {
+ if (yych != '\r') goto yy32;
}
-
- else
- {
- /* We matched some text prior to the EOB, first
- * process it.
- */
- return EOB_ACT_LAST_MATCH;
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy64;
+ if (yych <= '"') goto yy32;
+ } else {
+ if (yych == ':') goto yy54;
+ goto yy32;
}
}
-
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
- number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
-
- else
+yy64:
+ YYDEBUG(64, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 118 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- yy_size_t num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
-
- YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-
+ phpdbg_init_param(yylval, OP_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_OPCODE;
+}
+#line 652 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy65:
+ YYDEBUG(65, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy33;
+yy66:
+ YYDEBUG(66, *YYCURSOR);
+ yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy33;
+ } else {
+ if (yych <= '\n') goto yy67;
+ if (yych <= '\f') goto yy33;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy33;
+ } else {
+ if (yych != '#') goto yy33;
}
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
- YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- yyg->yy_n_chars, num_to_read );
-
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
}
-
- if ( yyg->yy_n_chars == 0 )
+yy67:
+ YYDEBUG(67, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 94 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
- yyrestart(yyin ,yyscanner);
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 1;
+ return T_TRUTHY;
+}
+#line 685 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy68:
+ YYDEBUG(68, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'u') goto yy33;
+ YYDEBUG(69, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy66;
+ goto yy33;
+yy70:
+ YYDEBUG(70, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'f') goto yy33;
+yy71:
+ YYDEBUG(71, *YYCURSOR);
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy33;
+ } else {
+ if (yych <= '\n') goto yy72;
+ if (yych <= '\f') goto yy33;
}
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy33;
+ } else {
+ if (yych != '#') goto yy33;
}
}
-
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
- if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
- /* Extend the array by 50%, plus the number we really need. */
- yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
- if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
- }
-
- yyg->yy_n_chars += number_to_move;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
- yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
- return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
- static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
-{
- register yy_state_type yy_current_state;
- register char *yy_cp;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- yy_current_state = yyg->yy_start;
-
- yyg->yy_state_ptr = yyg->yy_state_buf;
- *yyg->yy_state_ptr++ = yy_current_state;
-
- for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
+yy72:
+ YYDEBUG(72, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 100 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- 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 >= 126 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- *yyg->yy_state_ptr++ = yy_current_state;
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 0;
+ return T_FALSY;
+}
+#line 728 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy73:
+ YYDEBUG(73, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy33;
+ YYDEBUG(74, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy33;
+ YYDEBUG(75, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy71;
+ goto yy33;
+yy76:
+ YYDEBUG(76, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'a') goto yy33;
+ YYDEBUG(77, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'b') goto yy33;
+ YYDEBUG(78, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy33;
+ YYDEBUG(79, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'e') goto yy33;
+ YYDEBUG(80, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'd') goto yy66;
+ goto yy33;
+yy81:
+ YYDEBUG(81, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy33;
+ YYDEBUG(82, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'a') goto yy33;
+ YYDEBUG(83, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'b') goto yy33;
+ YYDEBUG(84, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy33;
+ YYDEBUG(85, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'e') goto yy33;
+ YYDEBUG(86, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'd') goto yy71;
+ goto yy33;
+yy87:
+ YYDEBUG(87, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'N') goto yy33;
+ YYDEBUG(88, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'D') goto yy33;
+ YYDEBUG(89, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == '_') goto yy61;
+ goto yy33;
+yy90:
+ YYDEBUG(90, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy91;
}
-
- return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- * next_state = yy_try_NUL_trans( current_state );
- */
- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
-{
- register int yy_is_jam;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
-
- register YY_CHAR yy_c = 1;
- 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 >= 126 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ goto yy33;
+yy91:
+ YYDEBUG(91, *YYCURSOR);
+ yyaccept = 5;
+ YYMARKER = ++YYCURSOR;
+ YYFILL(3);
+ yych = *YYCURSOR;
+ YYDEBUG(92, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy91;
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 125);
- if ( ! yy_is_jam )
- *yyg->yy_state_ptr++ = yy_current_state;
-
- (void)yyg;
- return yy_is_jam ? 0 : yy_current_state;
-}
-
- static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner)
-{
- register char *yy_cp;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- yy_cp = yyg->yy_c_buf_p;
-
- /* undo effects of setting up yytext */
- *yy_cp = yyg->yy_hold_char;
-
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- { /* need to shift things up to make room */
- /* +2 for EOB chars. */
- register yy_size_t number_to_move = yyg->yy_n_chars + 2;
- register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
- register char *source =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
- while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- *--dest = *--source;
-
- yy_cp += (int) (dest - source);
- yy_bp += (int) (dest - source);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
- yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
- if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ if (yych <= 0x1F) {
+ if (yych <= '\n') {
+ if (yych <= 0x00) goto yy93;
+ if (yych <= 0x08) goto yy32;
+ } else {
+ if (yych != '\r') goto yy32;
+ }
+ } else {
+ if (yych <= '#') {
+ if (yych <= ' ') goto yy93;
+ if (yych <= '"') goto yy32;
+ } else {
+ if (yych == ':') goto yy54;
+ goto yy32;
+ }
}
-
- *--yy_cp = (char) c;
-
- yyg->yytext_ptr = yy_bp;
- yyg->yy_hold_char = *yy_cp;
- yyg->yy_c_buf_p = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
- static int yyinput (yyscan_t yyscanner)
-#else
- static int input (yyscan_t yyscanner)
-#endif
-
-{
- int c;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- *yyg->yy_c_buf_p = yyg->yy_hold_char;
-
- if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+yy93:
+ YYDEBUG(93, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 112 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
- if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
- /* This was really a NUL. */
- *yyg->yy_c_buf_p = '\0';
-
- else
- { /* need more input */
- yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
- ++yyg->yy_c_buf_p;
-
- switch ( yy_get_next_buffer( yyscanner ) )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
- * sees that we've accumulated a
- * token and flags that we need to
- * try matching the token before
- * proceeding. But for input(),
- * there's no matching to consider.
- * So convert the EOB_ACT_LAST_MATCH
- * to EOB_ACT_END_OF_FILE.
- */
-
- /* Reset buffer status. */
- yyrestart(yyin ,yyscanner);
-
- /*FALLTHROUGH*/
-
- case EOB_ACT_END_OF_FILE:
- {
- if ( yywrap(yyscanner ) )
- return EOF;
-
- if ( ! yyg->yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
-#ifdef __cplusplus
- return yyinput(yyscanner);
-#else
- return input(yyscanner);
-#endif
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
- break;
- }
+ phpdbg_init_param(yylval, ADDR_PARAM);
+ yylval->addr = strtoul(yytext, 0, 16);
+ return T_ADDR;
+}
+#line 848 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy94:
+ YYDEBUG(94, *YYCURSOR);
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\r') {
+ if (yych <= 0x08) {
+ if (yych >= 0x01) goto yy33;
+ } else {
+ if (yych <= '\n') goto yy95;
+ if (yych <= '\f') goto yy33;
+ }
+ } else {
+ if (yych <= ' ') {
+ if (yych <= 0x1F) goto yy33;
+ } else {
+ if (yych != '#') goto yy33;
}
}
-
- c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
- *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
- yyg->yy_hold_char = *++yyg->yy_c_buf_p;
-
- return c;
+yy95:
+ YYDEBUG(95, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 72 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_IF;
}
-#endif /* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * @param yyscanner The scanner object.
- * @note This function does not reset the start condition to @c INITIAL .
- */
- void yyrestart (FILE * input_file , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if ( ! YY_CURRENT_BUFFER ){
- yyensure_buffer_stack (yyscanner);
- YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
+#line 876 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
-
- yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
- yy_load_buffer_state(yyscanner );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * @param yyscanner The scanner object.
- */
- void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* TODO. We should be able to replace this entire function body
- * with
- * yypop_buffer_state();
- * yypush_buffer_state(new_buffer);
- */
- yyensure_buffer_stack (yyscanner);
- if ( YY_CURRENT_BUFFER == new_buffer )
- return;
-
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *yyg->yy_c_buf_p = yyg->yy_hold_char;
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+/* *********************************** */
+yyc_RAW:
+ {
+ static const unsigned char yybm[] = {
+ 0, 64, 64, 64, 64, 64, 64, 64,
+ 64, 224, 128, 64, 64, 224, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 224, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ };
+ YYDEBUG(96, *YYCURSOR);
+ YYFILL(2);
+ yych = *YYCURSOR;
+ if (yybm[0+yych] & 32) {
+ goto yy98;
}
-
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state(yyscanner );
-
- /* We don't actually know whether we did this switch during
- * EOF (yywrap()) processing, but the only time this flag
- * is looked at is after yywrap() is called, so it's safe
- * to go ahead and always set it.
- */
- yyg->yy_did_buffer_switch_on_eof = 1;
-}
-
-static void yy_load_buffer_state (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
- yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
- yyg->yy_hold_char = *yyg->yy_c_buf_p;
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * @param yyscanner The scanner object.
- * @return the allocated buffer state.
- */
- YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
-{
- YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_buf_size = size;
-
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
- b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_is_our_buffer = 1;
-
- yy_init_buffer(b,file ,yyscanner);
-
- return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
- * @param yyscanner The scanner object.
- */
- void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if ( ! b )
- return;
-
- if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
- YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
- if ( b->yy_is_our_buffer )
- yyfree((void *) b->yy_ch_buf ,yyscanner );
-
- yyfree((void *) b ,yyscanner );
-}
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
- */
- static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
-
-{
- int oerrno = errno;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- yy_flush_buffer(b ,yyscanner);
-
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
-
- /* If b is the current buffer, then yy_init_buffer was _probably_
- * called from yyrestart() or through yy_get_next_buffer.
- * In that case, we don't want to reset the lineno or column.
- */
- if (b != YY_CURRENT_BUFFER){
- b->yy_bs_lineno = 1;
- b->yy_bs_column = 0;
- }
-
- b->yy_is_interactive = 0;
-
- errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * @param yyscanner The scanner object.
- */
- void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
- * a transition to the end-of-buffer state. The second causes
- * a jam in that state.
- */
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
- b->yy_buf_pos = &b->yy_ch_buf[0];
-
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state(yyscanner );
+ if (yych <= 0x00) goto yy103;
+ if (yych == '\n') goto yy101;
+ goto yy104;
+yy98:
+ YYDEBUG(98, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(99, *YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy98;
+ }
+ if (yych <= 0x00) goto yy100;
+ if (yych == '\n') goto yy106;
+ goto yy104;
+yy100:
+ YYDEBUG(100, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 132 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_INPUT;
}
-
-/** Pushes the new state onto the stack. The new state becomes
- * the current state. This function will allocate the stack
- * if necessary.
- * @param new_buffer The new state.
- * @param yyscanner The scanner object.
- */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- if (new_buffer == NULL)
- return;
-
- yyensure_buffer_stack(yyscanner);
-
- /* This block is copied from yy_switch_to_buffer. */
- if ( YY_CURRENT_BUFFER )
+#line 946 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy101:
+ YYDEBUG(101, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 128) {
+ goto yy106;
+ }
+yy102:
+ YYDEBUG(102, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
- /* Flush out information for old buffer. */
- *yyg->yy_c_buf_p = yyg->yy_hold_char;
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
+ return 0;
+}
+#line 960 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy103:
+ YYDEBUG(103, *YYCURSOR);
+ yych = *++YYCURSOR;
+ goto yy102;
+yy104:
+ YYDEBUG(104, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(105, *YYCURSOR);
+ if (yybm[0+yych] & 64) {
+ goto yy104;
}
+ goto yy100;
+yy106:
+ YYDEBUG(106, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(107, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy106;
+ }
+ YYDEBUG(108, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ /* ignore whitespace */
- /* Only push if top exists. Otherwise, replace top. */
- if (YY_CURRENT_BUFFER)
- yyg->yy_buffer_stack_top++;
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
- /* copied from yy_switch_to_buffer. */
- yy_load_buffer_state(yyscanner );
- yyg->yy_did_buffer_switch_on_eof = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- * The next element becomes the new top.
- * @param yyscanner The scanner object.
- */
-void yypop_buffer_state (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- if (!YY_CURRENT_BUFFER)
- return;
-
- yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
- YY_CURRENT_BUFFER_LVALUE = NULL;
- if (yyg->yy_buffer_stack_top > 0)
- --yyg->yy_buffer_stack_top;
-
- if (YY_CURRENT_BUFFER) {
- yy_load_buffer_state(yyscanner );
- yyg->yy_did_buffer_switch_on_eof = 1;
- }
-}
-
-/* Allocates the stack if it does not exist.
- * Guarantees space for at least one push.
- */
-static void yyensure_buffer_stack (yyscan_t yyscanner)
-{
- yy_size_t num_to_alloc;
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if (!yyg->yy_buffer_stack) {
-
- /* First allocation is just for 2 elements, since we don't know if this
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
- num_to_alloc = 1;
- yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- , yyscanner);
- if ( ! yyg->yy_buffer_stack )
- YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
- memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
- yyg->yy_buffer_stack_max = num_to_alloc;
- yyg->yy_buffer_stack_top = 0;
- return;
- }
-
- if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
-
- /* Increase the buffer to prepare for a possible push. */
- int grow_size = 8 /* arbitrary grow size */;
-
- num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
- yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc
- (yyg->yy_buffer_stack,
- num_to_alloc * sizeof(struct yy_buffer_state*)
- , yyscanner);
- if ( ! yyg->yy_buffer_stack )
- YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
- /* zero only the new slots.*/
- memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
- yyg->yy_buffer_stack_max = num_to_alloc;
- }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
-{
- YY_BUFFER_STATE b;
-
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
- b->yy_buf_pos = b->yy_ch_buf = base;
- b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
- b->yy_n_chars = b->yy_buf_size;
- b->yy_is_interactive = 0;
- b->yy_at_bol = 1;
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- yy_switch_to_buffer(b ,yyscanner );
-
- return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to yylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- * yy_scan_bytes() instead.
- */
-YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
-{
-
- return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
- * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
- * @param yyscanner The scanner object.
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner)
-{
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- yy_size_t i;
-
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = _yybytes_len + 2;
- buf = (char *) yyalloc(n ,yyscanner );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
- for ( i = 0; i < _yybytes_len; ++i )
- buf[i] = yybytes[i];
-
- buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
- b = yy_scan_buffer(buf,n ,yyscanner);
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
- /* It's okay to grow etc. this buffer, and we should throw it
- * away when we're done.
- */
- b->yy_is_our_buffer = 1;
-
- return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
-{
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- yytext[yyleng] = yyg->yy_hold_char; \
- yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
- yyg->yy_hold_char = *yyg->yy_c_buf_p; \
- *yyg->yy_c_buf_p = '\0'; \
- yyleng = yyless_macro_arg; \
- } \
- while ( 0 )
-
-/* Accessor methods (get/set functions) to struct members. */
-
-/** Get the user-defined data for this scanner.
- * @param yyscanner The scanner object.
- */
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyextra;
-}
-
-/** Get the current line number.
- * @param yyscanner The scanner object.
- */
-int yyget_lineno (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if (! YY_CURRENT_BUFFER)
- return 0;
-
- return yylineno;
-}
-
-/** Get the current column number.
- * @param yyscanner The scanner object.
- */
-int yyget_column (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- if (! YY_CURRENT_BUFFER)
- return 0;
-
- return yycolumn;
-}
-
-/** Get the input stream.
- * @param yyscanner The scanner object.
- */
-FILE *yyget_in (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyin;
-}
-
-/** Get the output stream.
- * @param yyscanner The scanner object.
- */
-FILE *yyget_out (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyout;
-}
-
-/** Get the length of the current token.
- * @param yyscanner The scanner object.
- */
-yy_size_t yyget_leng (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yyleng;
-}
-
-/** Get the current token.
- * @param yyscanner The scanner object.
- */
-
-char *yyget_text (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yytext;
-}
-
-/** Set the user-defined data. This data is never touched by the scanner.
- * @param user_defined The data to be associated with this scanner.
- * @param yyscanner The scanner object.
- */
-void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyextra = user_defined ;
-}
-
-/** Set the current line number.
- * @param line_number
- * @param yyscanner The scanner object.
- */
-void yyset_lineno (int line_number , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* lineno is only valid if an input buffer exists. */
- if (! YY_CURRENT_BUFFER )
- YY_FATAL_ERROR( "yyset_lineno called with no buffer" );
-
- yylineno = line_number;
-}
-
-/** Set the current column.
- * @param line_number
- * @param yyscanner The scanner object.
- */
-void yyset_column (int column_no , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* column is only valid if an input buffer exists. */
- if (! YY_CURRENT_BUFFER )
- YY_FATAL_ERROR( "yyset_column called with no buffer" );
-
- yycolumn = column_no;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * @param yyscanner The scanner object.
- * @see yy_switch_to_buffer
- */
-void yyset_in (FILE * in_str , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyin = in_str ;
-}
-
-void yyset_out (FILE * out_str , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yyout = out_str ;
-}
-
-int yyget_debug (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yy_flex_debug;
-}
-
-void yyset_debug (int bdebug , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yy_flex_debug = bdebug ;
-}
-
-/* Accessor methods for yylval and yylloc */
-
-YYSTYPE * yyget_lval (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- return yylval;
-}
-
-void yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- yylval = yylval_param;
-}
-
-/* User-visible API */
-
-/* yylex_init is special because it creates the scanner itself, so it is
- * the ONLY reentrant function that doesn't take the scanner as the last argument.
- * That's why we explicitly handle the declaration, instead of using our macros.
- */
-
-int yylex_init(yyscan_t* ptr_yy_globals)
-
-{
- if (ptr_yy_globals == NULL){
- errno = EINVAL;
- return 1;
- }
-
- *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL );
-
- if (*ptr_yy_globals == NULL){
- errno = ENOMEM;
- return 1;
- }
-
- /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
- memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
- return yy_init_globals ( *ptr_yy_globals );
-}
-
-/* yylex_init_extra has the same functionality as yylex_init, but follows the
- * convention of taking the scanner as the last argument. Note however, that
- * this is a *pointer* to a scanner, as it will be allocated by this call (and
- * is the reason, too, why this function also must handle its own declaration).
- * The user defined value in the first argument will be available to yyalloc in
- * the yyextra field.
- */
-
-int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
-
-{
- struct yyguts_t dummy_yyguts;
-
- yyset_extra (yy_user_defined, &dummy_yyguts);
-
- if (ptr_yy_globals == NULL){
- errno = EINVAL;
- return 1;
- }
-
- *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-
- if (*ptr_yy_globals == NULL){
- errno = ENOMEM;
- return 1;
- }
-
- /* By setting to 0xAA, we expose bugs in
- yy_init_globals. Leave at 0x00 for releases. */
- memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
- yyset_extra (yy_user_defined, *ptr_yy_globals);
-
- return yy_init_globals ( *ptr_yy_globals );
-}
-
-static int yy_init_globals (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
- /* Initialization is the same as for the non-reentrant scanner.
- * This function is called from yylex_destroy(), so don't allocate here.
- */
-
- yyg->yy_buffer_stack = 0;
- yyg->yy_buffer_stack_top = 0;
- yyg->yy_buffer_stack_max = 0;
- yyg->yy_c_buf_p = (char *) 0;
- yyg->yy_init = 0;
- yyg->yy_start = 0;
-
- yyg->yy_start_stack_ptr = 0;
- yyg->yy_start_stack_depth = 0;
- yyg->yy_start_stack = NULL;
-
- yyg->yy_state_buf = 0;
- yyg->yy_state_ptr = 0;
- yyg->yy_full_match = 0;
- yyg->yy_lp = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
- yyin = stdin;
- yyout = stdout;
-#else
- yyin = (FILE *) 0;
- yyout = (FILE *) 0;
-#endif
-
- /* For future reference: Set errno on error, since we are called by
- * yylex_init()
- */
- return 0;
+ goto restart;
}
-
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy (yyscan_t yyscanner)
-{
- struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
-
- /* Pop the buffer stack, destroying each element. */
- while(YY_CURRENT_BUFFER){
- yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- yypop_buffer_state(yyscanner);
+#line 992 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
-
- /* Destroy the stack itself. */
- yyfree(yyg->yy_buffer_stack ,yyscanner);
- yyg->yy_buffer_stack = NULL;
-
- /* Destroy the start condition stack. */
- yyfree(yyg->yy_start_stack ,yyscanner );
- yyg->yy_start_stack = NULL;
-
- yyfree ( yyg->yy_state_buf , yyscanner);
- yyg->yy_state_buf = NULL;
-
- /* Reset the globals. This is important in a non-reentrant scanner so the next time
- * yylex() is called, initialization will occur. */
- yy_init_globals( yyscanner);
-
- /* Destroy the main struct (reentrant only). */
- yyfree ( yyscanner , yyscanner );
- yyscanner = NULL;
- return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
-{
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
-{
- register int n;
- for ( n = 0; s[n]; ++n )
- ;
-
- return n;
-}
-#endif
-
-void *yyalloc (yy_size_t size , yyscan_t yyscanner)
-{
- return (void *) malloc( size );
}
+#line 168 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
-void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
-{
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
- * because both ANSI C and C++ allow castless assignment from
- * any pointer type to void*, and deal with argument conversions
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
}
-
-void yyfree (void * ptr , yyscan_t yyscanner)
-{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 131 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
-
-
diff --git a/sapi/phpdbg/phpdbg_lexer.h b/sapi/phpdbg/phpdbg_lexer.h
index 1958cef9a2..ab51e7daa8 100644
--- a/sapi/phpdbg/phpdbg_lexer.h
+++ b/sapi/phpdbg/phpdbg_lexer.h
@@ -1,348 +1,41 @@
-#ifndef yyHEADER_H
-#define yyHEADER_H 1
-#define yyIN_HEADER 1
+/*
+ +----------------------------------------------------------------------+
+ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-2014 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Felipe Pena <felipe@php.net> |
+ | Authors: Joe Watkins <joe.watkins@live.co.uk> |
+ | Authors: Bob Weinand <bwoebi@php.net> |
+ +----------------------------------------------------------------------+
+*/
+
+#ifndef PHPDBG_LEXER_H
+#define PHPDBG_LEXER_H
+
+#include "phpdbg_cmd.h"
+
+typedef struct {
+ unsigned int len;
+ unsigned char *text;
+ unsigned char *cursor;
+ unsigned char *marker;
+ int state;
+} phpdbg_lexer_data;
+
+#define yyparse phpdbg_parse
+#define yylex phpdbg_lex
+
+void phpdbg_init_lexer (phpdbg_param_t *stack, char *input TSRMLS_DC);
+
+int phpdbg_lex (phpdbg_param_t* yylval);
-#line 6 "sapi/phpdbg/phpdbg_lexer.h"
-
-#line 8 "sapi/phpdbg/phpdbg_lexer.h"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* An opaque pointer. */
-#ifndef YY_TYPEDEF_YY_SCANNER_T
-#define YY_TYPEDEF_YY_SCANNER_T
-typedef void* yyscan_t;
-#endif
-
-/* For convenience, these vars (plus the bison vars far below)
- are macros in the reentrant scanner. */
-#define yyin yyg->yyin_r
-#define yyout yyg->yyout_r
-#define yyextra yyg->yyextra_r
-#define yyleng yyg->yyleng_r
-#define yytext yyg->yytext_r
-#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
-#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
-#define yy_flex_debug yyg->yy_flex_debug_r
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
- {
- FILE *yy_input_file;
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- yy_size_t yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-
- };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-void yyrestart (FILE *input_file ,yyscan_t yyscanner );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
-void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
-void yypop_buffer_state (yyscan_t yyscanner );
-
-YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
-
-void *yyalloc (yy_size_t ,yyscan_t yyscanner );
-void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
-void yyfree (void * ,yyscan_t yyscanner );
-
-/* Begin user sect3 */
-
-#define yywrap(yyscanner) 1
-#define YY_SKIP_YYWRAP
-
-#define yytext_ptr yytext_r
-
-#ifdef YY_HEADER_EXPORT_START_CONDITIONS
-#define INITIAL 0
-#define RAW 1
-#define NORMAL 2
-
-#endif
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-int yylex_init (yyscan_t* scanner);
-
-int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
-/* Accessor methods to globals.
- These are made visible to non-reentrant scanners for convenience. */
-
-int yylex_destroy (yyscan_t yyscanner );
-
-int yyget_debug (yyscan_t yyscanner );
-
-void yyset_debug (int debug_flag ,yyscan_t yyscanner );
-
-YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner );
-
-void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
-
-FILE *yyget_in (yyscan_t yyscanner );
-
-void yyset_in (FILE * in_str ,yyscan_t yyscanner );
-
-FILE *yyget_out (yyscan_t yyscanner );
-
-void yyset_out (FILE * out_str ,yyscan_t yyscanner );
-
-yy_size_t yyget_leng (yyscan_t yyscanner );
-
-char *yyget_text (yyscan_t yyscanner );
-
-int yyget_lineno (yyscan_t yyscanner );
-
-void yyset_lineno (int line_number ,yyscan_t yyscanner );
-
-int yyget_column (yyscan_t yyscanner );
-
-void yyset_column (int column_no ,yyscan_t yyscanner );
-
-YYSTYPE * yyget_lval (yyscan_t yyscanner );
-
-void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap (yyscan_t yyscanner );
-#else
-extern int yywrap (yyscan_t yyscanner );
-#endif
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
-#endif
-
-#ifndef YY_NO_INPUT
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int yylex \
- (YYSTYPE * yylval_param ,yyscan_t yyscanner);
-
-#define YY_DECL int yylex \
- (YYSTYPE * yylval_param , yyscan_t yyscanner)
-#endif /* !YY_DECL */
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-#undef YY_NEW_FILE
-#undef YY_FLUSH_BUFFER
-#undef yy_set_bol
-#undef yy_new_buffer
-#undef yy_set_interactive
-#undef YY_DO_BEFORE_ACTION
-
-#ifdef YY_DECL_IS_OURS
-#undef YY_DECL_IS_OURS
-#undef YY_DECL
-#endif
-
-#line 131 "/usr/src/php-src/sapi/phpdbg/phpdbg_lexer.l"
-
-
-#line 347 "sapi/phpdbg/phpdbg_lexer.h"
-#undef yyIN_HEADER
-#endif /* yyHEADER_H */
diff --git a/sapi/phpdbg/phpdbg_lexer.l b/sapi/phpdbg/phpdbg_lexer.l
index b3536feab8..4d9c837f1e 100644
--- a/sapi/phpdbg/phpdbg_lexer.l
+++ b/sapi/phpdbg/phpdbg_lexer.l
@@ -1,131 +1,169 @@
-%{
-
/*
* phpdbg_lexer.l
*/
#include "phpdbg.h"
#include "phpdbg_cmd.h"
-#define YYSTYPE phpdbg_param_t
#include "phpdbg_parser.h"
-%}
-
-%s RAW
-%s NORMAL
-
-%option outfile="sapi/phpdbg/phpdbg_lexer.c" header-file="sapi/phpdbg/phpdbg_lexer.h"
-%option warn nodefault
-
-%option reentrant noyywrap never-interactive nounistd
-%option bison-bridge
-
-T_TRUE "true"
-T_YES "yes"
-T_ON "on"
-T_ENABLED "enabled"
-T_FALSE "false"
-T_NO "no"
-T_OFF "off"
-T_DISABLED "disabled"
-T_EVAL "ev"
-T_SHELL "sh"
-T_IF "if"
-T_RUN "run"
-T_RUN_SHORT "r"
-
-WS [ \r\n\t]+
-DIGITS [0-9\.]+
-ID [^ \r\n\t:#]+
-ADDR 0x[a-fA-F0-9]+
-OPCODE (ZEND_|zend_)([A-Za-z])+
-INPUT [^\n]+
-%%
-
-<INITIAL>{
- {T_EVAL} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_EVAL;
- }
- {T_SHELL} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_SHELL;
- }
- {T_RUN}|{T_RUN_SHORT} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_RUN;
- }
-
- .+ {
- BEGIN(NORMAL);
- REJECT;
- }
-}
-
-<NORMAL>{
- {T_IF} {
- BEGIN(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_IF;
- }
-}
-
-<INITIAL,NORMAL>{
- {ID}[:]{1}[//]{2} {
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_PROTO;
- }
- [#]{1} { return T_POUND; }
- [:]{2} { return T_DCOLON; }
- [:]{1} { return T_COLON; }
-
- {T_YES}|{T_ON}|{T_ENABLED}|{T_TRUE} {
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 1;
- return T_TRUTHY;
- }
- {T_NO}|{T_OFF}|{T_DISABLED}|{T_FALSE} {
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = 0;
- return T_FALSY;
- }
- {DIGITS} {
- phpdbg_init_param(yylval, NUMERIC_PARAM);
- yylval->num = atoi(yytext);
- return T_DIGITS;
- }
- {ADDR} {
- phpdbg_init_param(yylval, ADDR_PARAM);
- yylval->addr = strtoul(yytext, 0, 16);
- return T_ADDR;
- }
- {OPCODE} {
- phpdbg_init_param(yylval, OP_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_OPCODE;
- }
- {ID} {
- phpdbg_init_param(yylval, STR_PARAM);
- yylval->str = zend_strndup(yytext, yyleng);
- yylval->len = yyleng;
- return T_ID;
- }
-}
-
-<RAW>{INPUT} {
+#define LEX(v) (PHPDBG_G(lexer).v)
+
+#define YYCTYPE unsigned char
+#define YYSETCONDITION(x) LEX(state) = x;
+#define YYGETCONDITION() LEX(state)
+#define YYCURSOR LEX(cursor)
+#define YYMARKER LEX(marker)
+#define yyleng LEX(len)
+#define yytext ((char*) LEX(text))
+#undef YYDEBUG
+#define YYDEBUG(a, b)
+#define YYFILL(n)
+
+#define NORMAL 0
+#define RAW 1
+#define INITIAL 2
+
+ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
+
+void phpdbg_init_lexer (phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ PHPDBG_G(parser_stack) = stack;
+
+ YYSETCONDITION(INITIAL);
+
+ LEX(text) = YYCURSOR = (unsigned char *) input;
+ LEX(len) = strlen(input);
+}
+
+int phpdbg_lex (phpdbg_param_t* yylval) {
+ TSRMLS_FETCH(); /* Slow, but this is not a major problem here. TODO: Use TSRMLS_DC */
+
+restart:
+ LEX(text) = YYCURSOR;
+
+/*!re2c
+re2c:yyfill:check = 0;
+T_TRUE "true"
+T_YES "yes"
+T_ON "on"
+T_ENABLED "enabled"
+T_FALSE "false"
+T_NO "no"
+T_OFF "off"
+T_DISABLED "disabled"
+T_EVAL "ev"
+T_SHELL "sh"
+T_IF "if"
+T_RUN "run"
+T_RUN_SHORT "r"
+WS [ \r\n\t]+
+DIGITS [0-9\.]+
+ID [^ \r\n\t:#\000]+
+ADDR [0][x][a-fA-F0-9]+
+OPCODE (ZEND_|zend_)([A-Za-z])+
+INPUT [^\n\000]+
+
+<!*> := yyleng = (size_t) YYCURSOR - (size_t) yytext;
+
+<*>[\n\000] {
+ return 0;
+}
+
+<NORMAL>{T_IF} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_IF;
+}
+
+<NORMAL>{ID}[:]{1}[//]{2} {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_PROTO;
+}
+<NORMAL>[#]{1} {
+ return T_POUND;
+}
+<NORMAL>[:]{2} {
+ return T_DCOLON;
+}
+<NORMAL>[:]{1} {
+ return T_COLON;
+}
+
+<NORMAL>{T_YES}|{T_ON}|{T_ENABLED}|{T_TRUE} {
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 1;
+ return T_TRUTHY;
+}
+
+<NORMAL>{T_NO}|{T_OFF}|{T_DISABLED}|{T_FALSE} {
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = 0;
+ return T_FALSY;
+}
+
+<NORMAL>{DIGITS} {
+ phpdbg_init_param(yylval, NUMERIC_PARAM);
+ yylval->num = atoi(yytext);
+ return T_DIGITS;
+}
+
+<NORMAL>{ADDR} {
+ phpdbg_init_param(yylval, ADDR_PARAM);
+ yylval->addr = strtoul(yytext, 0, 16);
+ return T_ADDR;
+}
+
+<NORMAL>{OPCODE} {
+ phpdbg_init_param(yylval, OP_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_OPCODE;
+}
+
+<NORMAL>{ID} {
+ phpdbg_init_param(yylval, STR_PARAM);
+ yylval->str = zend_strndup(yytext, yyleng);
+ yylval->len = yyleng;
+ return T_ID;
+}
+
+<RAW>{INPUT} {
phpdbg_init_param(yylval, STR_PARAM);
yylval->str = zend_strndup(yytext, yyleng);
yylval->len = yyleng;
- BEGIN(INITIAL);
return T_INPUT;
}
-{WS} { /* ignore whitespace */ }
-%%
+<*>{WS} {
+ /* ignore whitespace */
+
+ goto restart;
+}
+
+<INITIAL>{T_EVAL} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_EVAL;
+}
+<INITIAL>{T_SHELL} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_SHELL;
+}
+<INITIAL>{T_RUN}|{T_RUN_SHORT} {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_RUN;
+}
+
+<INITIAL>. {
+ YYSETCONDITION(NORMAL);
+
+ YYCURSOR = LEX(text);
+ goto restart;
+}
+
+*/
+}
diff --git a/sapi/phpdbg/phpdbg_parser.c b/sapi/phpdbg/phpdbg_parser.c
index 79af58f8c9..f9a3e4d299 100644
--- a/sapi/phpdbg/phpdbg_parser.c
+++ b/sapi/phpdbg/phpdbg_parser.c
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.7. */
+/* A Bison parser, made by GNU Bison 2.6.2. */
/* Bison implementation for Yacc-like parsers in C
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.7"
+#define YYBISON_VERSION "2.6.2"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -59,11 +59,18 @@
#define YYPULL 1
-
+/* Substitute the variable and function names. */
+#define yyparse phpdbg_parse
+#define yylex phpdbg_lex
+#define yyerror phpdbg_error
+#define yylval phpdbg_lval
+#define yychar phpdbg_char
+#define yydebug phpdbg_debug
+#define yynerrs phpdbg_nerrs
/* Copy the first part of user declarations. */
-/* Line 371 of yacc.c */
-#line 2 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 336 of yacc.c */
+#line 1 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
/*
@@ -84,25 +91,14 @@
#include "phpdbg_parser.h"
#include "phpdbg_lexer.h"
+#undef yyerror
+static int yyerror(void ***tsrm_ls, const char *msg);
+
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
-int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
- TSRMLS_FETCH();
- phpdbg_error("Parse Error: %s", msg);
- {
- const phpdbg_param_t *top = stack;
-
- while (top) {
- phpdbg_param_debug(
- top, "--> ");
- top = top->next;
- }
- }
- return 0;
-}
-/* Line 371 of yacc.c */
-#line 106 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 336 of yacc.c */
+#line 102 "sapi/phpdbg/phpdbg_parser.c"
# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
@@ -122,18 +118,18 @@ int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
/* In a future release of Bison, this section will be replaced
by #include "phpdbg_parser.h". */
-#ifndef YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
-# define YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
+#ifndef PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
+# define PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
-extern int yydebug;
+extern int phpdbg_debug;
#endif
/* "%code requires" blocks. */
-/* Line 387 of yacc.c */
-#line 40 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 350 of yacc.c */
+#line 31 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
#include "phpdbg.h"
#ifndef YY_TYPEDEF_YY_SCANNER_T
@@ -142,8 +138,8 @@ typedef void* yyscan_t;
#endif
-/* Line 387 of yacc.c */
-#line 147 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 350 of yacc.c */
+#line 143 "sapi/phpdbg/phpdbg_parser.c"
/* Tokens. */
#ifndef YYTOKENTYPE
@@ -203,24 +199,24 @@ typedef int YYSTYPE;
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
+int phpdbg_parse (void *YYPARSE_PARAM);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
-int yyparse (phpdbg_param_t *stack, yyscan_t scanner);
+int phpdbg_parse (void *tsrm_ls);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#endif /* ! YYPARSE_PARAM */
-#endif /* !YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED */
+#endif /* !PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H */
/* Copy the second part of user declarations. */
-/* Line 390 of yacc.c */
-#line 224 "sapi/phpdbg/phpdbg_parser.c"
+/* Line 353 of yacc.c */
+#line 220 "sapi/phpdbg/phpdbg_parser.c"
#ifdef short
# undef short
@@ -273,24 +269,24 @@ typedef short int yytype_int16;
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# endif
# ifndef YY_
-# define YY_(Msgid) Msgid
+# define YY_(msgid) msgid
# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YYUSE(e) ((void) (e))
#else
-# define YYUSE(E) /* empty */
+# define YYUSE(e) /* empty */
#endif
/* Identity function, used to suppress warnings about constant conditions. */
#ifndef lint
-# define YYID(N) (N)
+# define YYID(n) (n)
#else
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
@@ -438,18 +434,18 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 24
+#define YYFINAL 25
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 33
+#define YYLAST 41
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 21
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 4
+#define YYNNTS 5
/* YYNRULES -- Number of rules. */
-#define YYNRULES 24
+#define YYNRULES 25
/* YYNRULES -- Number of states. */
-#define YYNSTATES 37
+#define YYNSTATES 38
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -496,30 +492,30 @@ static const yytype_uint8 yytranslate[] =
YYRHS. */
static const yytype_uint8 yyprhs[] =
{
- 0, 0, 3, 5, 6, 8, 11, 15, 20, 25,
- 31, 35, 41, 45, 48, 51, 54, 56, 59, 61,
- 63, 65, 67, 69, 71
+ 0, 0, 3, 5, 7, 8, 10, 13, 17, 22,
+ 27, 33, 37, 43, 47, 49, 51, 53, 55, 57,
+ 59, 61, 64, 67, 70, 72
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
- 22, 0, -1, 23, -1, -1, 24, -1, 23, 24,
- -1, 18, 10, 14, -1, 18, 10, 12, 14, -1,
- 13, 18, 10, 14, -1, 13, 18, 10, 12, 14,
- -1, 18, 11, 18, -1, 18, 11, 18, 12, 14,
- -1, 18, 12, 14, -1, 6, 19, -1, 3, 19,
- -1, 5, 19, -1, 4, -1, 4, 19, -1, 17,
- -1, 16, -1, 15, -1, 7, -1, 8, -1, 14,
- -1, 18, -1
+ 22, 0, -1, 23, -1, 25, -1, -1, 24, -1,
+ 23, 24, -1, 18, 10, 14, -1, 18, 10, 12,
+ 14, -1, 13, 18, 10, 14, -1, 13, 18, 10,
+ 12, 14, -1, 18, 11, 18, -1, 18, 11, 18,
+ 12, 14, -1, 18, 12, 14, -1, 17, -1, 16,
+ -1, 15, -1, 7, -1, 8, -1, 14, -1, 18,
+ -1, 6, 19, -1, 3, 19, -1, 5, 19, -1,
+ 4, -1, 4, 19, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
- 0, 76, 76, 77, 81, 82, 86, 91, 96, 107,
- 118, 123, 129, 135, 140, 145, 150, 154, 159, 160,
- 161, 162, 163, 164, 165
+ 0, 66, 66, 67, 68, 72, 73, 77, 82, 87,
+ 97, 107, 112, 118, 124, 125, 126, 127, 128, 129,
+ 130, 134, 139, 144, 149, 153
};
#endif
@@ -536,7 +532,7 @@ static const char *const yytname[] =
"\"digits (numbers)\"", "\"literal (string)\"", "\"address\"",
"\"opcode\"", "\"identifier (command or function name)\"",
"\"input (input string or data)\"", "\"input\"", "$accept", "input",
- "parameters", "parameter", YY_NULL
+ "parameters", "parameter", "full_expression", YY_NULL
};
#endif
@@ -554,17 +550,17 @@ static const yytype_uint16 yytoknum[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 21, 22, 22, 23, 23, 24, 24, 24, 24,
+ 0, 21, 22, 22, 22, 23, 23, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24
+ 24, 25, 25, 25, 25, 25
};
/* 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, 4, 5,
- 3, 5, 3, 2, 2, 2, 1, 2, 1, 1,
- 1, 1, 1, 1, 1
+ 0, 2, 1, 1, 0, 1, 2, 3, 4, 4,
+ 5, 3, 5, 3, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 1, 2
};
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -572,16 +568,16 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 3, 0, 16, 0, 0, 21, 22, 0, 23, 20,
- 19, 18, 24, 0, 2, 4, 14, 17, 15, 13,
- 0, 0, 0, 0, 1, 5, 0, 0, 6, 10,
- 12, 0, 8, 7, 0, 9, 11
+ 4, 0, 24, 0, 0, 17, 18, 0, 19, 16,
+ 15, 14, 20, 0, 2, 5, 3, 22, 25, 23,
+ 21, 0, 0, 0, 0, 1, 6, 0, 0, 7,
+ 11, 13, 0, 9, 8, 0, 10, 12
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- -1, 13, 14, 15
+ -1, 13, 14, 15, 16
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -589,16 +585,16 @@ static const yytype_int8 yydefgoto[] =
#define YYPACT_NINF -11
static const yytype_int8 yypact[] =
{
- -3, -10, 1, 2, 3, -11, -11, 6, -11, -11,
- -11, -11, -4, 23, -3, -11, -11, -11, -11, -11,
- 15, 4, 8, 13, -11, -11, 5, 14, -11, 17,
- -11, 16, -11, -11, 18, -11, -11
+ -3, -10, 10, 11, 12, -11, -11, 14, -11, -11,
+ -11, -11, -4, 28, 9, -11, -11, -11, -11, -11,
+ -11, 23, 6, 16, 21, -11, -11, 7, 22, -11,
+ 25, -11, 24, -11, -11, 26, -11, -11
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int8 yypgoto[] =
{
- -11, -11, -11, 19
+ -11, -11, -11, 27, -11
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -607,24 +603,26 @@ static const yytype_int8 yypgoto[] =
#define YYTABLE_NINF -1
static const yytype_uint8 yytable[] =
{
- 1, 2, 3, 4, 5, 6, 21, 22, 23, 16,
- 7, 8, 9, 10, 11, 12, 27, 31, 28, 32,
- 17, 18, 19, 24, 20, 26, 29, 30, 33, 34,
- 35, 0, 36, 25
+ 1, 2, 3, 4, 5, 6, 22, 23, 24, 17,
+ 7, 8, 9, 10, 11, 12, 5, 6, 28, 32,
+ 29, 33, 7, 8, 9, 10, 11, 12, 25, 18,
+ 19, 20, 21, 27, 30, 31, 34, 35, 36, 0,
+ 37, 26
};
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-11)))
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-11))
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(yytable_value) \
YYID (0)
static const yytype_int8 yycheck[] =
{
3, 4, 5, 6, 7, 8, 10, 11, 12, 19,
- 13, 14, 15, 16, 17, 18, 12, 12, 14, 14,
- 19, 19, 19, 0, 18, 10, 18, 14, 14, 12,
- 14, -1, 14, 14
+ 13, 14, 15, 16, 17, 18, 7, 8, 12, 12,
+ 14, 14, 13, 14, 15, 16, 17, 18, 0, 19,
+ 19, 19, 18, 10, 18, 14, 14, 12, 14, -1,
+ 14, 14
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -632,9 +630,9 @@ static const yytype_int8 yycheck[] =
static const yytype_uint8 yystos[] =
{
0, 3, 4, 5, 6, 7, 8, 13, 14, 15,
- 16, 17, 18, 22, 23, 24, 19, 19, 19, 19,
- 18, 10, 11, 12, 0, 24, 10, 12, 14, 18,
- 14, 12, 14, 14, 12, 14, 14
+ 16, 17, 18, 22, 23, 24, 25, 19, 19, 19,
+ 19, 18, 10, 11, 12, 0, 24, 10, 12, 14,
+ 18, 14, 12, 14, 14, 12, 14, 14
};
#define yyerrok (yyerrstatus = 0)
@@ -676,27 +674,56 @@ do \
} \
else \
{ \
- yyerror (stack, scanner, YY_("syntax error: cannot back up")); \
+ yyerror (tsrm_ls, YY_("syntax error: cannot back up")); \
YYERROR; \
} \
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
-# define YYLEX yylex (&yylval, scanner)
+# define YYLEX yylex (&yylval)
#endif
/* Enable debugging if requested. */
@@ -719,7 +746,7 @@ do { \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
- Type, Value, stack, scanner); \
+ Type, Value, tsrm_ls); \
YYFPRINTF (stderr, "\n"); \
} \
} while (YYID (0))
@@ -733,23 +760,21 @@ do { \
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, phpdbg_param_t *stack, yyscan_t scanner)
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *tsrm_ls)
#else
static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner)
+yy_symbol_value_print (yyoutput, yytype, yyvaluep, tsrm_ls)
FILE *yyoutput;
int yytype;
YYSTYPE const * const yyvaluep;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
FILE *yyo = yyoutput;
YYUSE (yyo);
if (!yyvaluep)
return;
- YYUSE (stack);
- YYUSE (scanner);
+ YYUSE (tsrm_ls);
# ifdef YYPRINT
if (yytype < YYNTOKENS)
YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
@@ -759,7 +784,7 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner)
switch (yytype)
{
default:
- break;
+ break;
}
}
@@ -771,15 +796,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, phpdbg_param_t *stack, yyscan_t scanner)
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *tsrm_ls)
#else
static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, stack, scanner)
+yy_symbol_print (yyoutput, yytype, yyvaluep, tsrm_ls)
FILE *yyoutput;
int yytype;
YYSTYPE const * const yyvaluep;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
if (yytype < YYNTOKENS)
@@ -787,7 +811,7 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, stack, scanner)
else
YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
- yy_symbol_value_print (yyoutput, yytype, yyvaluep, stack, scanner);
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, tsrm_ls);
YYFPRINTF (yyoutput, ")");
}
@@ -830,14 +854,13 @@ do { \
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, phpdbg_param_t *stack, yyscan_t scanner)
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, void *tsrm_ls)
#else
static void
-yy_reduce_print (yyvsp, yyrule, stack, scanner)
+yy_reduce_print (yyvsp, yyrule, tsrm_ls)
YYSTYPE *yyvsp;
int yyrule;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
int yynrhs = yyr2[yyrule];
@@ -851,7 +874,7 @@ yy_reduce_print (yyvsp, yyrule, stack, scanner)
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
&(yyvsp[(yyi + 1) - (yynrhs)])
- , stack, scanner);
+ , tsrm_ls);
YYFPRINTF (stderr, "\n");
}
}
@@ -859,7 +882,7 @@ yy_reduce_print (yyvsp, yyrule, stack, scanner)
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug) \
- yy_reduce_print (yyvsp, Rule, stack, scanner); \
+ yy_reduce_print (yyvsp, Rule, tsrm_ls); \
} while (YYID (0))
/* Nonzero means print parse trace. It is left uninitialized so that
@@ -1005,6 +1028,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;
@@ -1067,13 +1091,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;
}
}
}
@@ -1093,12 +1115,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)
{
@@ -1139,20 +1159,18 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, phpdbg_param_t *stack, yyscan_t scanner)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *tsrm_ls)
#else
static void
-yydestruct (yymsg, yytype, yyvaluep, stack, scanner)
+yydestruct (yymsg, yytype, yyvaluep, tsrm_ls)
const char *yymsg;
int yytype;
YYSTYPE *yyvaluep;
- phpdbg_param_t *stack;
- yyscan_t scanner;
+ void *tsrm_ls;
#endif
{
YYUSE (yyvaluep);
- YYUSE (stack);
- YYUSE (scanner);
+ YYUSE (tsrm_ls);
if (!yymsg)
yymsg = "Deleting";
@@ -1162,7 +1180,7 @@ yydestruct (yymsg, yytype, yyvaluep, stack, scanner)
{
default:
- break;
+ break;
}
}
@@ -1187,43 +1205,19 @@ yyparse (YYPARSE_PARAM)
#if (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
int
-yyparse (phpdbg_param_t *stack, yyscan_t scanner)
+yyparse (void *tsrm_ls)
#else
int
-yyparse (stack, scanner)
- phpdbg_param_t *stack;
- yyscan_t scanner;
+yyparse (tsrm_ls)
+ void *tsrm_ls;
#endif
#endif
{
/* The lookahead symbol. */
int yychar;
-
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __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")
-#else
-/* Default value used for initialization, for pacifying older GCCs
- or non-GCC compilers. */
-static YYSTYPE yyval_default;
-# define YY_INITIAL_VALUE(Value) = Value
-#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;
@@ -1254,7 +1248,7 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
int yyn;
int yyresult;
/* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
+ int yytoken;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
@@ -1272,8 +1266,9 @@ 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;
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
yystacksize = YYINITDEPTH;
YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1282,6 +1277,13 @@ 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;
goto yysetstate;
/*------------------------------------------------------------.
@@ -1422,9 +1424,7 @@ yybackup:
yychar = YYEMPTY;
yystate = yyn;
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
goto yynewstate;
@@ -1460,21 +1460,27 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 4:
-/* Line 1792 of yacc.c */
-#line 81 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { phpdbg_stack_push(stack, &(yyvsp[(1) - (1)])); }
+ case 3:
+/* Line 1802 of yacc.c */
+#line 67 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); }
break;
case 5:
-/* Line 1792 of yacc.c */
-#line 82 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { phpdbg_stack_push(stack, &(yyvsp[(2) - (2)])); }
+/* Line 1802 of yacc.c */
+#line 72 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(1) - (1)])); }
break;
case 6:
-/* Line 1792 of yacc.c */
-#line 86 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 73 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { phpdbg_stack_push(PHPDBG_G(parser_stack), &(yyvsp[(2) - (2)])); }
+ break;
+
+ case 7:
+/* Line 1802 of yacc.c */
+#line 77 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
(yyval).file.name = (yyvsp[(2) - (3)]).str;
@@ -1482,9 +1488,9 @@ yyreduce:
}
break;
- case 7:
-/* Line 1792 of yacc.c */
-#line 91 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 8:
+/* Line 1802 of yacc.c */
+#line 82 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FILE_PARAM;
(yyval).file.name = (yyvsp[(1) - (4)]).str;
@@ -1492,13 +1498,12 @@ yyreduce:
}
break;
- case 8:
-/* Line 1792 of yacc.c */
-#line 96 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 9:
+/* Line 1802 of yacc.c */
+#line 87 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = FILE_PARAM;
- (yyval).file.name = malloc((yyvsp[(1) - (4)]).len +
- (yyvsp[(2) - (4)]).len + 1);
+ (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);
@@ -1508,13 +1513,12 @@ yyreduce:
}
break;
- case 9:
-/* Line 1792 of yacc.c */
-#line 107 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 10:
+/* Line 1802 of yacc.c */
+#line 97 "/var/root/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);
+ (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);
@@ -1524,9 +1528,9 @@ yyreduce:
}
break;
- case 10:
-/* Line 1792 of yacc.c */
-#line 118 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 11:
+/* Line 1802 of yacc.c */
+#line 107 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (3)]).str;
@@ -1534,9 +1538,9 @@ yyreduce:
}
break;
- case 11:
-/* Line 1792 of yacc.c */
-#line 123 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 12:
+/* Line 1802 of yacc.c */
+#line 112 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_METHOD_PARAM;
(yyval).method.class = (yyvsp[(1) - (5)]).str;
@@ -1545,9 +1549,9 @@ yyreduce:
}
break;
- case 12:
-/* Line 1792 of yacc.c */
-#line 129 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+ case 13:
+/* Line 1802 of yacc.c */
+#line 118 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{
(yyval).type = NUMERIC_FUNCTION_PARAM;
(yyval).str = (yyvsp[(1) - (3)]).str;
@@ -1556,100 +1560,100 @@ yyreduce:
}
break;
- case 13:
-/* Line 1792 of yacc.c */
-#line 135 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = COND_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
- break;
-
case 14:
-/* Line 1792 of yacc.c */
-#line 140 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = EVAL_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+/* Line 1802 of yacc.c */
+#line 124 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 15:
-/* Line 1792 of yacc.c */
-#line 145 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = SHELL_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+/* Line 1802 of yacc.c */
+#line 125 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 16:
-/* Line 1792 of yacc.c */
-#line 150 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = RUN_PARAM;
- (yyval).len = 0;
- }
+/* Line 1802 of yacc.c */
+#line 126 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 17:
-/* Line 1792 of yacc.c */
-#line 154 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = RUN_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+/* Line 1802 of yacc.c */
+#line 127 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 18:
-/* Line 1792 of yacc.c */
-#line 159 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 128 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 19:
-/* Line 1792 of yacc.c */
-#line 160 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 129 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 20:
-/* Line 1792 of yacc.c */
-#line 161 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 1802 of yacc.c */
+#line 130 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 21:
-/* Line 1792 of yacc.c */
-#line 162 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 134 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = COND_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 22:
-/* Line 1792 of yacc.c */
-#line 163 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = EVAL_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 23:
-/* Line 1792 of yacc.c */
-#line 164 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 144 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = SHELL_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 24:
-/* Line 1792 of yacc.c */
-#line 165 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+/* Line 1802 of yacc.c */
+#line 149 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = RUN_PARAM;
+ (yyval).len = 0;
+ }
break;
+ case 25:
+/* Line 1802 of yacc.c */
+#line 153 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ {
+ (yyval).type = RUN_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
+ break;
-/* Line 1792 of yacc.c */
-#line 1653 "sapi/phpdbg/phpdbg_parser.c"
+
+/* Line 1802 of yacc.c */
+#line 1657 "sapi/phpdbg/phpdbg_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -1699,7 +1703,7 @@ yyerrlab:
{
++yynerrs;
#if ! YYERROR_VERBOSE
- yyerror (stack, scanner, YY_("syntax error"));
+ yyerror (tsrm_ls, YY_("syntax error"));
#else
# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
yyssp, yytoken)
@@ -1726,7 +1730,7 @@ yyerrlab:
yymsgp = yymsg;
}
}
- yyerror (stack, scanner, yymsgp);
+ yyerror (tsrm_ls, yymsgp);
if (yysyntax_error_status == 2)
goto yyexhaustedlab;
}
@@ -1750,7 +1754,7 @@ yyerrlab:
else
{
yydestruct ("Error: discarding",
- yytoken, &yylval, stack, scanner);
+ yytoken, &yylval, tsrm_ls);
yychar = YYEMPTY;
}
}
@@ -1806,15 +1810,13 @@ yyerrlab1:
yydestruct ("Error: popping",
- yystos[yystate], yyvsp, stack, scanner);
+ yystos[yystate], yyvsp, tsrm_ls);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
}
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
/* Shift the error token. */
@@ -1843,7 +1845,7 @@ yyabortlab:
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
yyexhaustedlab:
- yyerror (stack, scanner, YY_("memory exhausted"));
+ yyerror (tsrm_ls, YY_("memory exhausted"));
yyresult = 2;
/* Fall through. */
#endif
@@ -1855,7 +1857,7 @@ yyreturn:
user semantic actions for why this is necessary. */
yytoken = YYTRANSLATE (yychar);
yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval, stack, scanner);
+ yytoken, &yylval, tsrm_ls);
}
/* Do not reclaim the symbols of the rule which action triggered
this YYABORT or YYACCEPT. */
@@ -1864,7 +1866,7 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp, stack, scanner);
+ yystos[*yyssp], yyvsp, tsrm_ls);
YYPOPSTACK (1);
}
#ifndef yyoverflow
@@ -1880,6 +1882,30 @@ yyreturn:
}
-/* Line 2055 of yacc.c */
-#line 168 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 2048 of yacc.c */
+#line 160 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+
+static int yyerror(void ***tsrm_ls, const char *msg) {
+ phpdbg_error("Parse Error: %s", msg);
+
+ {
+ const phpdbg_param_t *top = PHPDBG_G(parser_stack);
+
+ while (top) {
+ phpdbg_param_debug(top, "--> ");
+ top = top->next;
+ }
+ }
+ return 0;
+}
+
+int phpdbg_do_parse(phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ phpdbg_init_lexer(stack, input TSRMLS_CC);
+
+#ifdef ZTS
+ return yyparse(TSRMLS_C);
+#else
+ return yyparse(NULL);
+#endif
+}
diff --git a/sapi/phpdbg/phpdbg_parser.h b/sapi/phpdbg/phpdbg_parser.h
index 6acb8963c9..b3aadb9c62 100644
--- a/sapi/phpdbg/phpdbg_parser.h
+++ b/sapi/phpdbg/phpdbg_parser.h
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.7. */
+/* A Bison parser, made by GNU Bison 2.6.2. */
/* Bison interface for Yacc-like parsers in C
@@ -30,18 +30,18 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-#ifndef YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
-# define YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED
+#ifndef PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
+# define PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
-extern int yydebug;
+extern int phpdbg_debug;
#endif
/* "%code requires" blocks. */
-/* Line 2058 of yacc.c */
-#line 40 "/usr/src/php-src/sapi/phpdbg/phpdbg_parser.y"
+/* Line 2055 of yacc.c */
+#line 31 "/var/root/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 2058 of yacc.c */
+/* Line 2055 of yacc.c */
#line 55 "sapi/phpdbg/phpdbg_parser.h"
/* Tokens. */
@@ -111,16 +111,16 @@ typedef int YYSTYPE;
#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
+int phpdbg_parse (void *YYPARSE_PARAM);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
-int yyparse (phpdbg_param_t *stack, yyscan_t scanner);
+int phpdbg_parse (void *tsrm_ls);
#else
-int yyparse ();
+int phpdbg_parse ();
#endif
#endif /* ! YYPARSE_PARAM */
-#endif /* !YY_YY_SAPI_PHPDBG_PHPDBG_PARSER_H_INCLUDED */
+#endif /* !PHPDBG_SAPI_PHPDBG_PHPDBG_PARSER_H */
diff --git a/sapi/phpdbg/phpdbg_parser.y b/sapi/phpdbg/phpdbg_parser.y
index 4a84504e2e..fd81edfc29 100644
--- a/sapi/phpdbg/phpdbg_parser.y
+++ b/sapi/phpdbg/phpdbg_parser.y
@@ -1,4 +1,3 @@
-%error-verbose
%{
/*
@@ -19,23 +18,15 @@
#include "phpdbg_parser.h"
#include "phpdbg_lexer.h"
+#undef yyerror
+static int yyerror(void ***tsrm_ls, const char *msg);
+
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
-int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
- TSRMLS_FETCH();
- phpdbg_error("Parse Error: %s", msg);
- {
- const phpdbg_param_t *top = stack;
-
- while (top) {
- phpdbg_param_debug(
- top, "--> ");
- top = top->next;
- }
- }
- return 0;
-}
%}
+
+%pure-parser
+%error-verbose
%code requires {
#include "phpdbg.h"
@@ -44,59 +35,58 @@ int yyerror(phpdbg_param_t *stack, yyscan_t scanner, const char *msg) {
typedef void* yyscan_t;
#endif
}
+
+%parse-param { void *tsrm_ls }
+
%output "sapi/phpdbg/phpdbg_parser.c"
%defines "sapi/phpdbg/phpdbg_parser.h"
-
-%define api.pure
-%lex-param { yyscan_t scanner }
-%parse-param { phpdbg_param_t *stack }
-%parse-param { yyscan_t scanner }
-
-%token T_EVAL "eval"
-%token T_RUN "run"
-%token T_SHELL "shell"
-%token T_IF "if (condition)"
-%token T_TRUTHY "truthy (true, on, yes or enabled)"
-%token T_FALSY "falsy (false, off, no or disabled)"
-%token T_STRING "string (some input, perhaps)"
-%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"
-%token T_OPCODE "opcode"
-%token T_ID "identifier (command or function name)"
-%token T_INPUT "input (input string or data)"
-%token T_UNEXPECTED "input"
-%%
+
+%token T_EVAL "eval"
+%token T_RUN "run"
+%token T_SHELL "shell"
+%token T_IF "if (condition)"
+%token T_TRUTHY "truthy (true, on, yes or enabled)"
+%token T_FALSY "falsy (false, off, no or disabled)"
+%token T_STRING "string (some input, perhaps)"
+%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"
+%token T_OPCODE "opcode"
+%token T_ID "identifier (command or function name)"
+%token T_INPUT "input (input string or data)"
+%token T_UNEXPECTED "input"
+
+%% /* Rules */
input
- : parameters
- | /* nothing */
- ;
+ : parameters
+ | full_expression { phpdbg_stack_push(PHPDBG_G(parser_stack), &$1); }
+ | /* nothing */
+ ;
parameters
- : parameter { phpdbg_stack_push(stack, &$1); }
- | parameters parameter { phpdbg_stack_push(stack, &$2); }
+ : parameter { phpdbg_stack_push(PHPDBG_G(parser_stack), &$1); }
+ | parameters parameter { phpdbg_stack_push(PHPDBG_G(parser_stack), &$2); }
;
parameter
- : T_ID T_COLON T_DIGITS {
+ : T_ID T_COLON T_DIGITS {
$$.type = FILE_PARAM;
$$.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 {
+ | T_PROTO T_ID T_COLON T_DIGITS {
$$.type = FILE_PARAM;
- $$.file.name = malloc($1.len +
- $2.len + 1);
+ $$.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);
@@ -104,10 +94,9 @@ parameter
}
$$.file.line = $4.num;
}
- | T_PROTO T_ID T_COLON T_POUND T_DIGITS {
+ | T_PROTO T_ID T_COLON T_POUND T_DIGITS {
$$.type = NUMERIC_FILE_PARAM;
- $$.file.name = malloc($1.len +
- $2.len + 1);
+ $$.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);
@@ -115,54 +104,81 @@ parameter
}
$$.file.line = $5.num;
}
- | T_ID T_DCOLON T_ID {
+ | T_ID T_DCOLON T_ID {
$$.type = METHOD_PARAM;
$$.method.class = $1.str;
$$.method.name = $3.str;
}
- | T_ID T_DCOLON T_ID T_POUND T_DIGITS {
+ | T_ID T_DCOLON T_ID T_POUND T_DIGITS {
$$.type = NUMERIC_METHOD_PARAM;
$$.method.class = $1.str;
$$.method.name = $3.str;
$$.num = $5.num;
}
- | T_ID T_POUND T_DIGITS {
+ | T_ID T_POUND T_DIGITS {
$$.type = NUMERIC_FUNCTION_PARAM;
$$.str = $1.str;
$$.len = $1.len;
$$.num = $3.num;
}
- | T_IF T_INPUT {
+ | T_OPCODE { $$ = $1; }
+ | T_ADDR { $$ = $1; }
+ | T_LITERAL { $$ = $1; }
+ | T_TRUTHY { $$ = $1; }
+ | T_FALSY { $$ = $1; }
+ | T_DIGITS { $$ = $1; }
+ | T_ID { $$ = $1; }
+ ;
+
+full_expression
+ : T_IF T_INPUT {
$$.type = COND_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_EVAL T_INPUT {
+ | T_EVAL T_INPUT {
$$.type = EVAL_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_SHELL T_INPUT {
+ | T_SHELL T_INPUT {
$$.type = SHELL_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_RUN {
+ | T_RUN {
$$.type = RUN_PARAM;
$$.len = 0;
}
- | T_RUN T_INPUT {
+ | T_RUN T_INPUT {
$$.type = RUN_PARAM;
$$.str = $2.str;
$$.len = $2.len;
}
- | T_OPCODE { $$ = $1; }
- | T_ADDR { $$ = $1; }
- | T_LITERAL { $$ = $1; }
- | T_TRUTHY { $$ = $1; }
- | T_FALSY { $$ = $1; }
- | T_DIGITS { $$ = $1; }
- | T_ID { $$ = $1; }
;
%%
+
+static int yyerror(void ***tsrm_ls, const char *msg) {
+ phpdbg_error("Parse Error: %s", msg);
+
+ {
+ const phpdbg_param_t *top = PHPDBG_G(parser_stack);
+
+ while (top) {
+ phpdbg_param_debug(top, "--> ");
+ top = top->next;
+ }
+ }
+ return 0;
+}
+
+int phpdbg_do_parse(phpdbg_param_t *stack, char *input TSRMLS_DC) {
+ phpdbg_init_lexer(stack, input TSRMLS_CC);
+
+#ifdef ZTS
+ return yyparse(TSRMLS_C);
+#else
+ return yyparse(NULL);
+#endif
+}
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index 7a28a75129..5379e77586 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -38,8 +38,6 @@
#include "phpdbg_lexer.h"
#include "phpdbg_parser.h"
-int yyparse(phpdbg_param_t *stack, yyscan_t scanner);
-
/* {{{ command declarations */
const phpdbg_command_t phpdbg_prompt_commands[] = {
PHPDBG_COMMAND_D(exec, "set execution context", 'e', NULL, "s"),
@@ -248,20 +246,10 @@ void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_
char *why = NULL;
char *input = phpdbg_read_input(cmd TSRMLS_CC);
phpdbg_param_t stack;
- yyscan_t scanner;
- YY_BUFFER_STATE state;
phpdbg_init_param(&stack, STACK_PARAM);
-
- if (yylex_init(&scanner)) {
- phpdbg_error(
- "could not initialize scanner");
- break;
- }
- state = yy_scan_string(input, scanner);
-
- if (yyparse(&stack, scanner) <= 0) {
+ if (phpdbg_do_parse(&stack, input TSRMLS_CC) <= 0) {
switch (phpdbg_stack_execute(&stack, &why TSRMLS_CC)) {
case FAILURE:
// if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
@@ -274,15 +262,12 @@ void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_
break;
}
}
-
+
if (why) {
free(why);
why = NULL;
}
-
- yy_delete_buffer(state, scanner);
- yylex_destroy(scanner);
-
+
phpdbg_stack_free(&stack);
phpdbg_destroy_input(&input TSRMLS_CC);
}
@@ -1014,20 +999,9 @@ int phpdbg_interactive(TSRMLS_D) /* {{{ */
if (input) {
do {
- yyscan_t scanner;
- YY_BUFFER_STATE state;
-
phpdbg_init_param(&stack, STACK_PARAM);
- if (yylex_init(&scanner)) {
- phpdbg_error(
- "could not initialize scanner");
- return FAILURE;
- }
-
- state = yy_scan_string(input, scanner);
-
- if (yyparse(&stack, scanner) <= 0) {
+ if (phpdbg_do_parse(&stack, input TSRMLS_CC) <= 0) {
switch (ret = phpdbg_stack_execute(&stack, &why TSRMLS_CC)) {
case FAILURE:
if (!(PHPDBG_G(flags) & PHPDBG_IS_QUITTING)) {
@@ -1061,9 +1035,6 @@ int phpdbg_interactive(TSRMLS_D) /* {{{ */
why = NULL;
}
- yy_delete_buffer(state, scanner);
- yylex_destroy(scanner);
-
phpdbg_stack_free(&stack);
phpdbg_destroy_input(&input TSRMLS_CC);
diff --git a/sapi/phpdbg/travis/ci.sh b/sapi/phpdbg/travis/ci.sh
index 44d56a01ff..d9f3ac6a02 100755
--- a/sapi/phpdbg/travis/ci.sh
+++ b/sapi/phpdbg/travis/ci.sh
@@ -1,6 +1,7 @@
#!/usr/bin/env sh
git clone https://github.com/php/php-src
cd php-src/sapi
+rm -rf phpdbg
git clone https://github.com/krakjoe/phpdbg.git
cd ../
./buildconf --force