summaryrefslogtreecommitdiff
path: root/Zend/zend_highlight.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-07-26 15:30:28 +0000
committerDmitry Stogov <dmitry@php.net>2008-07-26 15:30:28 +0000
commit478acfd8b4ae8f209e0f515faa391d53256f364f (patch)
tree3fc56d5ac3bca480c2988cd842a8d55e9aa9197f /Zend/zend_highlight.c
parent8b142365579afb27bb199c75baefd53fd454fb76 (diff)
downloadphp-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.c22
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 ; */