]> granicus.if.org Git - php/commitdiff
Revert "handle strings better"
authorkrakjoe <joe.watkins@live.co.uk>
Sat, 15 Feb 2014 23:34:35 +0000 (23:34 +0000)
committerkrakjoe <joe.watkins@live.co.uk>
Sat, 15 Feb 2014 23:34:35 +0000 (23:34 +0000)
This reverts commit a32f1b46540fd8add78f53cc8059f7f749ca3ab8.

phpdbg_lexer.l
phpdbg_parser.y

index f916a0bc6aa1c53654ef659cca6b212ab99c89ac..6915ab62e0499ad0826fa9491e6e96b34a31de62 100644 (file)
 #include "phpdbg_parser.h"
 #include <stdio.h>
 #include <string.h>
-
-static inline void phpdbg_param_append(phpdbg_param_t *param, const char *next, size_t nlen) {
-       if (param->len + nlen > param->addr) {
-               param->str = realloc(
-                       param->str, param->len + 1024);
-               param->addr += 1024;
-       }
-       memcpy(&param->str[param->len], next, nlen);
-       param->len += nlen;
-       param->str[param->len] = 0;
-}
 %}
 
 %s RAW
-%s STRING
 
 %option outfile="phpdbg_lexer.c" header-file="phpdbg_lexer.h"
 %option warn nodefault
@@ -41,7 +29,6 @@ C_FALSE               "false"
 C_NO           "no"
 C_OFF          "off"
 C_DISABLED     "disabled"
-
 C_EVAL         "eval"
 C_SHELL                "shell"
 
@@ -50,6 +37,7 @@ ID                    [a-zA-Z][a-zA-Z0-9_]+
 METHOD         {ID}::{ID}
 FILE           [^ :0-9]{1,}:[0-9]+
 OPLINE         0x[a-fA-F0-9]+
+LITERAL                \"(\\.|[^\\"])*\"
 WS          [ \r\n\t]+
 INPUT          [^\n]+
 %%
@@ -67,11 +55,11 @@ INPUT               [^\n]+
        }
        {C_EVAL}                { 
                BEGIN(RAW);
-               return C_EVAL;
+               return C_EVAL; 
        }
        {C_SHELL}               { 
                BEGIN(RAW);
-               return C_SHELL;
+               return C_SHELL; 
        }
        {DIGITS}         { 
                yylval->type = NUMERIC_PARAM;
@@ -95,26 +83,17 @@ INPUT               [^\n]+
                yylval->addr = strtoul(yytext, NULL, 10);
                return T_OPLINE; 
        }
-       {ID}            {
+       {LITERAL}               { 
                yylval->type = STR_PARAM;
                yylval->str = strndup(yytext, yyleng);
                yylval->len = yyleng;
-               return T_ID
+               return T_LITERAL
        }
-       \"                                      {
-       BEGIN(STRING);
+       {ID}            {
                yylval->type = STR_PARAM;
-               yylval->str = (char*) malloc(28);
-               yylval->len = 0;
-               yylval->addr = 28;
-       }
-       <STRING>[^\\"\n]*       { phpdbg_param_append(yylval, yytext); }
-       <STRING>\\n                     { phpdbg_param_append(yylval, "\n");   }
-       <STRING>\\t                     { phpdbg_param_append(yylval, "\t");   }
-       <STRING>\\[\\"]         { phpdbg_param_append(yylval, "\\");   }
-       <STRING>\"                      {
-               BEGIN(INITIAL);
-               return T_STRING;
+               yylval->str = strndup(yytext, yyleng);
+               yylval->len = yyleng;
+               return T_ID; 
        }
 }
 <RAW>{INPUT}           {
index f8fc5a0a7d99425b324e3516b382c208f9efdac5..9b87847ebc9a2c9967959d364eb2102c49321ff1 100644 (file)
@@ -98,7 +98,7 @@ typedef void* yyscan_t;
 %token C_SHELL         "shell"
 
 %token T_DIGITS         "digits (numbers)"
-%token T_STRING  "literal (T_LITERAL)"
+%token T_LITERAL "literal (T_LITERAL)"
 %token T_METHOD         "method (T_METHOD)"
 %token T_OPLINE         "opline (T_OPLINE)"
 %token T_FILE   "file (T_FILE)"
@@ -135,7 +135,7 @@ parameter
        | T_METHOD                                                              { $$ = $1; }
        | T_OPLINE                                                              { $$ = $1; }
        | T_ID                                                                  { $$ = $1; } 
-       | T_STRING                                                              { $$ = $1; }
+       | T_LITERAL                                                             { $$ = $1; }
        | C_TRUTHY                                                              { $$ = $1; }
        | C_FALSY                                                               { $$ = $1; }
        ;