From 265dd19d63c79a48474b99d382294fc6604735f8 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 27 May 2021 14:31:49 +0200 Subject: [PATCH] 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. --- ext/tokenizer/Makefile.frag | 4 +- ext/tokenizer/tokenizer_data.c | 196 +++++++++++++-------------- ext/tokenizer/tokenizer_data_gen.php | 4 +- 3 files changed, 101 insertions(+), 103 deletions(-) diff --git a/ext/tokenizer/Makefile.frag b/ext/tokenizer/Makefile.frag index 2349f803e50..745cbfce91a 100644 --- a/ext/tokenizer/Makefile.frag +++ b/ext/tokenizer/Makefile.frag @@ -1,6 +1,4 @@ -$(top_srcdir)/Zend/zend_language_parser.c: -$(top_srcdir)/Zend/zend_language_scanner.c: -$(top_srcdir)/ext/tokenizer/tokenizer_data.c: $(top_srcdir)/Zend/zend_language_parser.y $(top_srcdir)/Zend/zend_language_parser.h +$(top_srcdir)/ext/tokenizer/tokenizer_data.c: $(top_srcdir)/Zend/zend_language_parser.y @if test ! -z "$(PHP)"; then \ $(PHP) $(srcdir)/tokenizer_data_gen.php; \ fi; diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c index 3251f0ae600..db5a425406a 100644 --- a/ext/tokenizer/tokenizer_data.c +++ b/ext/tokenizer/tokenizer_data.c @@ -25,55 +25,6 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { - REGISTER_LONG_CONSTANT("T_THROW", T_THROW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INCLUDE", T_INCLUDE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INCLUDE_ONCE", T_INCLUDE_ONCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_REQUIRE", T_REQUIRE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_REQUIRE_ONCE", T_REQUIRE_ONCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LOGICAL_OR", T_LOGICAL_OR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LOGICAL_XOR", T_LOGICAL_XOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_YIELD_FROM", T_YIELD_FROM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PLUS_EQUAL", T_PLUS_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MINUS_EQUAL", T_MINUS_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MUL_EQUAL", T_MUL_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DIV_EQUAL", T_DIV_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CONCAT_EQUAL", T_CONCAT_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MOD_EQUAL", T_MOD_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_AND_EQUAL", T_AND_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OR_EQUAL", T_OR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_COALESCE_EQUAL", T_COALESCE_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_COALESCE", T_COALESCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BOOLEAN_OR", T_BOOLEAN_OR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BOOLEAN_AND", T_BOOLEAN_AND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_EQUAL", T_IS_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_NOT_EQUAL", T_IS_NOT_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_IDENTICAL", T_IS_IDENTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_NOT_IDENTICAL", T_IS_NOT_IDENTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SPACESHIP", T_SPACESHIP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_SMALLER_OR_EQUAL", T_IS_SMALLER_OR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_GREATER_OR_EQUAL", T_IS_GREATER_OR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ARRAY_CAST", T_ARRAY_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OBJECT_CAST", T_OBJECT_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BOOL_CAST", T_BOOL_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_UNSET_CAST", T_UNSET_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ELSEIF", T_ELSEIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ELSE", T_ELSE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_LNUMBER", T_LNUMBER, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_DNUMBER", T_DNUMBER, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_STRING", T_STRING, CONST_CS | CONST_PERSISTENT); @@ -86,10 +37,24 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { REGISTER_LONG_CONSTANT("T_CONSTANT_ENCAPSED_STRING", T_CONSTANT_ENCAPSED_STRING, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_STRING_VARNAME", T_STRING_VARNAME, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_NUM_STRING", T_NUM_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INCLUDE", T_INCLUDE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INCLUDE_ONCE", T_INCLUDE_ONCE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_EVAL", T_EVAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_REQUIRE", T_REQUIRE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_REQUIRE_ONCE", T_REQUIRE_ONCE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LOGICAL_OR", T_LOGICAL_OR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LOGICAL_XOR", T_LOGICAL_XOR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_YIELD_FROM", T_YIELD_FROM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_IF", T_IF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ELSEIF", T_ELSEIF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ELSE", T_ELSE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_ENDIF", T_ENDIF, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_ECHO", T_ECHO, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_DO", T_DO, CONST_CS | CONST_PERSISTENT); @@ -117,6 +82,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { REGISTER_LONG_CONSTANT("T_TRY", T_TRY, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_CATCH", T_CATCH, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_FINALLY", T_FINALLY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_THROW", T_THROW, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_USE", T_USE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_INSTEADOF", T_INSTEADOF, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_GLOBAL", T_GLOBAL, CONST_CS | CONST_PERSISTENT); @@ -150,10 +116,41 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { REGISTER_LONG_CONSTANT("T_FUNC_C", T_FUNC_C, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_NS_C", T_NS_C, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_ATTRIBUTE", T_ATTRIBUTE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PLUS_EQUAL", T_PLUS_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MINUS_EQUAL", T_MINUS_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MUL_EQUAL", T_MUL_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DIV_EQUAL", T_DIV_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CONCAT_EQUAL", T_CONCAT_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MOD_EQUAL", T_MOD_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_AND_EQUAL", T_AND_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OR_EQUAL", T_OR_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_COALESCE_EQUAL", T_COALESCE_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BOOLEAN_OR", T_BOOLEAN_OR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BOOLEAN_AND", T_BOOLEAN_AND, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_EQUAL", T_IS_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_NOT_EQUAL", T_IS_NOT_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_IDENTICAL", T_IS_IDENTICAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_NOT_IDENTICAL", T_IS_NOT_IDENTICAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_SMALLER_OR_EQUAL", T_IS_SMALLER_OR_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_GREATER_OR_EQUAL", T_IS_GREATER_OR_EQUAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SPACESHIP", T_SPACESHIP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ARRAY_CAST", T_ARRAY_CAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OBJECT_CAST", T_OBJECT_CAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BOOL_CAST", T_BOOL_CAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_UNSET_CAST", T_UNSET_CAST, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_OBJECT_OPERATOR", T_OBJECT_OPERATOR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_NULLSAFE_OBJECT_OPERATOR", T_NULLSAFE_OBJECT_OPERATOR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_COMMENT", T_COMMENT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_DOC_COMMENT", T_DOC_COMMENT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_OPEN_TAG", T_OPEN_TAG, CONST_CS | CONST_PERSISTENT); @@ -167,6 +164,9 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) { REGISTER_LONG_CONSTANT("T_PAAMAYIM_NEKUDOTAYIM", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_NS_SEPARATOR", T_NS_SEPARATOR, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_ELLIPSIS", T_ELLIPSIS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_COALESCE", T_COALESCE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_BAD_CHARACTER", T_BAD_CHARACTER, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT); } @@ -175,55 +175,6 @@ char *get_token_type_name(int token_type) { switch (token_type) { - case T_THROW: return "T_THROW"; - case T_INCLUDE: return "T_INCLUDE"; - case T_INCLUDE_ONCE: return "T_INCLUDE_ONCE"; - case T_REQUIRE: return "T_REQUIRE"; - case T_REQUIRE_ONCE: return "T_REQUIRE_ONCE"; - case T_LOGICAL_OR: return "T_LOGICAL_OR"; - case T_LOGICAL_XOR: return "T_LOGICAL_XOR"; - case T_LOGICAL_AND: return "T_LOGICAL_AND"; - case T_PRINT: return "T_PRINT"; - case T_YIELD: return "T_YIELD"; - case T_DOUBLE_ARROW: return "T_DOUBLE_ARROW"; - case T_YIELD_FROM: return "T_YIELD_FROM"; - case T_PLUS_EQUAL: return "T_PLUS_EQUAL"; - case T_MINUS_EQUAL: return "T_MINUS_EQUAL"; - case T_MUL_EQUAL: return "T_MUL_EQUAL"; - case T_DIV_EQUAL: return "T_DIV_EQUAL"; - case T_CONCAT_EQUAL: return "T_CONCAT_EQUAL"; - case T_MOD_EQUAL: return "T_MOD_EQUAL"; - case T_AND_EQUAL: return "T_AND_EQUAL"; - case T_OR_EQUAL: return "T_OR_EQUAL"; - case T_XOR_EQUAL: return "T_XOR_EQUAL"; - case T_SL_EQUAL: return "T_SL_EQUAL"; - case T_SR_EQUAL: return "T_SR_EQUAL"; - case T_POW_EQUAL: return "T_POW_EQUAL"; - case T_COALESCE_EQUAL: return "T_COALESCE_EQUAL"; - case T_COALESCE: return "T_COALESCE"; - case T_BOOLEAN_OR: return "T_BOOLEAN_OR"; - case T_BOOLEAN_AND: return "T_BOOLEAN_AND"; - case T_IS_EQUAL: return "T_IS_EQUAL"; - case T_IS_NOT_EQUAL: return "T_IS_NOT_EQUAL"; - case T_IS_IDENTICAL: return "T_IS_IDENTICAL"; - case T_IS_NOT_IDENTICAL: return "T_IS_NOT_IDENTICAL"; - case T_SPACESHIP: return "T_SPACESHIP"; - case T_IS_SMALLER_OR_EQUAL: return "T_IS_SMALLER_OR_EQUAL"; - case T_IS_GREATER_OR_EQUAL: return "T_IS_GREATER_OR_EQUAL"; - case T_SL: return "T_SL"; - case T_SR: return "T_SR"; - case T_INSTANCEOF: return "T_INSTANCEOF"; - case T_INT_CAST: return "T_INT_CAST"; - case T_DOUBLE_CAST: return "T_DOUBLE_CAST"; - case T_STRING_CAST: return "T_STRING_CAST"; - case T_ARRAY_CAST: return "T_ARRAY_CAST"; - case T_OBJECT_CAST: return "T_OBJECT_CAST"; - case T_BOOL_CAST: return "T_BOOL_CAST"; - case T_UNSET_CAST: return "T_UNSET_CAST"; - case T_POW: return "T_POW"; - case T_CLONE: return "T_CLONE"; - case T_ELSEIF: return "T_ELSEIF"; - case T_ELSE: return "T_ELSE"; case T_LNUMBER: return "T_LNUMBER"; case T_DNUMBER: return "T_DNUMBER"; case T_STRING: return "T_STRING"; @@ -236,10 +187,24 @@ char *get_token_type_name(int token_type) case T_CONSTANT_ENCAPSED_STRING: return "T_CONSTANT_ENCAPSED_STRING"; case T_STRING_VARNAME: return "T_STRING_VARNAME"; case T_NUM_STRING: return "T_NUM_STRING"; + case T_INCLUDE: return "T_INCLUDE"; + case T_INCLUDE_ONCE: return "T_INCLUDE_ONCE"; case T_EVAL: return "T_EVAL"; + case T_REQUIRE: return "T_REQUIRE"; + case T_REQUIRE_ONCE: return "T_REQUIRE_ONCE"; + case T_LOGICAL_OR: return "T_LOGICAL_OR"; + case T_LOGICAL_XOR: return "T_LOGICAL_XOR"; + case T_LOGICAL_AND: return "T_LOGICAL_AND"; + case T_PRINT: return "T_PRINT"; + case T_YIELD: return "T_YIELD"; + case T_YIELD_FROM: return "T_YIELD_FROM"; + case T_INSTANCEOF: return "T_INSTANCEOF"; case T_NEW: return "T_NEW"; + case T_CLONE: return "T_CLONE"; case T_EXIT: return "T_EXIT"; case T_IF: return "T_IF"; + case T_ELSEIF: return "T_ELSEIF"; + case T_ELSE: return "T_ELSE"; case T_ENDIF: return "T_ENDIF"; case T_ECHO: return "T_ECHO"; case T_DO: return "T_DO"; @@ -267,6 +232,7 @@ char *get_token_type_name(int token_type) case T_TRY: return "T_TRY"; case T_CATCH: return "T_CATCH"; case T_FINALLY: return "T_FINALLY"; + case T_THROW: return "T_THROW"; case T_USE: return "T_USE"; case T_INSTEADOF: return "T_INSTEADOF"; case T_GLOBAL: return "T_GLOBAL"; @@ -300,10 +266,41 @@ char *get_token_type_name(int token_type) case T_FUNC_C: return "T_FUNC_C"; case T_NS_C: return "T_NS_C"; case T_ATTRIBUTE: return "T_ATTRIBUTE"; + case T_PLUS_EQUAL: return "T_PLUS_EQUAL"; + case T_MINUS_EQUAL: return "T_MINUS_EQUAL"; + case T_MUL_EQUAL: return "T_MUL_EQUAL"; + case T_DIV_EQUAL: return "T_DIV_EQUAL"; + case T_CONCAT_EQUAL: return "T_CONCAT_EQUAL"; + case T_MOD_EQUAL: return "T_MOD_EQUAL"; + case T_AND_EQUAL: return "T_AND_EQUAL"; + case T_OR_EQUAL: return "T_OR_EQUAL"; + case T_XOR_EQUAL: return "T_XOR_EQUAL"; + case T_SL_EQUAL: return "T_SL_EQUAL"; + case T_SR_EQUAL: return "T_SR_EQUAL"; + case T_COALESCE_EQUAL: return "T_COALESCE_EQUAL"; + case T_BOOLEAN_OR: return "T_BOOLEAN_OR"; + case T_BOOLEAN_AND: return "T_BOOLEAN_AND"; + case T_IS_EQUAL: return "T_IS_EQUAL"; + case T_IS_NOT_EQUAL: return "T_IS_NOT_EQUAL"; + case T_IS_IDENTICAL: return "T_IS_IDENTICAL"; + case T_IS_NOT_IDENTICAL: return "T_IS_NOT_IDENTICAL"; + case T_IS_SMALLER_OR_EQUAL: return "T_IS_SMALLER_OR_EQUAL"; + case T_IS_GREATER_OR_EQUAL: return "T_IS_GREATER_OR_EQUAL"; + case T_SPACESHIP: return "T_SPACESHIP"; + case T_SL: return "T_SL"; + case T_SR: return "T_SR"; case T_INC: return "T_INC"; case T_DEC: return "T_DEC"; + case T_INT_CAST: return "T_INT_CAST"; + case T_DOUBLE_CAST: return "T_DOUBLE_CAST"; + case T_STRING_CAST: return "T_STRING_CAST"; + case T_ARRAY_CAST: return "T_ARRAY_CAST"; + case T_OBJECT_CAST: return "T_OBJECT_CAST"; + case T_BOOL_CAST: return "T_BOOL_CAST"; + case T_UNSET_CAST: return "T_UNSET_CAST"; case T_OBJECT_OPERATOR: return "T_OBJECT_OPERATOR"; case T_NULLSAFE_OBJECT_OPERATOR: return "T_NULLSAFE_OBJECT_OPERATOR"; + case T_DOUBLE_ARROW: return "T_DOUBLE_ARROW"; case T_COMMENT: return "T_COMMENT"; case T_DOC_COMMENT: return "T_DOC_COMMENT"; case T_OPEN_TAG: return "T_OPEN_TAG"; @@ -317,6 +314,9 @@ char *get_token_type_name(int token_type) case T_PAAMAYIM_NEKUDOTAYIM: return "T_DOUBLE_COLON"; case T_NS_SEPARATOR: return "T_NS_SEPARATOR"; case T_ELLIPSIS: return "T_ELLIPSIS"; + case T_COALESCE: return "T_COALESCE"; + case T_POW: return "T_POW"; + case T_POW_EQUAL: return "T_POW_EQUAL"; case T_BAD_CHARACTER: return "T_BAD_CHARACTER"; } diff --git a/ext/tokenizer/tokenizer_data_gen.php b/ext/tokenizer/tokenizer_data_gen.php index bb32e373a4b..b9659e9f19a 100644 --- a/ext/tokenizer/tokenizer_data_gen.php +++ b/ext/tokenizer/tokenizer_data_gen.php @@ -1,7 +1,7 @@ T_.*?)\b)m', $incontent, $matches); +preg_match_all('(^%token.*\b(?T_.*?)\b)m', $incontent, $matches); foreach ($matches['token_name'] as $tokenName) { if ($tokenName === 'T_NOELSE' || $tokenName === 'T_ERROR') {