Patch language_scanner_and_tokenizer_test for Scripting Engine problem Bug #51674
Patch version 2010-04-27 12:14 UTC
Return to Bug #51674 |
Download this patch
Patch Revisions:
Developer: cogo@starzinger.net
Index: ext/tokenizer/tests/token_get_all_variation9.phpt
===================================================================
--- ext/tokenizer/tests/token_get_all_variation9.phpt (revision 298650)
+++ ext/tokenizer/tests/token_get_all_variation9.phpt (working copy)
@@ -10,15 +10,26 @@
/*
* Passing 'source' argument with different style of comments
*/
-// '//', '/* */', '#' - T_COMMENT(365)
-// '/** */' - T_DOC_COMMENT(366)
+// '//', '/* */', '#' - T_COMMENT(366)
+// '/** */' - T_DOC_COMMENT(367)
+// '/**#@+ */' - T_DOC_COMMENT(367) - Start of a phpdoc template
+// '/**#@-*/' - T_DOC_COMMENT(367) - End of a phpdoc template
echo "*** Testing token_get_all() : 'source' string with different comments ***\n";
-// types of comments: '//', '/* */', '#' & /** */
+// types of comments: '//', '/* */', '#', /** */, /**#@+ */ & /**#@-*/
$source = '<?php
+/**#@+
+ * Integer value
+ *
+ * @var int
+ */
+$a = 0;
+$b = 0;
+/**#@-*/
+
/** Performing addition operation on given values :
* a, b
*/
@@ -28,8 +39,8 @@
$b = 20;
$c = true; // bool value
-/*
- * Performing operation on $a,$b
+/*
+ * Performing operation on $a,$b
* display result
*/
$c = $a + $b;
@@ -43,7 +54,7 @@
?>
--EXPECTF--
*** Testing token_get_all() : 'source' string with different comments ***
-array(51) {
+array(69) {
[0]=>
array(3) {
[0]=>
@@ -68,13 +79,156 @@
[0]=>
int(367)
[1]=>
+ string(42) "/**#@+
+ * Integer value
+ *
+ * @var int
+ */"
+ [2]=>
+ int(2)
+ }
+ [3]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) "
+"
+ [2]=>
+ int(6)
+ }
+ [4]=>
+ array(3) {
+ [0]=>
+ int(309)
+ [1]=>
+ string(2) "$a"
+ [2]=>
+ int(7)
+ }
+ [5]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) " "
+ [2]=>
+ int(7)
+ }
+ [6]=>
+ string(1) "="
+ [7]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) " "
+ [2]=>
+ int(7)
+ }
+ [8]=>
+ array(3) {
+ [0]=>
+ int(305)
+ [1]=>
+ string(1) "0"
+ [2]=>
+ int(7)
+ }
+ [9]=>
+ string(1) ";"
+ [10]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) "
+"
+ [2]=>
+ int(7)
+ }
+ [11]=>
+ array(3) {
+ [0]=>
+ int(309)
+ [1]=>
+ string(2) "$b"
+ [2]=>
+ int(8)
+ }
+ [12]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) " "
+ [2]=>
+ int(8)
+ }
+ [13]=>
+ string(1) "="
+ [14]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) " "
+ [2]=>
+ int(8)
+ }
+ [15]=>
+ array(3) {
+ [0]=>
+ int(305)
+ [1]=>
+ string(1) "0"
+ [2]=>
+ int(8)
+ }
+ [16]=>
+ string(1) ";"
+ [17]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(1) "
+"
+ [2]=>
+ int(8)
+ }
+ [18]=>
+ array(3) {
+ [0]=>
+ int(367)
+ [1]=>
+ string(8) "/**#@-*/"
+ [2]=>
+ int(9)
+ }
+ [19]=>
+ array(3) {
+ [0]=>
+ int(371)
+ [1]=>
+ string(2) "
+
+"
+ [2]=>
+ int(9)
+ }
+ [20]=>
+ array(3) {
+ [0]=>
+ int(367)
+ [1]=>
string(65) "/** Performing addition operation on given values :
* a, b
*/"
[2]=>
- int(2)
+ int(11)
}
- [3]=>
+ [21]=>
array(3) {
[0]=>
int(371)
@@ -83,9 +237,9 @@
"
[2]=>
- int(4)
+ int(13)
}
- [4]=>
+ [22]=>
array(3) {
[0]=>
int(366)
@@ -93,49 +247,49 @@
string(13) "// int value
"
[2]=>
- int(6)
+ int(15)
}
- [5]=>
+ [23]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$a"
[2]=>
- int(7)
+ int(16)
}
- [6]=>
+ [24]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(7)
+ int(16)
}
- [7]=>
+ [25]=>
string(1) "="
- [8]=>
+ [26]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(7)
+ int(16)
}
- [9]=>
+ [27]=>
array(3) {
[0]=>
int(305)
[1]=>
string(2) "10"
[2]=>
- int(7)
+ int(16)
}
- [10]=>
+ [28]=>
string(1) ";"
- [11]=>
+ [29]=>
array(3) {
[0]=>
int(371)
@@ -143,49 +297,49 @@
string(1) "
"
[2]=>
- int(7)
+ int(16)
}
- [12]=>
+ [30]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$b"
[2]=>
- int(8)
+ int(17)
}
- [13]=>
+ [31]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(8)
+ int(17)
}
- [14]=>
+ [32]=>
string(1) "="
- [15]=>
+ [33]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(8)
+ int(17)
}
- [16]=>
+ [34]=>
array(3) {
[0]=>
int(305)
[1]=>
string(2) "20"
[2]=>
- int(8)
+ int(17)
}
- [17]=>
+ [35]=>
string(1) ";"
- [18]=>
+ [36]=>
array(3) {
[0]=>
int(371)
@@ -193,58 +347,58 @@
string(1) "
"
[2]=>
- int(8)
+ int(17)
}
- [19]=>
+ [37]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$c"
[2]=>
- int(9)
+ int(18)
}
- [20]=>
+ [38]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(9)
+ int(18)
}
- [21]=>
+ [39]=>
string(1) "="
- [22]=>
+ [40]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(9)
+ int(18)
}
- [23]=>
+ [41]=>
array(3) {
[0]=>
int(307)
[1]=>
string(4) "true"
[2]=>
- int(9)
+ int(18)
}
- [24]=>
+ [42]=>
string(1) ";"
- [25]=>
+ [43]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(9)
+ int(18)
}
- [26]=>
+ [44]=>
array(3) {
[0]=>
int(366)
@@ -252,9 +406,9 @@
string(14) "// bool value
"
[2]=>
- int(9)
+ int(18)
}
- [27]=>
+ [45]=>
array(3) {
[0]=>
int(371)
@@ -262,21 +416,21 @@
string(1) "
"
[2]=>
- int(10)
+ int(19)
}
- [28]=>
+ [46]=>
array(3) {
[0]=>
int(366)
[1]=>
- string(59) "/*
- * Performing operation on $a,$b
+ string(57) "/*
+ * Performing operation on $a,$b
* display result
*/"
[2]=>
- int(11)
+ int(20)
}
- [29]=>
+ [47]=>
array(3) {
[0]=>
int(371)
@@ -284,78 +438,78 @@
string(1) "
"
[2]=>
- int(14)
+ int(23)
}
- [30]=>
+ [48]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$c"
[2]=>
- int(15)
+ int(24)
}
- [31]=>
+ [49]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(15)
+ int(24)
}
- [32]=>
+ [50]=>
string(1) "="
- [33]=>
+ [51]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(15)
+ int(24)
}
- [34]=>
+ [52]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$a"
[2]=>
- int(15)
+ int(24)
}
- [35]=>
+ [53]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(15)
+ int(24)
}
- [36]=>
+ [54]=>
string(1) "+"
- [37]=>
+ [55]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(15)
+ int(24)
}
- [38]=>
+ [56]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$b"
[2]=>
- int(15)
+ int(24)
}
- [39]=>
+ [57]=>
string(1) ";"
- [40]=>
+ [58]=>
array(3) {
[0]=>
int(371)
@@ -363,42 +517,42 @@
string(1) "
"
[2]=>
- int(15)
+ int(24)
}
- [41]=>
+ [59]=>
array(3) {
[0]=>
int(307)
[1]=>
string(8) "var_dump"
[2]=>
- int(16)
+ int(25)
}
- [42]=>
+ [60]=>
string(1) "("
- [43]=>
+ [61]=>
array(3) {
[0]=>
int(309)
[1]=>
string(2) "$c"
[2]=>
- int(16)
+ int(25)
}
- [44]=>
+ [62]=>
string(1) ")"
- [45]=>
+ [63]=>
string(1) ";"
- [46]=>
+ [64]=>
array(3) {
[0]=>
int(371)
[1]=>
string(1) " "
[2]=>
- int(16)
+ int(25)
}
- [47]=>
+ [65]=>
array(3) {
[0]=>
int(366)
@@ -406,9 +560,9 @@
string(20) "# expected: int(30)
"
[2]=>
- int(16)
+ int(25)
}
- [48]=>
+ [66]=>
array(3) {
[0]=>
int(371)
@@ -416,9 +570,9 @@
string(1) "
"
[2]=>
- int(17)
+ int(26)
}
- [49]=>
+ [67]=>
array(3) {
[0]=>
int(366)
@@ -426,16 +580,16 @@
string(17) "# end of program
"
[2]=>
- int(18)
+ int(27)
}
- [50]=>
+ [68]=>
array(3) {
[0]=>
int(370)
[1]=>
string(2) "?>"
[2]=>
- int(19)
+ int(28)
}
}
Done
Index: Zend/zend_language_scanner.l
===================================================================
--- Zend/zend_language_scanner.l (revision 298650)
+++ Zend/zend_language_scanner.l (working copy)
@@ -1710,7 +1710,11 @@
return T_COMMENT;
}
-<ST_IN_SCRIPTING>"/*"|"/**"{WHITESPACE} {
+<ST_IN_SCRIPTING>"/**#@-*/" {
+ return T_DOC_COMMENT;
+}
+
+<ST_IN_SCRIPTING>"/*"|"/**"{WHITESPACE}|"/**#@+"{WHITESPACE} {
int doc_com;
if (yyleng > 2) {
|