Skip to content

Commit 265dd19

Browse files
committed
Generate tokenizer_data.c from zend_language_parser.y
The order of the tokens in zend_language_parser.h depends on the used bison version. To avoid spurious changes to tokenizer_data.c generate tit from the zend_language_parser.y file instead.
1 parent a50a1b6 commit 265dd19

File tree

3 files changed

+101
-103
lines changed

3 files changed

+101
-103
lines changed

ext/tokenizer/Makefile.frag

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
$(top_srcdir)/Zend/zend_language_parser.c:
2-
$(top_srcdir)/Zend/zend_language_scanner.c:
3-
$(top_srcdir)/ext/tokenizer/tokenizer_data.c: $(top_srcdir)/Zend/zend_language_parser.y $(top_srcdir)/Zend/zend_language_parser.h
1+
$(top_srcdir)/ext/tokenizer/tokenizer_data.c: $(top_srcdir)/Zend/zend_language_parser.y
42
@if test ! -z "$(PHP)"; then \
53
$(PHP) $(srcdir)/tokenizer_data_gen.php; \
64
fi;

ext/tokenizer/tokenizer_data.c

Lines changed: 98 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -25,55 +25,6 @@
2525

2626

2727
void tokenizer_register_constants(INIT_FUNC_ARGS) {
28-
REGISTER_LONG_CONSTANT("T_THROW", T_THROW, CONST_CS | CONST_PERSISTENT);
29-
REGISTER_LONG_CONSTANT("T_INCLUDE", T_INCLUDE, CONST_CS | CONST_PERSISTENT);
30-
REGISTER_LONG_CONSTANT("T_INCLUDE_ONCE", T_INCLUDE_ONCE, CONST_CS | CONST_PERSISTENT);
31-
REGISTER_LONG_CONSTANT("T_REQUIRE", T_REQUIRE, CONST_CS | CONST_PERSISTENT);
32-
REGISTER_LONG_CONSTANT("T_REQUIRE_ONCE", T_REQUIRE_ONCE, CONST_CS | CONST_PERSISTENT);
33-
REGISTER_LONG_CONSTANT("T_LOGICAL_OR", T_LOGICAL_OR, CONST_CS | CONST_PERSISTENT);
34-
REGISTER_LONG_CONSTANT("T_LOGICAL_XOR", T_LOGICAL_XOR, CONST_CS | CONST_PERSISTENT);
35-
REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT);
36-
REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT);
37-
REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT);
38-
REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_CS | CONST_PERSISTENT);
39-
REGISTER_LONG_CONSTANT("T_YIELD_FROM", T_YIELD_FROM, CONST_CS | CONST_PERSISTENT);
40-
REGISTER_LONG_CONSTANT("T_PLUS_EQUAL", T_PLUS_EQUAL, CONST_CS | CONST_PERSISTENT);
41-
REGISTER_LONG_CONSTANT("T_MINUS_EQUAL", T_MINUS_EQUAL, CONST_CS | CONST_PERSISTENT);
42-
REGISTER_LONG_CONSTANT("T_MUL_EQUAL", T_MUL_EQUAL, CONST_CS | CONST_PERSISTENT);
43-
REGISTER_LONG_CONSTANT("T_DIV_EQUAL", T_DIV_EQUAL, CONST_CS | CONST_PERSISTENT);
44-
REGISTER_LONG_CONSTANT("T_CONCAT_EQUAL", T_CONCAT_EQUAL, CONST_CS | CONST_PERSISTENT);
45-
REGISTER_LONG_CONSTANT("T_MOD_EQUAL", T_MOD_EQUAL, CONST_CS | CONST_PERSISTENT);
46-
REGISTER_LONG_CONSTANT("T_AND_EQUAL", T_AND_EQUAL, CONST_CS | CONST_PERSISTENT);
47-
REGISTER_LONG_CONSTANT("T_OR_EQUAL", T_OR_EQUAL, CONST_CS | CONST_PERSISTENT);
48-
REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT);
49-
REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT);
50-
REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT);
51-
REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT);
52-
REGISTER_LONG_CONSTANT("T_COALESCE_EQUAL", T_COALESCE_EQUAL, CONST_CS | CONST_PERSISTENT);
53-
REGISTER_LONG_CONSTANT("T_COALESCE", T_COALESCE, CONST_CS | CONST_PERSISTENT);
54-
REGISTER_LONG_CONSTANT("T_BOOLEAN_OR", T_BOOLEAN_OR, CONST_CS | CONST_PERSISTENT);
55-
REGISTER_LONG_CONSTANT("T_BOOLEAN_AND", T_BOOLEAN_AND, CONST_CS | CONST_PERSISTENT);
56-
REGISTER_LONG_CONSTANT("T_IS_EQUAL", T_IS_EQUAL, CONST_CS | CONST_PERSISTENT);
57-
REGISTER_LONG_CONSTANT("T_IS_NOT_EQUAL", T_IS_NOT_EQUAL, CONST_CS | CONST_PERSISTENT);
58-
REGISTER_LONG_CONSTANT("T_IS_IDENTICAL", T_IS_IDENTICAL, CONST_CS | CONST_PERSISTENT);
59-
REGISTER_LONG_CONSTANT("T_IS_NOT_IDENTICAL", T_IS_NOT_IDENTICAL, CONST_CS | CONST_PERSISTENT);
60-
REGISTER_LONG_CONSTANT("T_SPACESHIP", T_SPACESHIP, CONST_CS | CONST_PERSISTENT);
61-
REGISTER_LONG_CONSTANT("T_IS_SMALLER_OR_EQUAL", T_IS_SMALLER_OR_EQUAL, CONST_CS | CONST_PERSISTENT);
62-
REGISTER_LONG_CONSTANT("T_IS_GREATER_OR_EQUAL", T_IS_GREATER_OR_EQUAL, CONST_CS | CONST_PERSISTENT);
63-
REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_CS | CONST_PERSISTENT);
64-
REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_CS | CONST_PERSISTENT);
65-
REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_CS | CONST_PERSISTENT);
66-
REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT);
67-
REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_CS | CONST_PERSISTENT);
68-
REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_CS | CONST_PERSISTENT);
69-
REGISTER_LONG_CONSTANT("T_ARRAY_CAST", T_ARRAY_CAST, CONST_CS | CONST_PERSISTENT);
70-
REGISTER_LONG_CONSTANT("T_OBJECT_CAST", T_OBJECT_CAST, CONST_CS | CONST_PERSISTENT);
71-
REGISTER_LONG_CONSTANT("T_BOOL_CAST", T_BOOL_CAST, CONST_CS | CONST_PERSISTENT);
72-
REGISTER_LONG_CONSTANT("T_UNSET_CAST", T_UNSET_CAST, CONST_CS | CONST_PERSISTENT);
73-
REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT);
74-
REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT);
75-
REGISTER_LONG_CONSTANT("T_ELSEIF", T_ELSEIF, CONST_CS | CONST_PERSISTENT);
76-
REGISTER_LONG_CONSTANT("T_ELSE", T_ELSE, CONST_CS | CONST_PERSISTENT);
7728
REGISTER_LONG_CONSTANT("T_LNUMBER", T_LNUMBER, CONST_CS | CONST_PERSISTENT);
7829
REGISTER_LONG_CONSTANT("T_DNUMBER", T_DNUMBER, CONST_CS | CONST_PERSISTENT);
7930
REGISTER_LONG_CONSTANT("T_STRING", T_STRING, CONST_CS | CONST_PERSISTENT);
@@ -86,10 +37,24 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
8637
REGISTER_LONG_CONSTANT("T_CONSTANT_ENCAPSED_STRING", T_CONSTANT_ENCAPSED_STRING, CONST_CS | CONST_PERSISTENT);
8738
REGISTER_LONG_CONSTANT("T_STRING_VARNAME", T_STRING_VARNAME, CONST_CS | CONST_PERSISTENT);
8839
REGISTER_LONG_CONSTANT("T_NUM_STRING", T_NUM_STRING, CONST_CS | CONST_PERSISTENT);
40+
REGISTER_LONG_CONSTANT("T_INCLUDE", T_INCLUDE, CONST_CS | CONST_PERSISTENT);
41+
REGISTER_LONG_CONSTANT("T_INCLUDE_ONCE", T_INCLUDE_ONCE, CONST_CS | CONST_PERSISTENT);
8942
REGISTER_LONG_CONSTANT("T_EVAL", T_EVAL, CONST_CS | CONST_PERSISTENT);
43+
REGISTER_LONG_CONSTANT("T_REQUIRE", T_REQUIRE, CONST_CS | CONST_PERSISTENT);
44+
REGISTER_LONG_CONSTANT("T_REQUIRE_ONCE", T_REQUIRE_ONCE, CONST_CS | CONST_PERSISTENT);
45+
REGISTER_LONG_CONSTANT("T_LOGICAL_OR", T_LOGICAL_OR, CONST_CS | CONST_PERSISTENT);
46+
REGISTER_LONG_CONSTANT("T_LOGICAL_XOR", T_LOGICAL_XOR, CONST_CS | CONST_PERSISTENT);
47+
REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT);
48+
REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT);
49+
REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT);
50+
REGISTER_LONG_CONSTANT("T_YIELD_FROM", T_YIELD_FROM, CONST_CS | CONST_PERSISTENT);
51+
REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_CS | CONST_PERSISTENT);
9052
REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_CS | CONST_PERSISTENT);
53+
REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT);
9154
REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT);
9255
REGISTER_LONG_CONSTANT("T_IF", T_IF, CONST_CS | CONST_PERSISTENT);
56+
REGISTER_LONG_CONSTANT("T_ELSEIF", T_ELSEIF, CONST_CS | CONST_PERSISTENT);
57+
REGISTER_LONG_CONSTANT("T_ELSE", T_ELSE, CONST_CS | CONST_PERSISTENT);
9358
REGISTER_LONG_CONSTANT("T_ENDIF", T_ENDIF, CONST_CS | CONST_PERSISTENT);
9459
REGISTER_LONG_CONSTANT("T_ECHO", T_ECHO, CONST_CS | CONST_PERSISTENT);
9560
REGISTER_LONG_CONSTANT("T_DO", T_DO, CONST_CS | CONST_PERSISTENT);
@@ -117,6 +82,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
11782
REGISTER_LONG_CONSTANT("T_TRY", T_TRY, CONST_CS | CONST_PERSISTENT);
11883
REGISTER_LONG_CONSTANT("T_CATCH", T_CATCH, CONST_CS | CONST_PERSISTENT);
11984
REGISTER_LONG_CONSTANT("T_FINALLY", T_FINALLY, CONST_CS | CONST_PERSISTENT);
85+
REGISTER_LONG_CONSTANT("T_THROW", T_THROW, CONST_CS | CONST_PERSISTENT);
12086
REGISTER_LONG_CONSTANT("T_USE", T_USE, CONST_CS | CONST_PERSISTENT);
12187
REGISTER_LONG_CONSTANT("T_INSTEADOF", T_INSTEADOF, CONST_CS | CONST_PERSISTENT);
12288
REGISTER_LONG_CONSTANT("T_GLOBAL", T_GLOBAL, CONST_CS | CONST_PERSISTENT);
@@ -150,10 +116,41 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
150116
REGISTER_LONG_CONSTANT("T_FUNC_C", T_FUNC_C, CONST_CS | CONST_PERSISTENT);
151117
REGISTER_LONG_CONSTANT("T_NS_C", T_NS_C, CONST_CS | CONST_PERSISTENT);
152118
REGISTER_LONG_CONSTANT("T_ATTRIBUTE", T_ATTRIBUTE, CONST_CS | CONST_PERSISTENT);
119+
REGISTER_LONG_CONSTANT("T_PLUS_EQUAL", T_PLUS_EQUAL, CONST_CS | CONST_PERSISTENT);
120+
REGISTER_LONG_CONSTANT("T_MINUS_EQUAL", T_MINUS_EQUAL, CONST_CS | CONST_PERSISTENT);
121+
REGISTER_LONG_CONSTANT("T_MUL_EQUAL", T_MUL_EQUAL, CONST_CS | CONST_PERSISTENT);
122+
REGISTER_LONG_CONSTANT("T_DIV_EQUAL", T_DIV_EQUAL, CONST_CS | CONST_PERSISTENT);
123+
REGISTER_LONG_CONSTANT("T_CONCAT_EQUAL", T_CONCAT_EQUAL, CONST_CS | CONST_PERSISTENT);
124+
REGISTER_LONG_CONSTANT("T_MOD_EQUAL", T_MOD_EQUAL, CONST_CS | CONST_PERSISTENT);
125+
REGISTER_LONG_CONSTANT("T_AND_EQUAL", T_AND_EQUAL, CONST_CS | CONST_PERSISTENT);
126+
REGISTER_LONG_CONSTANT("T_OR_EQUAL", T_OR_EQUAL, CONST_CS | CONST_PERSISTENT);
127+
REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT);
128+
REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT);
129+
REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT);
130+
REGISTER_LONG_CONSTANT("T_COALESCE_EQUAL", T_COALESCE_EQUAL, CONST_CS | CONST_PERSISTENT);
131+
REGISTER_LONG_CONSTANT("T_BOOLEAN_OR", T_BOOLEAN_OR, CONST_CS | CONST_PERSISTENT);
132+
REGISTER_LONG_CONSTANT("T_BOOLEAN_AND", T_BOOLEAN_AND, CONST_CS | CONST_PERSISTENT);
133+
REGISTER_LONG_CONSTANT("T_IS_EQUAL", T_IS_EQUAL, CONST_CS | CONST_PERSISTENT);
134+
REGISTER_LONG_CONSTANT("T_IS_NOT_EQUAL", T_IS_NOT_EQUAL, CONST_CS | CONST_PERSISTENT);
135+
REGISTER_LONG_CONSTANT("T_IS_IDENTICAL", T_IS_IDENTICAL, CONST_CS | CONST_PERSISTENT);
136+
REGISTER_LONG_CONSTANT("T_IS_NOT_IDENTICAL", T_IS_NOT_IDENTICAL, CONST_CS | CONST_PERSISTENT);
137+
REGISTER_LONG_CONSTANT("T_IS_SMALLER_OR_EQUAL", T_IS_SMALLER_OR_EQUAL, CONST_CS | CONST_PERSISTENT);
138+
REGISTER_LONG_CONSTANT("T_IS_GREATER_OR_EQUAL", T_IS_GREATER_OR_EQUAL, CONST_CS | CONST_PERSISTENT);
139+
REGISTER_LONG_CONSTANT("T_SPACESHIP", T_SPACESHIP, CONST_CS | CONST_PERSISTENT);
140+
REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_CS | CONST_PERSISTENT);
141+
REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_CS | CONST_PERSISTENT);
153142
REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT);
154143
REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT);
144+
REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT);
145+
REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_CS | CONST_PERSISTENT);
146+
REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_CS | CONST_PERSISTENT);
147+
REGISTER_LONG_CONSTANT("T_ARRAY_CAST", T_ARRAY_CAST, CONST_CS | CONST_PERSISTENT);
148+
REGISTER_LONG_CONSTANT("T_OBJECT_CAST", T_OBJECT_CAST, CONST_CS | CONST_PERSISTENT);
149+
REGISTER_LONG_CONSTANT("T_BOOL_CAST", T_BOOL_CAST, CONST_CS | CONST_PERSISTENT);
150+
REGISTER_LONG_CONSTANT("T_UNSET_CAST", T_UNSET_CAST, CONST_CS | CONST_PERSISTENT);
155151
REGISTER_LONG_CONSTANT("T_OBJECT_OPERATOR", T_OBJECT_OPERATOR, CONST_CS | CONST_PERSISTENT);
156152
REGISTER_LONG_CONSTANT("T_NULLSAFE_OBJECT_OPERATOR", T_NULLSAFE_OBJECT_OPERATOR, CONST_CS | CONST_PERSISTENT);
153+
REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_CS | CONST_PERSISTENT);
157154
REGISTER_LONG_CONSTANT("T_COMMENT", T_COMMENT, CONST_CS | CONST_PERSISTENT);
158155
REGISTER_LONG_CONSTANT("T_DOC_COMMENT", T_DOC_COMMENT, CONST_CS | CONST_PERSISTENT);
159156
REGISTER_LONG_CONSTANT("T_OPEN_TAG", T_OPEN_TAG, CONST_CS | CONST_PERSISTENT);
@@ -167,6 +164,9 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
167164
REGISTER_LONG_CONSTANT("T_PAAMAYIM_NEKUDOTAYIM", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);
168165
REGISTER_LONG_CONSTANT("T_NS_SEPARATOR", T_NS_SEPARATOR, CONST_CS | CONST_PERSISTENT);
169166
REGISTER_LONG_CONSTANT("T_ELLIPSIS", T_ELLIPSIS, CONST_CS | CONST_PERSISTENT);
167+
REGISTER_LONG_CONSTANT("T_COALESCE", T_COALESCE, CONST_CS | CONST_PERSISTENT);
168+
REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT);
169+
REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT);
170170
REGISTER_LONG_CONSTANT("T_BAD_CHARACTER", T_BAD_CHARACTER, CONST_CS | CONST_PERSISTENT);
171171
REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);
172172
}
@@ -175,55 +175,6 @@ char *get_token_type_name(int token_type)
175175
{
176176
switch (token_type) {
177177

178-
case T_THROW: return "T_THROW";
179-
case T_INCLUDE: return "T_INCLUDE";
180-
case T_INCLUDE_ONCE: return "T_INCLUDE_ONCE";
181-
case T_REQUIRE: return "T_REQUIRE";
182-
case T_REQUIRE_ONCE: return "T_REQUIRE_ONCE";
183-
case T_LOGICAL_OR: return "T_LOGICAL_OR";
184-
case T_LOGICAL_XOR: return "T_LOGICAL_XOR";
185-
case T_LOGICAL_AND: return "T_LOGICAL_AND";
186-
case T_PRINT: return "T_PRINT";
187-
case T_YIELD: return "T_YIELD";
188-
case T_DOUBLE_ARROW: return "T_DOUBLE_ARROW";
189-
case T_YIELD_FROM: return "T_YIELD_FROM";
190-
case T_PLUS_EQUAL: return "T_PLUS_EQUAL";
191-
case T_MINUS_EQUAL: return "T_MINUS_EQUAL";
192-
case T_MUL_EQUAL: return "T_MUL_EQUAL";
193-
case T_DIV_EQUAL: return "T_DIV_EQUAL";
194-
case T_CONCAT_EQUAL: return "T_CONCAT_EQUAL";
195-
case T_MOD_EQUAL: return "T_MOD_EQUAL";
196-
case T_AND_EQUAL: return "T_AND_EQUAL";
197-
case T_OR_EQUAL: return "T_OR_EQUAL";
198-
case T_XOR_EQUAL: return "T_XOR_EQUAL";
199-
case T_SL_EQUAL: return "T_SL_EQUAL";
200-
case T_SR_EQUAL: return "T_SR_EQUAL";
201-
case T_POW_EQUAL: return "T_POW_EQUAL";
202-
case T_COALESCE_EQUAL: return "T_COALESCE_EQUAL";
203-
case T_COALESCE: return "T_COALESCE";
204-
case T_BOOLEAN_OR: return "T_BOOLEAN_OR";
205-
case T_BOOLEAN_AND: return "T_BOOLEAN_AND";
206-
case T_IS_EQUAL: return "T_IS_EQUAL";
207-
case T_IS_NOT_EQUAL: return "T_IS_NOT_EQUAL";
208-
case T_IS_IDENTICAL: return "T_IS_IDENTICAL";
209-
case T_IS_NOT_IDENTICAL: return "T_IS_NOT_IDENTICAL";
210-
case T_SPACESHIP: return "T_SPACESHIP";
211-
case T_IS_SMALLER_OR_EQUAL: return "T_IS_SMALLER_OR_EQUAL";
212-
case T_IS_GREATER_OR_EQUAL: return "T_IS_GREATER_OR_EQUAL";
213-
case T_SL: return "T_SL";
214-
case T_SR: return "T_SR";
215-
case T_INSTANCEOF: return "T_INSTANCEOF";
216-
case T_INT_CAST: return "T_INT_CAST";
217-
case T_DOUBLE_CAST: return "T_DOUBLE_CAST";
218-
case T_STRING_CAST: return "T_STRING_CAST";
219-
case T_ARRAY_CAST: return "T_ARRAY_CAST";
220-
case T_OBJECT_CAST: return "T_OBJECT_CAST";
221-
case T_BOOL_CAST: return "T_BOOL_CAST";
222-
case T_UNSET_CAST: return "T_UNSET_CAST";
223-
case T_POW: return "T_POW";
224-
case T_CLONE: return "T_CLONE";
225-
case T_ELSEIF: return "T_ELSEIF";
226-
case T_ELSE: return "T_ELSE";
227178
case T_LNUMBER: return "T_LNUMBER";
228179
case T_DNUMBER: return "T_DNUMBER";
229180
case T_STRING: return "T_STRING";
@@ -236,10 +187,24 @@ char *get_token_type_name(int token_type)
236187
case T_CONSTANT_ENCAPSED_STRING: return "T_CONSTANT_ENCAPSED_STRING";
237188
case T_STRING_VARNAME: return "T_STRING_VARNAME";
238189
case T_NUM_STRING: return "T_NUM_STRING";
190+
case T_INCLUDE: return "T_INCLUDE";
191+
case T_INCLUDE_ONCE: return "T_INCLUDE_ONCE";
239192
case T_EVAL: return "T_EVAL";
193+
case T_REQUIRE: return "T_REQUIRE";
194+
case T_REQUIRE_ONCE: return "T_REQUIRE_ONCE";
195+
case T_LOGICAL_OR: return "T_LOGICAL_OR";
196+
case T_LOGICAL_XOR: return "T_LOGICAL_XOR";
197+
case T_LOGICAL_AND: return "T_LOGICAL_AND";
198+
case T_PRINT: return "T_PRINT";
199+
case T_YIELD: return "T_YIELD";
200+
case T_YIELD_FROM: return "T_YIELD_FROM";
201+
case T_INSTANCEOF: return "T_INSTANCEOF";
240202
case T_NEW: return "T_NEW";
203+
case T_CLONE: return "T_CLONE";
241204
case T_EXIT: return "T_EXIT";
242205
case T_IF: return "T_IF";
206+
case T_ELSEIF: return "T_ELSEIF";
207+
case T_ELSE: return "T_ELSE";
243208
case T_ENDIF: return "T_ENDIF";
244209
case T_ECHO: return "T_ECHO";
245210
case T_DO: return "T_DO";
@@ -267,6 +232,7 @@ char *get_token_type_name(int token_type)
267232
case T_TRY: return "T_TRY";
268233
case T_CATCH: return "T_CATCH";
269234
case T_FINALLY: return "T_FINALLY";
235+
case T_THROW: return "T_THROW";
270236
case T_USE: return "T_USE";
271237
case T_INSTEADOF: return "T_INSTEADOF";
272238
case T_GLOBAL: return "T_GLOBAL";
@@ -300,10 +266,41 @@ char *get_token_type_name(int token_type)
300266
case T_FUNC_C: return "T_FUNC_C";
301267
case T_NS_C: return "T_NS_C";
302268
case T_ATTRIBUTE: return "T_ATTRIBUTE";
269+
case T_PLUS_EQUAL: return "T_PLUS_EQUAL";
270+
case T_MINUS_EQUAL: return "T_MINUS_EQUAL";
271+
case T_MUL_EQUAL: return "T_MUL_EQUAL";
272+
case T_DIV_EQUAL: return "T_DIV_EQUAL";
273+
case T_CONCAT_EQUAL: return "T_CONCAT_EQUAL";
274+
case T_MOD_EQUAL: return "T_MOD_EQUAL";
275+
case T_AND_EQUAL: return "T_AND_EQUAL";
276+
case T_OR_EQUAL: return "T_OR_EQUAL";
277+
case T_XOR_EQUAL: return "T_XOR_EQUAL";
278+
case T_SL_EQUAL: return "T_SL_EQUAL";
279+
case T_SR_EQUAL: return "T_SR_EQUAL";
280+
case T_COALESCE_EQUAL: return "T_COALESCE_EQUAL";
281+
case T_BOOLEAN_OR: return "T_BOOLEAN_OR";
282+
case T_BOOLEAN_AND: return "T_BOOLEAN_AND";
283+
case T_IS_EQUAL: return "T_IS_EQUAL";
284+
case T_IS_NOT_EQUAL: return "T_IS_NOT_EQUAL";
285+
case T_IS_IDENTICAL: return "T_IS_IDENTICAL";
286+
case T_IS_NOT_IDENTICAL: return "T_IS_NOT_IDENTICAL";
287+
case T_IS_SMALLER_OR_EQUAL: return "T_IS_SMALLER_OR_EQUAL";
288+
case T_IS_GREATER_OR_EQUAL: return "T_IS_GREATER_OR_EQUAL";
289+
case T_SPACESHIP: return "T_SPACESHIP";
290+
case T_SL: return "T_SL";
291+
case T_SR: return "T_SR";
303292
case T_INC: return "T_INC";
304293
case T_DEC: return "T_DEC";
294+
case T_INT_CAST: return "T_INT_CAST";
295+
case T_DOUBLE_CAST: return "T_DOUBLE_CAST";
296+
case T_STRING_CAST: return "T_STRING_CAST";
297+
case T_ARRAY_CAST: return "T_ARRAY_CAST";
298+
case T_OBJECT_CAST: return "T_OBJECT_CAST";
299+
case T_BOOL_CAST: return "T_BOOL_CAST";
300+
case T_UNSET_CAST: return "T_UNSET_CAST";
305301
case T_OBJECT_OPERATOR: return "T_OBJECT_OPERATOR";
306302
case T_NULLSAFE_OBJECT_OPERATOR: return "T_NULLSAFE_OBJECT_OPERATOR";
303+
case T_DOUBLE_ARROW: return "T_DOUBLE_ARROW";
307304
case T_COMMENT: return "T_COMMENT";
308305
case T_DOC_COMMENT: return "T_DOC_COMMENT";
309306
case T_OPEN_TAG: return "T_OPEN_TAG";
@@ -317,6 +314,9 @@ char *get_token_type_name(int token_type)
317314
case T_PAAMAYIM_NEKUDOTAYIM: return "T_DOUBLE_COLON";
318315
case T_NS_SEPARATOR: return "T_NS_SEPARATOR";
319316
case T_ELLIPSIS: return "T_ELLIPSIS";
317+
case T_COALESCE: return "T_COALESCE";
318+
case T_POW: return "T_POW";
319+
case T_POW_EQUAL: return "T_POW_EQUAL";
320320
case T_BAD_CHARACTER: return "T_BAD_CHARACTER";
321321

322322
}

ext/tokenizer/tokenizer_data_gen.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22

33
$rootDir = __DIR__ . '/../..';
4-
$infile = $rootDir . '/Zend/zend_language_parser.h';
4+
$infile = $rootDir . '/Zend/zend_language_parser.y';
55
$outfile = $rootDir . '/ext/tokenizer/tokenizer_data.c';
66

77
if (!file_exists($infile)) {
@@ -49,7 +49,7 @@
4949
CODE;
5050

5151
$incontent = file_get_contents($infile);
52-
preg_match_all('(^ (?<token_name>T_.*?)\b)m', $incontent, $matches);
52+
preg_match_all('(^%token.*\b(?<token_name>T_.*?)\b)m', $incontent, $matches);
5353

5454
foreach ($matches['token_name'] as $tokenName) {
5555
if ($tokenName === 'T_NOELSE' || $tokenName === 'T_ERROR') {

0 commit comments

Comments
 (0)