1
0
mirror of https://github.com/php/php-src.git synced 2026-04-07 08:02:49 +02:00

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 :)
This commit is contained in:
Zeev Suraski
1999-04-30 17:29:18 +00:00
parent bc3686c14a
commit 9dd66bc2ae
2 changed files with 22 additions and 1 deletions

View File

@@ -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; }

View File

@@ -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 #'.:;,()|^&+-/*=%!~<>?@]+
<DOUBLE_QUOTES,BACKQUOTE,HEREDOC>"${" {
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 #'.:;,()|^&+-/*=%!~<>?@]+
}
<LOOKING_FOR_VARNAME>{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;
}
<LOOKING_FOR_VARNAME>. {
/*yyless(1);*/
unput(yytext[0]);
yy_pop_state();
yy_push_state(IN_SCRIPTING);
}
<IN_SCRIPTING>{LNUM}|{HNUM} {
errno = 0;
@@ -1237,6 +1255,7 @@ ESCAPED_AND_WHITESPACE [\n\t\r #'.:;,()|^&+-/*=%!~<>?@]+
return T_CURLY_OPEN;
}
<SINGLE_QUOTE>"\\'" {
zendlval->value.chval='\'';
return T_CHARACTER;