diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 298eaf95ad05..e2b9ba1e236a 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -86,163 +86,163 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %precedence T_ELSEIF %precedence T_ELSE -%token T_LNUMBER "integer" -%token T_DNUMBER "floating-point number" -%token T_STRING "identifier" -%token T_NAME_FULLY_QUALIFIED "fully qualified name" -%token T_NAME_RELATIVE "namespace-relative name" -%token T_NAME_QUALIFIED "namespaced name" -%token T_VARIABLE "variable" -%token T_INLINE_HTML -%token T_ENCAPSED_AND_WHITESPACE "string content" -%token T_CONSTANT_ENCAPSED_STRING "quoted string" -%token T_STRING_VARNAME "variable name" -%token T_NUM_STRING "number" - -%token T_INCLUDE "'include'" -%token T_INCLUDE_ONCE "'include_once'" -%token T_EVAL "'eval'" -%token T_REQUIRE "'require'" -%token T_REQUIRE_ONCE "'require_once'" -%token T_LOGICAL_OR "'or'" -%token T_LOGICAL_XOR "'xor'" -%token T_LOGICAL_AND "'and'" -%token T_PRINT "'print'" -%token T_YIELD "'yield'" -%token T_YIELD_FROM "'yield from'" -%token T_INSTANCEOF "'instanceof'" -%token T_NEW "'new'" -%token T_CLONE "'clone'" -%token T_EXIT "'exit'" -%token T_IF "'if'" -%token T_ELSEIF "'elseif'" -%token T_ELSE "'else'" -%token T_ENDIF "'endif'" -%token T_ECHO "'echo'" -%token T_DO "'do'" -%token T_WHILE "'while'" -%token T_ENDWHILE "'endwhile'" -%token T_FOR "'for'" -%token T_ENDFOR "'endfor'" -%token T_FOREACH "'foreach'" -%token T_ENDFOREACH "'endforeach'" -%token T_DECLARE "'declare'" -%token T_ENDDECLARE "'enddeclare'" -%token T_AS "'as'" -%token T_SWITCH "'switch'" -%token T_ENDSWITCH "'endswitch'" -%token T_CASE "'case'" -%token T_DEFAULT "'default'" -%token T_MATCH "'match'" -%token T_BREAK "'break'" -%token T_CONTINUE "'continue'" -%token T_GOTO "'goto'" -%token T_FUNCTION "'function'" -%token T_FN "'fn'" -%token T_CONST "'const'" -%token T_RETURN "'return'" -%token T_TRY "'try'" -%token T_CATCH "'catch'" -%token T_FINALLY "'finally'" -%token T_THROW "'throw'" -%token T_USE "'use'" -%token T_INSTEADOF "'insteadof'" -%token T_GLOBAL "'global'" -%token T_STATIC "'static'" -%token T_ABSTRACT "'abstract'" -%token T_FINAL "'final'" -%token T_PRIVATE "'private'" -%token T_PROTECTED "'protected'" -%token T_PUBLIC "'public'" -%token T_READONLY "'readonly'" -%token T_VAR "'var'" -%token T_UNSET "'unset'" -%token T_ISSET "'isset'" -%token T_EMPTY "'empty'" -%token T_HALT_COMPILER "'__halt_compiler'" -%token T_CLASS "'class'" -%token T_TRAIT "'trait'" -%token T_INTERFACE "'interface'" -%token T_ENUM "'enum'" -%token T_EXTENDS "'extends'" -%token T_IMPLEMENTS "'implements'" -%token T_NAMESPACE "'namespace'" -%token T_LIST "'list'" -%token T_ARRAY "'array'" -%token T_CALLABLE "'callable'" -%token T_LINE "'__LINE__'" -%token T_FILE "'__FILE__'" -%token T_DIR "'__DIR__'" -%token T_CLASS_C "'__CLASS__'" -%token T_TRAIT_C "'__TRAIT__'" -%token T_METHOD_C "'__METHOD__'" -%token T_FUNC_C "'__FUNCTION__'" -%token T_NS_C "'__NAMESPACE__'" +%token T_LNUMBER 260 "integer" +%token T_DNUMBER 261 "floating-point number" +%token T_STRING 262 "identifier" +%token T_NAME_FULLY_QUALIFIED 263 "fully qualified name" +%token T_NAME_RELATIVE 264 "namespace-relative name" +%token T_NAME_QUALIFIED 265 "namespaced name" +%token T_VARIABLE 266 "variable" +%token T_INLINE_HTML 267 +%token T_ENCAPSED_AND_WHITESPACE 268 "string content" +%token T_CONSTANT_ENCAPSED_STRING 269 "quoted string" +%token T_STRING_VARNAME 270 "variable name" +%token T_NUM_STRING 271 "number" + +%token T_INCLUDE 272 "'include'" +%token T_INCLUDE_ONCE 273 "'include_once'" +%token T_EVAL 274 "'eval'" +%token T_REQUIRE 275 "'require'" +%token T_REQUIRE_ONCE 276 "'require_once'" +%token T_LOGICAL_OR 277 "'or'" +%token T_LOGICAL_XOR 278 "'xor'" +%token T_LOGICAL_AND 279 "'and'" +%token T_PRINT 280 "'print'" +%token T_YIELD 281 "'yield'" +%token T_YIELD_FROM 282 "'yield from'" +%token T_INSTANCEOF 283 "'instanceof'" +%token T_NEW 284 "'new'" +%token T_CLONE 285 "'clone'" +%token T_EXIT 286 "'exit'" +%token T_IF 287 "'if'" +%token T_ELSEIF 288 "'elseif'" +%token T_ELSE 289 "'else'" +%token T_ENDIF 290 "'endif'" +%token T_ECHO 291 "'echo'" +%token T_DO 292 "'do'" +%token T_WHILE 293 "'while'" +%token T_ENDWHILE 294 "'endwhile'" +%token T_FOR 295 "'for'" +%token T_ENDFOR 296 "'endfor'" +%token T_FOREACH 297 "'foreach'" +%token T_ENDFOREACH 298 "'endforeach'" +%token T_DECLARE 299 "'declare'" +%token T_ENDDECLARE 300 "'enddeclare'" +%token T_AS 301 "'as'" +%token T_SWITCH 302 "'switch'" +%token T_ENDSWITCH 303 "'endswitch'" +%token T_CASE 304 "'case'" +%token T_DEFAULT 305 "'default'" +%token T_MATCH 306 "'match'" +%token T_BREAK 307 "'break'" +%token T_CONTINUE 308 "'continue'" +%token T_GOTO 309 "'goto'" +%token T_FUNCTION 310 "'function'" +%token T_FN 311 "'fn'" +%token T_CONST 312 "'const'" +%token T_RETURN 313 "'return'" +%token T_TRY 314 "'try'" +%token T_CATCH 315 "'catch'" +%token T_FINALLY 316 "'finally'" +%token T_THROW 317 "'throw'" +%token T_USE 318 "'use'" +%token T_INSTEADOF 319 "'insteadof'" +%token T_GLOBAL 320 "'global'" +%token T_STATIC 321 "'static'" +%token T_ABSTRACT 322 "'abstract'" +%token T_FINAL 323 "'final'" +%token T_PRIVATE 324 "'private'" +%token T_PROTECTED 325 "'protected'" +%token T_PUBLIC 326 "'public'" +%token T_READONLY 327 "'readonly'" +%token T_VAR 328 "'var'" +%token T_UNSET 329 "'unset'" +%token T_ISSET 330 "'isset'" +%token T_EMPTY 331 "'empty'" +%token T_HALT_COMPILER 332 "'__halt_compiler'" +%token T_CLASS 333 "'class'" +%token T_TRAIT 334 "'trait'" +%token T_INTERFACE 335 "'interface'" +%token T_ENUM 336 "'enum'" +%token T_EXTENDS 337 "'extends'" +%token T_IMPLEMENTS 338 "'implements'" +%token T_NAMESPACE 339 "'namespace'" +%token T_LIST 340 "'list'" +%token T_ARRAY 341 "'array'" +%token T_CALLABLE 342 "'callable'" +%token T_LINE 343 "'__LINE__'" +%token T_FILE 344 "'__FILE__'" +%token T_DIR 345 "'__DIR__'" +%token T_CLASS_C 346 "'__CLASS__'" +%token T_TRAIT_C 347 "'__TRAIT__'" +%token T_METHOD_C 348 "'__METHOD__'" +%token T_FUNC_C 349 "'__FUNCTION__'" +%token T_NS_C 350 "'__NAMESPACE__'" %token END 0 "end of file" -%token T_ATTRIBUTE "'#['" -%token T_PLUS_EQUAL "'+='" -%token T_MINUS_EQUAL "'-='" -%token T_MUL_EQUAL "'*='" -%token T_DIV_EQUAL "'/='" -%token T_CONCAT_EQUAL "'.='" -%token T_MOD_EQUAL "'%='" -%token T_AND_EQUAL "'&='" -%token T_OR_EQUAL "'|='" -%token T_XOR_EQUAL "'^='" -%token T_SL_EQUAL "'<<='" -%token T_SR_EQUAL "'>>='" -%token T_COALESCE_EQUAL "'??='" -%token T_BOOLEAN_OR "'||'" -%token T_BOOLEAN_AND "'&&'" -%token T_IS_EQUAL "'=='" -%token T_IS_NOT_EQUAL "'!='" -%token T_IS_IDENTICAL "'==='" -%token T_IS_NOT_IDENTICAL "'!=='" -%token T_IS_SMALLER_OR_EQUAL "'<='" -%token T_IS_GREATER_OR_EQUAL "'>='" -%token T_SPACESHIP "'<=>'" -%token T_SL "'<<'" -%token T_SR "'>>'" -%token T_INC "'++'" -%token T_DEC "'--'" -%token T_INT_CAST "'(int)'" -%token T_DOUBLE_CAST "'(double)'" -%token T_STRING_CAST "'(string)'" -%token T_ARRAY_CAST "'(array)'" -%token T_OBJECT_CAST "'(object)'" -%token T_BOOL_CAST "'(bool)'" -%token T_UNSET_CAST "'(unset)'" -%token T_OBJECT_OPERATOR "'->'" -%token T_NULLSAFE_OBJECT_OPERATOR "'?->'" -%token T_DOUBLE_ARROW "'=>'" -%token T_COMMENT "comment" -%token T_DOC_COMMENT "doc comment" -%token T_OPEN_TAG "open tag" -%token T_OPEN_TAG_WITH_ECHO "''" -%token T_WHITESPACE "whitespace" -%token T_START_HEREDOC "heredoc start" -%token T_END_HEREDOC "heredoc end" -%token T_DOLLAR_OPEN_CURLY_BRACES "'${'" -%token T_CURLY_OPEN "'{$'" -%token T_PAAMAYIM_NEKUDOTAYIM "'::'" -%token T_NS_SEPARATOR "'\\'" -%token T_ELLIPSIS "'...'" -%token T_COALESCE "'??'" -%token T_POW "'**'" -%token T_POW_EQUAL "'**='" +%token T_ATTRIBUTE 351 "'#['" +%token T_PLUS_EQUAL 352 "'+='" +%token T_MINUS_EQUAL 353 "'-='" +%token T_MUL_EQUAL 354 "'*='" +%token T_DIV_EQUAL 355 "'/='" +%token T_CONCAT_EQUAL 356 "'.='" +%token T_MOD_EQUAL 357 "'%='" +%token T_AND_EQUAL 358 "'&='" +%token T_OR_EQUAL 359 "'|='" +%token T_XOR_EQUAL 360 "'^='" +%token T_SL_EQUAL 361 "'<<='" +%token T_SR_EQUAL 362 "'>>='" +%token T_COALESCE_EQUAL 363 "'??='" +%token T_BOOLEAN_OR 364 "'||'" +%token T_BOOLEAN_AND 365 "'&&'" +%token T_IS_EQUAL 366 "'=='" +%token T_IS_NOT_EQUAL 367 "'!='" +%token T_IS_IDENTICAL 368 "'==='" +%token T_IS_NOT_IDENTICAL 369 "'!=='" +%token T_IS_SMALLER_OR_EQUAL 370 "'<='" +%token T_IS_GREATER_OR_EQUAL 371 "'>='" +%token T_SPACESHIP 372 "'<=>'" +%token T_SL 373 "'<<'" +%token T_SR 374 "'>>'" +%token T_INC 375 "'++'" +%token T_DEC 376 "'--'" +%token T_INT_CAST 377 "'(int)'" +%token T_DOUBLE_CAST 378 "'(double)'" +%token T_STRING_CAST 379 "'(string)'" +%token T_ARRAY_CAST 380 "'(array)'" +%token T_OBJECT_CAST 381 "'(object)'" +%token T_BOOL_CAST 382 "'(bool)'" +%token T_UNSET_CAST 383 "'(unset)'" +%token T_OBJECT_OPERATOR 384 "'->'" +%token T_NULLSAFE_OBJECT_OPERATOR 385 "'?->'" +%token T_DOUBLE_ARROW 386 "'=>'" +%token T_COMMENT 387 "comment" +%token T_DOC_COMMENT 388 "doc comment" +%token T_OPEN_TAG 389 "open tag" +%token T_OPEN_TAG_WITH_ECHO 390 "''" +%token T_WHITESPACE 392 "whitespace" +%token T_START_HEREDOC 393 "heredoc start" +%token T_END_HEREDOC 394 "heredoc end" +%token T_DOLLAR_OPEN_CURLY_BRACES 395 "'${'" +%token T_CURLY_OPEN 396 "'{$'" +%token T_PAAMAYIM_NEKUDOTAYIM 397 "'::'" +%token T_NS_SEPARATOR 398 "'\\'" +%token T_ELLIPSIS 399 "'...'" +%token T_COALESCE 400 "'??'" +%token T_POW 401 "'**'" +%token T_POW_EQUAL 402 "'**='" /* We need to split the & token in two to avoid a shift/reduce conflict. For T1&$v and T1&T2, * with only one token lookahead, bison does not know whether to reduce T1 as a complete type, * or shift to continue parsing an intersection type. */ -%token T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG "'&'" +%token T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG 403 "'&'" /* Bison warns on duplicate token literals, so use a different dummy value here. * It will be fixed up by zend_yytnamerr() later. */ -%token T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG "amp" -%token T_BAD_CHARACTER "invalid character" +%token T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 404 "amp" +%token T_BAD_CHARACTER 405 "invalid character" /* Token used to force a parse error from the lexer */ -%token T_ERROR +%token T_ERROR 406 %type top_statement namespace_name name statement function_declaration_statement %type class_declaration_statement trait_declaration_statement legacy_namespace_name