diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index d2a29e670d8b..919cf5a448d3 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -86,167 +86,167 @@ 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_PRIVATE_SET "'private(set)'" -%token T_PROTECTED_SET "'protected(set)'" -%token T_PUBLIC_SET "'public(set)'" -%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_PROPERTY_C "'__PROPERTY__'" -%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_PRIVATE_SET 327 "'private(set)'" +%token T_PROTECTED_SET 328 "'protected(set)'" +%token T_PUBLIC_SET 329 "'public(set)'" +%token T_READONLY 330 "'readonly'" +%token T_VAR 331 "'var'" +%token T_UNSET 332 "'unset'" +%token T_ISSET 333 "'isset'" +%token T_EMPTY 334 "'empty'" +%token T_HALT_COMPILER 335 "'__halt_compiler'" +%token T_CLASS 336 "'class'" +%token T_TRAIT 337 "'trait'" +%token T_INTERFACE 338 "'interface'" +%token T_ENUM 339 "'enum'" +%token T_EXTENDS 340 "'extends'" +%token T_IMPLEMENTS 341 "'implements'" +%token T_NAMESPACE 342 "'namespace'" +%token T_LIST 343 "'list'" +%token T_ARRAY 344 "'array'" +%token T_CALLABLE 345 "'callable'" +%token T_LINE 346 "'__LINE__'" +%token T_FILE 347 "'__FILE__'" +%token T_DIR 348 "'__DIR__'" +%token T_CLASS_C 349 "'__CLASS__'" +%token T_TRAIT_C 350 "'__TRAIT__'" +%token T_METHOD_C 351 "'__METHOD__'" +%token T_FUNC_C 352 "'__FUNCTION__'" +%token T_PROPERTY_C 353 "'__PROPERTY__'" +%token T_NS_C 354 "'__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 355 "'#['" +%token T_PLUS_EQUAL 356 "'+='" +%token T_MINUS_EQUAL 357 "'-='" +%token T_MUL_EQUAL 358 "'*='" +%token T_DIV_EQUAL 359 "'/='" +%token T_CONCAT_EQUAL 360 "'.='" +%token T_MOD_EQUAL 361 "'%='" +%token T_AND_EQUAL 362 "'&='" +%token T_OR_EQUAL 363 "'|='" +%token T_XOR_EQUAL 364 "'^='" +%token T_SL_EQUAL 365 "'<<='" +%token T_SR_EQUAL 366 "'>>='" +%token T_COALESCE_EQUAL 367 "'??='" +%token T_BOOLEAN_OR 368 "'||'" +%token T_BOOLEAN_AND 369 "'&&'" +%token T_IS_EQUAL 370 "'=='" +%token T_IS_NOT_EQUAL 371 "'!='" +%token T_IS_IDENTICAL 372 "'==='" +%token T_IS_NOT_IDENTICAL 373 "'!=='" +%token T_IS_SMALLER_OR_EQUAL 374 "'<='" +%token T_IS_GREATER_OR_EQUAL 375 "'>='" +%token T_SPACESHIP 376 "'<=>'" +%token T_SL 377 "'<<'" +%token T_SR 378 "'>>'" +%token T_INC 379 "'++'" +%token T_DEC 380 "'--'" +%token T_INT_CAST 381 "'(int)'" +%token T_DOUBLE_CAST 382 "'(double)'" +%token T_STRING_CAST 383 "'(string)'" +%token T_ARRAY_CAST 384 "'(array)'" +%token T_OBJECT_CAST 385 "'(object)'" +%token T_BOOL_CAST 386 "'(bool)'" +%token T_UNSET_CAST 387 "'(unset)'" +%token T_OBJECT_OPERATOR 388 "'->'" +%token T_NULLSAFE_OBJECT_OPERATOR 389 "'?->'" +%token T_DOUBLE_ARROW 390 "'=>'" +%token T_COMMENT 391 "comment" +%token T_DOC_COMMENT 392 "doc comment" +%token T_OPEN_TAG 393 "open tag" +%token T_OPEN_TAG_WITH_ECHO 394 "''" +%token T_WHITESPACE 396 "whitespace" +%token T_START_HEREDOC 397 "heredoc start" +%token T_END_HEREDOC 398 "heredoc end" +%token T_DOLLAR_OPEN_CURLY_BRACES 399 "'${'" +%token T_CURLY_OPEN 400 "'{$'" +%token T_PAAMAYIM_NEKUDOTAYIM 401 "'::'" +%token T_NS_SEPARATOR 402 "'\\'" +%token T_ELLIPSIS 403 "'...'" +%token T_COALESCE 404 "'??'" +%token T_POW 405 "'**'" +%token T_POW_EQUAL 406 "'**='" /* 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 407 "'&'" /* 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 408 "amp" +%token T_BAD_CHARACTER 409 "invalid character" /* Token used to force a parse error from the lexer */ -%token T_ERROR +%token T_ERROR 410 %type top_statement namespace_name name statement function_declaration_statement %type class_declaration_statement trait_declaration_statement legacy_namespace_name