Skip to content

Commit ad37f01

Browse files
committed
Generate tokenizer data and add test
1 parent cb02a18 commit ad37f01

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
Tokenization of namespaced names
3+
--FILE--
4+
<?php
5+
6+
$code = <<<'CODE'
7+
<?php
8+
Foo
9+
Foo\Bar
10+
\Foo\Bar
11+
namespace\Foo
12+
Foo \ Bar
13+
CODE;
14+
15+
foreach (PhpToken::getAll($code) as $token) {
16+
echo "{$token->getTokenName()}: \"$token->text\"\n";
17+
}
18+
19+
?>
20+
--EXPECT--
21+
T_OPEN_TAG: "<?php
22+
"
23+
T_STRING: "Foo"
24+
T_WHITESPACE: "
25+
"
26+
T_NAME_QUALIFIED: "Foo\Bar"
27+
T_WHITESPACE: "
28+
"
29+
T_NAME_FULLY_QUALIFIED: "\Foo\Bar"
30+
T_WHITESPACE: "
31+
"
32+
T_NAME_RELATIVE: "namespace\Foo"
33+
T_WHITESPACE: "
34+
"
35+
T_STRING: "Foo"
36+
T_WHITESPACE: " "
37+
T_NS_SEPARATOR: "\"
38+
T_WHITESPACE: " "
39+
T_STRING: "Bar"

ext/tokenizer/tokenizer_data.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
7777
REGISTER_LONG_CONSTANT("T_LNUMBER", T_LNUMBER, CONST_CS | CONST_PERSISTENT);
7878
REGISTER_LONG_CONSTANT("T_DNUMBER", T_DNUMBER, CONST_CS | CONST_PERSISTENT);
7979
REGISTER_LONG_CONSTANT("T_STRING", T_STRING, CONST_CS | CONST_PERSISTENT);
80+
REGISTER_LONG_CONSTANT("T_NAME_FULLY_QUALIFIED", T_NAME_FULLY_QUALIFIED, CONST_CS | CONST_PERSISTENT);
81+
REGISTER_LONG_CONSTANT("T_NAME_RELATIVE", T_NAME_RELATIVE, CONST_CS | CONST_PERSISTENT);
82+
REGISTER_LONG_CONSTANT("T_NAME_QUALIFIED", T_NAME_QUALIFIED, CONST_CS | CONST_PERSISTENT);
8083
REGISTER_LONG_CONSTANT("T_VARIABLE", T_VARIABLE, CONST_CS | CONST_PERSISTENT);
8184
REGISTER_LONG_CONSTANT("T_INLINE_HTML", T_INLINE_HTML, CONST_CS | CONST_PERSISTENT);
8285
REGISTER_LONG_CONSTANT("T_ENCAPSED_AND_WHITESPACE", T_ENCAPSED_AND_WHITESPACE, CONST_CS | CONST_PERSISTENT);
@@ -221,6 +224,9 @@ char *get_token_type_name(int token_type)
221224
case T_LNUMBER: return "T_LNUMBER";
222225
case T_DNUMBER: return "T_DNUMBER";
223226
case T_STRING: return "T_STRING";
227+
case T_NAME_FULLY_QUALIFIED: return "T_NAME_FULLY_QUALIFIED";
228+
case T_NAME_RELATIVE: return "T_NAME_RELATIVE";
229+
case T_NAME_QUALIFIED: return "T_NAME_QUALIFIED";
224230
case T_VARIABLE: return "T_VARIABLE";
225231
case T_INLINE_HTML: return "T_INLINE_HTML";
226232
case T_ENCAPSED_AND_WHITESPACE: return "T_ENCAPSED_AND_WHITESPACE";

0 commit comments

Comments
 (0)