From 5868427dcf81fe3ce96803c073ddb7a9d5d98b44 Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Sun, 17 Dec 2000 20:03:35 +0000 Subject: [PATCH] - Fix problem in one line comments with line endings such as ??> --- Zend/zend_language_scanner.l | 37 ++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index c71d05e779..5711b3db41 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -29,6 +29,7 @@ %x ST_LOOKING_FOR_PROPERTY %x ST_LOOKING_FOR_VARNAME %x ST_COMMENT +%x ST_ONE_LINE_COMMENT %option stack %{ @@ -751,7 +752,6 @@ ANY_CHAR (.|[\n]) } {ANY_CHAR} { - /*unput(yytext[0]);*/ yyless(0); yy_pop_state(); } @@ -994,7 +994,6 @@ ANY_CHAR (.|[\n]) {ANY_CHAR} { - /*unput(yytext[0]);*/ yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); @@ -1176,8 +1175,34 @@ ANY_CHAR (.|[\n]) } -([#]|"//")([^\n\r?]|"?"[^>\n\r])*("?\n"|"?\r\n")? { /* eat one line comments */ - HANDLE_NEWLINE(yytext[yyleng-1]); +([#]|"//") { + BEGIN(ST_ONE_LINE_COMMENT); + yymore(); +} + +"?"|">" { + yymore(); +} + +[^\n\r?>]+ { + yymore(); +} + +"\n"|"\r\n" { + zendlval->value.str.val = yytext; /* no copying - intentional */ + zendlval->value.str.len = yyleng; + zendlval->type = IS_STRING; + BEGIN(ST_IN_SCRIPTING); + CG(zend_lineno)++; + return T_COMMENT; +} + +"?>" { + zendlval->value.str.val = yytext; /* no copying - intentional */ + zendlval->value.str.len = yyleng; + zendlval->type = IS_STRING; + yyless(yyleng-2); + BEGIN(ST_IN_SCRIPTING); return T_COMMENT; } @@ -1457,9 +1482,6 @@ ANY_CHAR (.|[\n]) zendlval->value.lval = (long) yytext[0]; if (yyleng == 2) { yyless(1); - /*unput(yytext[1]); - yytext[1] = 0; - yyleng--;*/ } return T_CHARACTER; } @@ -1473,7 +1495,6 @@ ANY_CHAR (.|[\n]) "{$" { zendlval->value.lval = (long) yytext[0]; yy_push_state(ST_IN_SCRIPTING); - /*unput('$');*/ yyless(1); return T_CURLY_OPEN; } -- 2.40.0