From 9dd66bc2aef5a38ab8a661d8ba20d2a249fec81a Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Fri, 30 Apr 1999 17:29:18 +0000 Subject: [PATCH] Fix Boris's problem (in my never ending struggle to show I never mean what I say when I say something's not gonna happen :) --- Zend/zend-parser.y | 2 ++ Zend/zend-scanner.l | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Zend/zend-parser.y b/Zend/zend-parser.y index 0b81ad4316..4aea58c91a 100644 --- a/Zend/zend-parser.y +++ b/Zend/zend-parser.y @@ -69,6 +69,7 @@ %token T_LNUMBER %token T_DNUMBER %token T_STRING +%token T_STRING_VARNAME %token T_VARIABLE %token T_NUM_STRING %token T_INLINE_HTML @@ -452,6 +453,7 @@ static_scalar: /* compile-time evaluated scalars */ scalar: T_STRING { do_fetch_constant(&$$, &$1, ZEND_RT CLS_CC); } + | T_STRING_VARNAME { $$ = $1; } | common_scalar { $$ = $1; } | '"' encaps_list '"' { $$ = $2; } | '\'' encaps_list '\'' { $$ = $2; } diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index 28f8182bf3..ef494bb59e 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -24,6 +24,7 @@ %x BACKQUOTE %x HEREDOC %x LOOKING_FOR_PROPERTY +%x LOOKING_FOR_VARNAME %option stack %{ @@ -825,7 +826,7 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+ "${" { - yy_push_state(IN_SCRIPTING); + yy_push_state(LOOKING_FOR_VARNAME); return T_DOLLAR_OPEN_CURLY_BRACES; } @@ -836,6 +837,23 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+ } +{LABEL} { + zendlval->value.str.val = (char *) estrndup(yytext, yyleng); + zendlval->value.str.len = yyleng; + zendlval->type = IS_STRING; + yy_pop_state(); + yy_push_state(IN_SCRIPTING); + return T_STRING_VARNAME; +} + + +. { + /*yyless(1);*/ + unput(yytext[0]); + yy_pop_state(); + yy_push_state(IN_SCRIPTING); +} + {LNUM}|{HNUM} { errno = 0; @@ -1237,6 +1255,7 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+ return T_CURLY_OPEN; } + "\\'" { zendlval->value.chval='\''; return T_CHARACTER; -- 2.50.1