felipe Mon, 12 Jul 2010 18:48:09 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=301212
Log:
- Fixed line number on error messages
Changed paths:
U php/php-src/branches/LEMON/Zend/zend_compile.c
U php/php-src/branches/LEMON/Zend/zend_compile.h
U php/php-src/branches/LEMON/Zend/zend_highlight.c
U php/php-src/branches/LEMON/Zend/zend_indent.c
U php/php-src/branches/LEMON/Zend/zend_language_scanner.c
U php/php-src/branches/LEMON/Zend/zend_language_scanner.l
U php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h
U php/php-src/branches/LEMON/ext/tokenizer/tokenizer.c
Modified: php/php-src/branches/LEMON/Zend/zend_compile.c
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_compile.c 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_compile.c 2010-07-12 18:48:09 UTC (rev 301212)
@@ -6109,13 +6109,15 @@
int zendparse(TSRMLS_D) /* {{{ */
{
- int token, halting = 0;
+ int token, lineno = 0, halting = 0;
void *pParser;
if ((pParser = zend_lang_parseAlloc(malloc)) == NULL) {
zend_lang_parseFree(pParser, free);
return 1;
}
+
+ lineno = CG(zend_lineno);
while (1) {
znode zendlval;
@@ -6126,12 +6128,13 @@
if (CG(increment_lineno)) {
CG(zend_lineno)++;
CG(increment_lineno) = 0;
- }
+ lineno = CG(zend_lineno);
+ }
again:
Z_TYPE(zendlval.u.constant) = IS_LONG;
/* Call the scanner */
- token = lex_scan(&zendlval.u.constant TSRMLS_CC);
+ token = lex_scan(&zendlval.u.constant, &lineno TSRMLS_CC);
switch (token) {
case T_COMMENT:
@@ -6160,6 +6163,7 @@
break;
}
zend_lang_parse(pParser, token, zendlval TSRMLS_CC);
+ CG(zend_lineno) = lineno;
if (token == 0) {
break;
} else if (halting == 1 && token == T_SEMICOLON) {
Modified: php/php-src/branches/LEMON/Zend/zend_compile.h
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_compile.h 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_compile.h 2010-07-12 18:48:09 UTC (rev 301212)
@@ -380,7 +380,7 @@
extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC);
extern ZEND_API zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC);
-ZEND_API int lex_scan(zval *zendlval TSRMLS_DC);
+ZEND_API int lex_scan(zval *zendlval, int *lineno TSRMLS_DC);
void startup_scanner(TSRMLS_D);
void shutdown_scanner(TSRMLS_D);
Modified: php/php-src/branches/LEMON/Zend/zend_highlight.c
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_highlight.c 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_highlight.c 2010-07-12 18:48:09 UTC (rev 301212)
@@ -90,7 +90,7 @@
ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC)
{
zval token;
- int token_type;
+ int token_type, lineno = 0;
char *last_color = syntax_highlighter_ini->highlight_html;
char *next_color;
@@ -98,7 +98,7 @@
zend_printf("<span style=\"color: %s\">\n", last_color);
/* highlight stuff coming back from zendlex() */
token.type = 0;
- while ((token_type=lex_scan(&token TSRMLS_CC))) {
+ while ((token_type=lex_scan(&token, &lineno TSRMLS_CC))) {
switch (token_type) {
case T_INLINE_HTML:
next_color = syntax_highlighter_ini->highlight_html;
@@ -174,11 +174,11 @@
ZEND_API void zend_strip(TSRMLS_D)
{
zval token;
- int token_type;
+ int token_type, lineno = 0;
int prev_space = 0;
token.type = 0;
- while ((token_type=lex_scan(&token TSRMLS_CC))) {
+ while ((token_type=lex_scan(&token, &lineno TSRMLS_CC))) {
switch (token_type) {
case T_WHITESPACE:
if (!prev_space) {
@@ -195,7 +195,7 @@
zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
efree(token.value.str.val);
/* read the following character, either newline or ; */
- if (lex_scan(&token TSRMLS_CC) != T_WHITESPACE) {
+ if (lex_scan(&token, &lineno TSRMLS_CC) != T_WHITESPACE) {
zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
}
zend_write("\n", sizeof("\n") - 1);
Modified: php/php-src/branches/LEMON/Zend/zend_indent.c
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_indent.c 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_indent.c 2010-07-12 18:48:09 UTC (rev 301212)
@@ -52,7 +52,7 @@
zval token;
int token_type;
int in_string=0;
- int nest_level=0;
+ int nest_level=0, lineno = 0;
int emit_whitespace[256];
int i;
TSRMLS_FETCH();
@@ -61,7 +61,7 @@
/* highlight stuff coming back from zendlex() */
token.type = 0;
- while ((token_type=lex_scan(&token TSRMLS_CC))) {
+ while ((token_type=lex_scan(&token, &lineno TSRMLS_CC))) {
switch (token_type) {
case T_INLINE_HTML:
zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
Modified: php/php-src/branches/LEMON/Zend/zend_language_scanner.c
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_language_scanner.c 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_language_scanner.c 2010-07-12 18:48:09 UTC (rev 301212)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sun Jul 11 18:23:43 2010 */
+/* Generated by re2c 0.13.5 on Mon Jul 12 14:03:13 2010 */
#line 1 "Zend/zend_language_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -98,7 +98,7 @@
\
while (p<boundary) { \
if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \
- CG(zend_lineno)++; \
+ ++(*lineno); \
} \
p++; \
} \
@@ -107,7 +107,7 @@
#define HANDLE_NEWLINE(c) \
{ \
if (c == '\n' || c == '\r') { \
- CG(zend_lineno)++; \
+ ++(*lineno); \
} \
}
@@ -730,7 +730,7 @@
zendlval->value.str.len = yyleng;
#endif /* ZEND_MULTIBYTE */
-static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC)
+static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type, int *lineno TSRMLS_DC)
{
register char *s, *t;
char *end;
@@ -827,7 +827,7 @@
}
if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
- CG(zend_lineno)++;
+ ++(*lineno);
}
s++;
}
@@ -844,7 +844,7 @@
}
-int lex_scan(zval *zendlval TSRMLS_DC)
+int lex_scan(zval *zendlval, int *lineno TSRMLS_DC)
{
restart:
SCNG(yy_text) = YYCURSOR;
@@ -1470,7 +1470,7 @@
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext, yyleng, '`', lineno TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
}
#line 1477 "Zend/zend_language_scanner.c"
@@ -1701,7 +1701,7 @@
double_quotes_scan_done:
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext, yyleng, '"', lineno TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
}
#line 1708 "Zend/zend_language_scanner.c"
@@ -1971,7 +1971,7 @@
heredoc_scan_done:
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0, lineno TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
}
#line 1978 "Zend/zend_language_scanner.c"
@@ -3066,7 +3066,7 @@
}
/* fall through */
case '\n':
- CG(zend_lineno)++;
+ ++(*lineno);
break;
case '%':
if (!CG(asp_tags)) {
@@ -3150,7 +3150,7 @@
}
if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
- CG(zend_lineno)++;
+ ++(*lineno);
}
s++;
}
@@ -3182,7 +3182,7 @@
switch (*YYCURSOR++) {
case '"':
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"' TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"', lineno TSRMLS_CC);
return T_CONSTANT_ENCAPSED_STRING;
case '$':
if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
@@ -3875,7 +3875,7 @@
Z_STRVAL_P(zendlval) = CG(heredoc);
Z_STRLEN_P(zendlval) = CG(heredoc_len);
- CG(zend_lineno)++;
+ ++(*lineno);
CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
s = yytext+bprefix+3;
while ((*s == ' ') || (*s == '\t')) {
@@ -4440,7 +4440,7 @@
yyleng = YYCURSOR - SCNG(yy_text);
#line 1600 "Zend/zend_language_scanner.l"
{
- zendlval->value.lval = CG(zend_lineno);
+ zendlval->value.lval = *lineno;
zendlval->type = IS_LONG;
return T_LINE;
}
Modified: php/php-src/branches/LEMON/Zend/zend_language_scanner.l
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_language_scanner.l 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_language_scanner.l 2010-07-12 18:48:09 UTC (rev 301212)
@@ -96,7 +96,7 @@
\
while (p<boundary) { \
if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \
- CG(zend_lineno)++; \
+ ++(*lineno); \
} \
p++; \
} \
@@ -105,7 +105,7 @@
#define HANDLE_NEWLINE(c) \
{ \
if (c == '\n' || c == '\r') { \
- CG(zend_lineno)++; \
+ ++(*lineno); \
} \
}
@@ -728,7 +728,7 @@
zendlval->value.str.len = yyleng;
#endif /* ZEND_MULTIBYTE */
-static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC)
+static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type, int *lineno TSRMLS_DC)
{
register char *s, *t;
char *end;
@@ -825,7 +825,7 @@
}
if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
- CG(zend_lineno)++;
+ ++(*lineno);
}
s++;
}
@@ -842,7 +842,7 @@
}
-int lex_scan(zval *zendlval TSRMLS_DC)
+int lex_scan(zval *zendlval, int *lineno TSRMLS_DC)
{
restart:
SCNG(yy_text) = YYCURSOR;
@@ -1598,7 +1598,7 @@
}
<ST_IN_SCRIPTING>"__LINE__" {
- zendlval->value.lval = CG(zend_lineno);
+ zendlval->value.lval = *lineno;
zendlval->type = IS_LONG;
return T_LINE;
}
@@ -1856,7 +1856,7 @@
}
/* fall through */
case '\n':
- CG(zend_lineno)++;
+ ++(*lineno);
break;
case '%':
if (!CG(asp_tags)) {
@@ -1990,7 +1990,7 @@
}
if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
- CG(zend_lineno)++;
+ ++(*lineno);
}
s++;
}
@@ -2016,7 +2016,7 @@
switch (*YYCURSOR++) {
case '"':
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"' TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"', lineno TSRMLS_CC);
return T_CONSTANT_ENCAPSED_STRING;
case '$':
if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
@@ -2059,7 +2059,7 @@
Z_STRVAL_P(zendlval) = CG(heredoc);
Z_STRLEN_P(zendlval) = CG(heredoc_len);
- CG(zend_lineno)++;
+ ++(*lineno);
CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
s = yytext+bprefix+3;
while ((*s == ' ') || (*s == '\t')) {
@@ -2183,7 +2183,7 @@
double_quotes_scan_done:
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext, yyleng, '"', lineno TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
}
@@ -2225,7 +2225,7 @@
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext, yyleng, '`', lineno TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
}
@@ -2297,7 +2297,7 @@
heredoc_scan_done:
yyleng = YYCURSOR - SCNG(yy_text);
- zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);
+ zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0, lineno TSRMLS_CC);
return T_ENCAPSED_AND_WHITESPACE;
}
Modified: php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h
===================================================================
--- php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/Zend/zend_language_scanner_defs.h 2010-07-12 18:48:09 UTC (rev 301212)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sun Jul 11 18:23:43 2010 */
+/* Generated by re2c 0.13.5 on Mon Jul 12 14:03:13 2010 */
#line 3 "Zend/zend_language_scanner_defs.h"
enum YYCONDTYPE {
Modified: php/php-src/branches/LEMON/ext/tokenizer/tokenizer.c
===================================================================
--- php/php-src/branches/LEMON/ext/tokenizer/tokenizer.c 2010-07-12 17:56:05 UTC (rev 301211)
+++ php/php-src/branches/LEMON/ext/tokenizer/tokenizer.c 2010-07-12 18:48:09 UTC (rev 301212)
@@ -105,12 +105,12 @@
zval *keyword;
int token_type;
zend_bool destroy;
- int token_line = 1;
+ int token_line = 1, lineno = 0;
array_init(return_value);
ZVAL_NULL(&token);
- while ((token_type = lex_scan(&token TSRMLS_CC))) {
+ while ((token_type = lex_scan(&token, &lineno TSRMLS_CC))) {
destroy = 1;
switch (token_type) {
case T_CLOSE_TAG:
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php