diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-07-26 15:30:28 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-07-26 15:30:28 +0000 |
commit | 478acfd8b4ae8f209e0f515faa391d53256f364f (patch) | |
tree | 3fc56d5ac3bca480c2988cd842a8d55e9aa9197f /Zend/zend_highlight.c | |
parent | 8b142365579afb27bb199c75baefd53fd454fb76 (diff) | |
download | php-git-478acfd8b4ae8f209e0f515faa391d53256f364f.tar.gz |
. Added support for using static HEREDOCs to initialize static variables and class members or constants. (Matt)
. Improved syntax highlighting and consistency for variables in double-quoted strings and literal text in HEREDOCs and backticks. (Matt)
. Optimized interpolated strings to use one less opcode. (Matt)
Diffstat (limited to 'Zend/zend_highlight.c')
-rw-r--r-- | Zend/zend_highlight.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index a6bc552eab..809252fbc9 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -93,7 +93,6 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini int token_type; char *last_color = syntax_highlighter_ini->highlight_html; char *next_color; - int in_string=0; zend_printf("<code>"); zend_printf("<span style=\"color: %s\">\n", last_color); @@ -115,22 +114,18 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini case T_CLOSE_TAG: next_color = syntax_highlighter_ini->highlight_default; break; + case '"': + case T_ENCAPSED_AND_WHITESPACE: case T_CONSTANT_ENCAPSED_STRING: next_color = syntax_highlighter_ini->highlight_string; break; - case '"': - next_color = syntax_highlighter_ini->highlight_string; - in_string = !in_string; - break; case T_WHITESPACE: zend_html_puts(LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); /* no color needed */ token.type = 0; continue; break; default: - if (in_string) { - next_color = syntax_highlighter_ini->highlight_string; - } else if (token.type == 0) { + if (token.type == 0) { next_color = syntax_highlighter_ini->highlight_keyword; } else { next_color = syntax_highlighter_ini->highlight_default; @@ -149,7 +144,6 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini } switch (token_type) { case T_END_HEREDOC: - case T_END_NOWDOC: zend_html_puts(token.value.str.val, token.value.str.len TSRMLS_CC); break; default: @@ -159,8 +153,6 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini if (token.type == IS_STRING) { switch (token_type) { - case EOF: - goto done; case T_OPEN_TAG: case T_OPEN_TAG_WITH_ECHO: case T_CLOSE_TAG: @@ -172,7 +164,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini efree(token.value.str.val); break; } - } else if (token_type == T_END_HEREDOC || token_type == T_END_NOWDOC) { + } else if (token_type == T_END_HEREDOC) { efree(token.value.str.val); } token.type = 0; @@ -190,7 +182,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini } zend_html_puts(LANG_SCNG(yy_text), (LANG_SCNG(yy_limit) - LANG_SCNG(yy_text)) TSRMLS_CC); } -done: + if (last_color != syntax_highlighter_ini->highlight_html) { zend_printf("</span>\n"); } @@ -217,12 +209,8 @@ ZEND_API void zend_strip(TSRMLS_D) case T_DOC_COMMENT: token.type = 0; continue; - - case EOF: - return; case T_END_HEREDOC: - case T_END_NOWDOC: zend_write(LANG_SCNG(yy_text), LANG_SCNG(yy_leng)); efree(token.value.str.val); /* read the following character, either newline or ; */ |