diff options
author | Felipe Pena <felipe@php.net> | 2010-07-12 18:48:09 +0000 |
---|---|---|
committer | Felipe Pena <felipe@php.net> | 2010-07-12 18:48:09 +0000 |
commit | 7da34df4390bf2ba36b68e4fc9bc4f33aa02d697 (patch) | |
tree | c89b038a3fedcce8a23510db649b8444b559546f | |
parent | 233bdc7d2b14641487887b35c3ccc96a062a4fd2 (diff) | |
download | php-git-7da34df4390bf2ba36b68e4fc9bc4f33aa02d697.tar.gz |
- Fixed line number on error messages
-rw-r--r-- | Zend/zend_compile.c | 10 | ||||
-rw-r--r-- | Zend/zend_compile.h | 2 | ||||
-rw-r--r-- | Zend/zend_highlight.c | 10 | ||||
-rw-r--r-- | Zend/zend_indent.c | 4 | ||||
-rw-r--r-- | Zend/zend_language_scanner.c | 28 | ||||
-rw-r--r-- | Zend/zend_language_scanner.l | 26 | ||||
-rw-r--r-- | Zend/zend_language_scanner_defs.h | 2 | ||||
-rw-r--r-- | ext/tokenizer/tokenizer.c | 4 |
8 files changed, 45 insertions, 41 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index a9a1b6ae9e..5868aaf5b2 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -6109,13 +6109,15 @@ int zend_register_auto_global(const char *name, uint name_len, zend_auto_global_ 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 @@ int zendparse(TSRMLS_D) /* {{{ */ 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 @@ again: break; } zend_lang_parse(pParser, token, zendlval TSRMLS_CC); + CG(zend_lineno) = lineno; if (token == 0) { break; } else if (halting == 1 && token == T_SEMICOLON) { diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 2e25ba819b..c5b3106f49 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -380,7 +380,7 @@ void zend_init_compiler_data_structures(TSRMLS_D); 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); diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index 171789b83b..1a81cbee2e 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -90,7 +90,7 @@ ZEND_API void zend_html_puts(const char *s, uint len TSRMLS_DC) 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_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini 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_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini 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_API void zend_strip(TSRMLS_D) 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); diff --git a/Zend/zend_indent.c b/Zend/zend_indent.c index 8c44c50cd0..dec0f08fdb 100644 --- a/Zend/zend_indent.c +++ b/Zend/zend_indent.c @@ -52,7 +52,7 @@ ZEND_API void zend_indent() 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 @@ ZEND_API void zend_indent() /* 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)); diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 1598aa4203..f5647dbf9d 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -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 @@ do { \ \ while (p<boundary) { \ if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \ - CG(zend_lineno)++; \ + ++(*lineno); \ } \ p++; \ } \ @@ -107,7 +107,7 @@ do { \ #define HANDLE_NEWLINE(c) \ { \ if (c == '\n' || c == '\r') { \ - CG(zend_lineno)++; \ + ++(*lineno); \ } \ } @@ -730,7 +730,7 @@ ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC) 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 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; + ++(*lineno); } s++; } @@ -844,7 +844,7 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } -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 @@ yy56: 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 @@ yy78: 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 @@ yy104: 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 @@ yy205: } /* fall through */ case '\n': - CG(zend_lineno)++; + ++(*lineno); break; case '%': if (!CG(asp_tags)) { @@ -3150,7 +3150,7 @@ yy207: } if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; + ++(*lineno); } s++; } @@ -3182,7 +3182,7 @@ yy209: 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 @@ yy298: 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 @@ yy367: 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; } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index f47c3c2ffe..c22f16ec62 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -96,7 +96,7 @@ do { \ \ while (p<boundary) { \ if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \ - CG(zend_lineno)++; \ + ++(*lineno); \ } \ p++; \ } \ @@ -105,7 +105,7 @@ do { \ #define HANDLE_NEWLINE(c) \ { \ if (c == '\n' || c == '\r') { \ - CG(zend_lineno)++; \ + ++(*lineno); \ } \ } @@ -728,7 +728,7 @@ ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC) 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 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; + ++(*lineno); } s++; } @@ -842,7 +842,7 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } -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 @@ NEWLINE ("\r"|"\n"|"\r\n") } <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 @@ inline_html: } /* fall through */ case '\n': - CG(zend_lineno)++; + ++(*lineno); break; case '%': if (!CG(asp_tags)) { @@ -1990,7 +1990,7 @@ inline_html: } if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; + ++(*lineno); } s++; } @@ -2016,7 +2016,7 @@ inline_html: 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 @@ inline_html: 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 @@ inline_html: 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 @@ 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; } @@ -2297,7 +2297,7 @@ double_quotes_scan_done: 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; } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 689d24d9e5..a1e16c4410 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -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 { diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index af67bdc08e..3ae8c0ded9 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -105,12 +105,12 @@ static void tokenize(zval *return_value TSRMLS_DC) 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: |