com php-src: adds missing tokens to list of semi-reserved words and regenerates test suite: Zend/tests/grammar/semi_reserved_ 001.phpt
Zend/tests/grammar/semi_reserved_00 2.phpt Zend/tests/grammar/semi_reserved_003.p hpt Zend/tests/grammar/semi_reserved_004.phpt Z
end/tests/grammar/semi_reserved_005.phpt Zend/zen d_language_parser.y ext/tokenizer/tests/token_get_a ll_TOKEN_PARSE_001.phpt
| From: | Bob Weinand | Date: | Fri, 04 Sep 2015 13:02:50 +0000 |
| Subject: | com php-src: adds missing tokens to list of semi-reserved words and regenerates test suite: Zend/tests/grammar/semi_reserved_ 001.phpt Zend/tests/grammar/semi_reserved_00 2.phpt Zend/tests/grammar/semi_reserved_003.p hpt Zend/tests/grammar/semi_reserved_004.phpt Z end/tests/grammar/semi_reserved_005.phpt Zend/zen d_language_parser.y ext/tokenizer/tests/token_get_a ll_TOKEN_PARSE_001.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88902@lists.php.net to get a copy of this message | ||
Commit: c08b3922dd26ae3854eda918a036209375bdb7f1
Author: Márcio Almada <marcio3w@gmail.com> Fri, 4 Sep 2015 00:45:49 -0300
Committer: Bob Weinand <bobwei9@hotmail.com> Fri, 4 Sep 2015 15:02:50 +0200
Parents: 26e619b1923e481be5a281738835e4f92a44fbfe
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=c08b3922dd26ae3854eda918a036209375bdb7f1
Log:
adds missing tokens to list of semi-reserved words and regenerates test suite
Changed paths:
M Zend/tests/grammar/semi_reserved_001.phpt
M Zend/tests/grammar/semi_reserved_002.phpt
M Zend/tests/grammar/semi_reserved_003.phpt
M Zend/tests/grammar/semi_reserved_004.phpt
M Zend/tests/grammar/semi_reserved_005.phpt
M Zend/zend_language_parser.y
M ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt
diff --git a/Zend/tests/grammar/semi_reserved_001.phpt b/Zend/tests/grammar/semi_reserved_001.phpt index c6bfd46..26b3638 100644 --- a/Zend/tests/grammar/semi_reserved_001.phpt +++ b/Zend/tests/grammar/semi_reserved_001.phpt @@ -7,9 +7,16 @@ class Obj { function empty(){ echo __METHOD__, PHP_EOL; } function callable(){ echo __METHOD__, PHP_EOL; } + function class(){ echo __METHOD__, PHP_EOL; } function trait(){ echo __METHOD__, PHP_EOL; } function extends(){ echo __METHOD__, PHP_EOL; } function implements(){ echo __METHOD__, PHP_EOL; } + function static(){ echo __METHOD__, PHP_EOL; } + function abstract(){ echo __METHOD__, PHP_EOL; } + function final(){ echo __METHOD__, PHP_EOL; } + function public(){ echo __METHOD__, PHP_EOL; } + function protected(){ echo __METHOD__, PHP_EOL; } + function private(){ echo __METHOD__, PHP_EOL; } function const(){ echo __METHOD__, PHP_EOL; } function enddeclare(){ echo __METHOD__, PHP_EOL; } function endfor(){ echo __METHOD__, PHP_EOL; } @@ -22,6 +29,7 @@ class Obj function instanceof(){ echo __METHOD__, PHP_EOL; } function insteadof(){ echo __METHOD__, PHP_EOL; } function interface(){ echo __METHOD__, PHP_EOL; } + function namespace(){ echo __METHOD__, PHP_EOL; } function new(){ echo __METHOD__, PHP_EOL; } function or(){ echo __METHOD__, PHP_EOL; } function xor(){ echo __METHOD__, PHP_EOL; } @@ -62,22 +70,33 @@ class Obj function die(){ echo __METHOD__, PHP_EOL; } function self(){ echo __METHOD__, PHP_EOL; } function parent(){ echo __METHOD__, PHP_EOL; } - function public(){ echo __METHOD__, PHP_EOL; } - function protected(){ echo __METHOD__, PHP_EOL; } - function private(){ echo __METHOD__, PHP_EOL; } - function static(){ echo __METHOD__, PHP_EOL; } - function abstract(){ echo __METHOD__, PHP_EOL; } - function final(){ echo __METHOD__, PHP_EOL; } - function class(){ echo __METHOD__, PHP_EOL; } + function isset(){ echo __METHOD__, PHP_EOL; } + function unset(){ echo __METHOD__, PHP_EOL; } + function __CLASS__(){ echo __METHOD__, PHP_EOL; } + function __TRAIT__(){ echo __METHOD__, PHP_EOL; } + function __FUNCTION__(){ echo __METHOD__, PHP_EOL; } + function __METHOD__(){ echo __METHOD__, PHP_EOL; } + function __LINE__(){ echo __METHOD__, PHP_EOL; } + function __FILE__(){ echo __METHOD__, PHP_EOL; } + function __DIR__(){ echo __METHOD__, PHP_EOL; } + function __NAMESPACE__(){ echo __METHOD__, PHP_EOL; } + function __halt_compiler(){ echo __METHOD__, PHP_EOL; } } $obj = new Obj; $obj->empty(); $obj->callable(); +$obj->class(); $obj->trait(); $obj->extends(); $obj->implements(); +$obj->static(); +$obj->abstract(); +$obj->final(); +$obj->public(); +$obj->protected(); +$obj->private(); $obj->const(); $obj->enddeclare(); $obj->endfor(); @@ -90,6 +109,7 @@ $obj->goto(); $obj->instanceof(); $obj->insteadof(); $obj->interface(); +$obj->namespace(); $obj->new(); $obj->or(); $obj->xor(); @@ -130,22 +150,33 @@ $obj->catch(); $obj->die(); $obj->self(); $obj->parent(); -$obj->public(); -$obj->protected(); -$obj->private(); -$obj->static(); -$obj->abstract(); -$obj->final(); -$obj->class(); +$obj->isset(); +$obj->unset(); +$obj->__CLASS__(); +$obj->__TRAIT__(); +$obj->__FUNCTION__(); +$obj->__METHOD__(); +$obj->__LINE__(); +$obj->__FILE__(); +$obj->__DIR__(); +$obj->__NAMESPACE__(); +$obj->__halt_compiler(); echo "\nDone\n"; --EXPECTF-- Obj::empty Obj::callable +Obj::class Obj::trait Obj::extends Obj::implements +Obj::static +Obj::abstract +Obj::final +Obj::public +Obj::protected +Obj::private Obj::const Obj::enddeclare Obj::endfor @@ -158,6 +189,7 @@ Obj::goto Obj::instanceof Obj::insteadof Obj::interface +Obj::namespace Obj::new Obj::or Obj::xor @@ -198,12 +230,16 @@ Obj::catch Obj::die Obj::self Obj::parent -Obj::public -Obj::protected -Obj::private -Obj::static -Obj::abstract -Obj::final -Obj::class +Obj::isset +Obj::unset +Obj::__CLASS__ +Obj::__TRAIT__ +Obj::__FUNCTION__ +Obj::__METHOD__ +Obj::__LINE__ +Obj::__FILE__ +Obj::__DIR__ +Obj::__NAMESPACE__ +Obj::__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_002.phpt b/Zend/tests/grammar/semi_reserved_002.phpt index b2c2002..483ac8c 100644 --- a/Zend/tests/grammar/semi_reserved_002.phpt +++ b/Zend/tests/grammar/semi_reserved_002.phpt @@ -7,9 +7,16 @@ class Obj { static function empty(){ echo __METHOD__, PHP_EOL; } static function callable(){ echo __METHOD__, PHP_EOL; } + static function class(){ echo __METHOD__, PHP_EOL; } static function trait(){ echo __METHOD__, PHP_EOL; } static function extends(){ echo __METHOD__, PHP_EOL; } static function implements(){ echo __METHOD__, PHP_EOL; } + static function static(){ echo __METHOD__, PHP_EOL; } + static function abstract(){ echo __METHOD__, PHP_EOL; } + static function final(){ echo __METHOD__, PHP_EOL; } + static function public(){ echo __METHOD__, PHP_EOL; } + static function protected(){ echo __METHOD__, PHP_EOL; } + static function private(){ echo __METHOD__, PHP_EOL; } static function const(){ echo __METHOD__, PHP_EOL; } static function enddeclare(){ echo __METHOD__, PHP_EOL; } static function endfor(){ echo __METHOD__, PHP_EOL; } @@ -22,6 +29,7 @@ class Obj static function instanceof(){ echo __METHOD__, PHP_EOL; } static function insteadof(){ echo __METHOD__, PHP_EOL; } static function interface(){ echo __METHOD__, PHP_EOL; } + static function namespace(){ echo __METHOD__, PHP_EOL; } static function new(){ echo __METHOD__, PHP_EOL; } static function or(){ echo __METHOD__, PHP_EOL; } static function xor(){ echo __METHOD__, PHP_EOL; } @@ -62,20 +70,31 @@ class Obj static function die(){ echo __METHOD__, PHP_EOL; } static function self(){ echo __METHOD__, PHP_EOL; } static function parent(){ echo __METHOD__, PHP_EOL; } - static function public(){ echo __METHOD__, PHP_EOL; } - static function protected(){ echo __METHOD__, PHP_EOL; } - static function private(){ echo __METHOD__, PHP_EOL; } - static function static(){ echo __METHOD__, PHP_EOL; } - static function abstract(){ echo __METHOD__, PHP_EOL; } - static function final(){ echo __METHOD__, PHP_EOL; } - static function class(){ echo __METHOD__, PHP_EOL; } + static function isset(){ echo __METHOD__, PHP_EOL; } + static function unset(){ echo __METHOD__, PHP_EOL; } + static function __CLASS__(){ echo __METHOD__, PHP_EOL; } + static function __TRAIT__(){ echo __METHOD__, PHP_EOL; } + static function __FUNCTION__(){ echo __METHOD__, PHP_EOL; } + static function __METHOD__(){ echo __METHOD__, PHP_EOL; } + static function __LINE__(){ echo __METHOD__, PHP_EOL; } + static function __FILE__(){ echo __METHOD__, PHP_EOL; } + static function __DIR__(){ echo __METHOD__, PHP_EOL; } + static function __NAMESPACE__(){ echo __METHOD__, PHP_EOL; } + static function __halt_compiler(){ echo __METHOD__, PHP_EOL; } } Obj::empty(); Obj::callable(); +Obj::class(); Obj::trait(); Obj::extends(); Obj::implements(); +Obj::static(); +Obj::abstract(); +Obj::final(); +Obj::public(); +Obj::protected(); +Obj::private(); Obj::const(); Obj::enddeclare(); Obj::endfor(); @@ -88,6 +107,7 @@ Obj::goto(); Obj::instanceof(); Obj::insteadof(); Obj::interface(); +Obj::namespace(); Obj::new(); Obj::or(); Obj::xor(); @@ -128,22 +148,33 @@ Obj::catch(); Obj::die(); Obj::self(); Obj::parent(); -Obj::public(); -Obj::protected(); -Obj::private(); -Obj::static(); -Obj::abstract(); -Obj::final(); -Obj::class(); +Obj::isset(); +Obj::unset(); +Obj::__CLASS__(); +Obj::__TRAIT__(); +Obj::__FUNCTION__(); +Obj::__METHOD__(); +Obj::__LINE__(); +Obj::__FILE__(); +Obj::__DIR__(); +Obj::__NAMESPACE__(); +Obj::__halt_compiler(); echo "\nDone\n"; --EXPECTF-- Obj::empty Obj::callable +Obj::class Obj::trait Obj::extends Obj::implements +Obj::static +Obj::abstract +Obj::final +Obj::public +Obj::protected +Obj::private Obj::const Obj::enddeclare Obj::endfor @@ -156,6 +187,7 @@ Obj::goto Obj::instanceof Obj::insteadof Obj::interface +Obj::namespace Obj::new Obj::or Obj::xor @@ -196,12 +228,16 @@ Obj::catch Obj::die Obj::self Obj::parent -Obj::public -Obj::protected -Obj::private -Obj::static -Obj::abstract -Obj::final -Obj::class +Obj::isset +Obj::unset +Obj::__CLASS__ +Obj::__TRAIT__ +Obj::__FUNCTION__ +Obj::__METHOD__ +Obj::__LINE__ +Obj::__FILE__ +Obj::__DIR__ +Obj::__NAMESPACE__ +Obj::__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_003.phpt b/Zend/tests/grammar/semi_reserved_003.phpt index fe2c44d..d638240 100644 --- a/Zend/tests/grammar/semi_reserved_003.phpt +++ b/Zend/tests/grammar/semi_reserved_003.phpt @@ -69,6 +69,18 @@ class Obj var $catch = 'catch'; var $die = 'die'; var $self = 'self'; + var $parent = 'parent'; + var $isset = 'isset'; + var $unset = 'unset'; + var $__CLASS__ = '__CLASS__'; + var $__TRAIT__ = '__TRAIT__'; + var $__FUNCTION__ = '__FUNCTION__'; + var $__METHOD__ = '__METHOD__'; + var $__LINE__ = '__LINE__'; + var $__FILE__ = '__FILE__'; + var $__DIR__ = '__DIR__'; + var $__NAMESPACE__ = '__NAMESPACE__'; + var $__halt_compiler = '__halt_compiler'; } $obj = new Obj; @@ -137,6 +149,18 @@ echo $obj->as, PHP_EOL; echo $obj->catch, PHP_EOL; echo $obj->die, PHP_EOL; echo $obj->self, PHP_EOL; +echo $obj->parent, PHP_EOL; +echo $obj->isset, PHP_EOL; +echo $obj->unset, PHP_EOL; +echo $obj->__CLASS__, PHP_EOL; +echo $obj->__TRAIT__, PHP_EOL; +echo $obj->__FUNCTION__, PHP_EOL; +echo $obj->__METHOD__, PHP_EOL; +echo $obj->__LINE__, PHP_EOL; +echo $obj->__FILE__, PHP_EOL; +echo $obj->__DIR__, PHP_EOL; +echo $obj->__NAMESPACE__, PHP_EOL; +echo $obj->__halt_compiler, PHP_EOL; echo "\nDone\n"; @@ -206,5 +230,17 @@ as catch die self +parent +isset +unset +__CLASS__ +__TRAIT__ +__FUNCTION__ +__METHOD__ +__LINE__ +__FILE__ +__DIR__ +__NAMESPACE__ +__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_004.phpt b/Zend/tests/grammar/semi_reserved_004.phpt index 40c5df1..3896387 100644 --- a/Zend/tests/grammar/semi_reserved_004.phpt +++ b/Zend/tests/grammar/semi_reserved_004.phpt @@ -70,6 +70,17 @@ class Obj static $die = 'die'; static $self = 'self'; static $parent = 'parent'; + static $isset = 'isset'; + static $unset = 'unset'; + static $__CLASS__ = '__CLASS__'; + static $__TRAIT__ = '__TRAIT__'; + static $__FUNCTION__ = '__FUNCTION__'; + static $__METHOD__ = '__METHOD__'; + static $__LINE__ = '__LINE__'; + static $__FILE__ = '__FILE__'; + static $__DIR__ = '__DIR__'; + static $__NAMESPACE__ = '__NAMESPACE__'; + static $__halt_compiler = '__halt_compiler'; } echo Obj::$empty, PHP_EOL; @@ -137,6 +148,17 @@ echo Obj::$catch, PHP_EOL; echo Obj::$die, PHP_EOL; echo Obj::$self, PHP_EOL; echo Obj::$parent, PHP_EOL; +echo Obj::$isset, PHP_EOL; +echo Obj::$unset, PHP_EOL; +echo Obj::$__CLASS__, PHP_EOL; +echo Obj::$__TRAIT__, PHP_EOL; +echo Obj::$__FUNCTION__, PHP_EOL; +echo Obj::$__METHOD__, PHP_EOL; +echo Obj::$__LINE__, PHP_EOL; +echo Obj::$__FILE__, PHP_EOL; +echo Obj::$__DIR__, PHP_EOL; +echo Obj::$__NAMESPACE__, PHP_EOL; +echo Obj::$__halt_compiler, PHP_EOL; echo "\nDone\n"; @@ -206,5 +228,16 @@ catch die self parent +isset +unset +__CLASS__ +__TRAIT__ +__FUNCTION__ +__METHOD__ +__LINE__ +__FILE__ +__DIR__ +__NAMESPACE__ +__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_005.phpt b/Zend/tests/grammar/semi_reserved_005.phpt index 3ad0830..b2b8471 100644 --- a/Zend/tests/grammar/semi_reserved_005.phpt +++ b/Zend/tests/grammar/semi_reserved_005.phpt @@ -10,6 +10,12 @@ class Obj const TRAIT = 'trait'; const EXTENDS = 'extends'; const IMPLEMENTS = 'implements'; + const STATIC = 'static'; + const ABSTRACT = 'abstract'; + const FINAL = 'final'; + const PUBLIC = 'public'; + const PROTECTED = 'protected'; + const PRIVATE = 'private'; const CONST = 'const'; const ENDDECLARE = 'enddeclare'; const ENDFOR = 'endfor'; @@ -63,12 +69,17 @@ class Obj const DIE = 'die'; const SELF = 'self'; const PARENT = 'parent'; - const PUBLIC = 'public'; - const PROTECTED = 'protected'; - const PRIVATE = 'private'; - const STATIC = 'static'; - const ABSTRACT = 'abstract'; - const FINAL = 'final'; + const ISSET = 'isset'; + const UNSET = 'unset'; + const __CLASS__ = '__CLASS__'; + const __TRAIT__ = '__TRAIT__'; + const __FUNCTION__ = '__FUNCTION__'; + const __METHOD__ = '__METHOD__'; + const __LINE__ = '__LINE__'; + const __FILE__ = '__FILE__'; + const __DIR__ = '__DIR__'; + const __NAMESPACE__ = '__NAMESPACE__'; + const __HALT_COMPILER = '__halt_compiler'; } echo Obj::EMPTY, PHP_EOL; @@ -76,6 +87,12 @@ echo Obj::CALLABLE, PHP_EOL; echo Obj::TRAIT, PHP_EOL; echo Obj::EXTENDS, PHP_EOL; echo Obj::IMPLEMENTS, PHP_EOL; +echo Obj::STATIC, PHP_EOL; +echo Obj::ABSTRACT, PHP_EOL; +echo Obj::FINAL, PHP_EOL; +echo Obj::PUBLIC, PHP_EOL; +echo Obj::PROTECTED, PHP_EOL; +echo Obj::PRIVATE, PHP_EOL; echo Obj::CONST, PHP_EOL; echo Obj::ENDDECLARE, PHP_EOL; echo Obj::ENDFOR, PHP_EOL; @@ -129,12 +146,17 @@ echo Obj::CATCH, PHP_EOL; echo Obj::DIE, PHP_EOL; echo Obj::SELF, PHP_EOL; echo Obj::PARENT, PHP_EOL; -echo Obj::PUBLIC, PHP_EOL; -echo Obj::PROTECTED, PHP_EOL; -echo Obj::PRIVATE, PHP_EOL; -echo Obj::STATIC, PHP_EOL; -echo Obj::ABSTRACT, PHP_EOL; -echo Obj::FINAL, PHP_EOL; +echo Obj::ISSET, PHP_EOL; +echo Obj::UNSET, PHP_EOL; +echo Obj::__CLASS__, PHP_EOL; +echo Obj::__TRAIT__, PHP_EOL; +echo Obj::__FUNCTION__, PHP_EOL; +echo Obj::__METHOD__, PHP_EOL; +echo Obj::__LINE__, PHP_EOL; +echo Obj::__FILE__, PHP_EOL; +echo Obj::__DIR__, PHP_EOL; +echo Obj::__NAMESPACE__, PHP_EOL; +echo Obj::__HALT_COMPILER, PHP_EOL; echo "\nDone\n"; @@ -144,6 +166,12 @@ callable trait extends implements +static +abstract +final +public +protected +private const enddeclare endfor @@ -197,11 +225,16 @@ catch die self parent -public -protected -private -static -abstract -final +isset +unset +__CLASS__ +__TRAIT__ +__FUNCTION__ +__METHOD__ +__LINE__ +__FILE__ +__DIR__ +__NAMESPACE__ +__halt_compiler Done diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 87365a1..c52c252 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -272,6 +272,7 @@ reserved_non_modifiers: | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS + | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER ; semi_reserved: diff --git a/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt b/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt index eb0e300..fc166e2 100644 --- a/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt +++ b/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt @@ -11,6 +11,7 @@ $x->$continue; X::continue(); $x->continue(); X::class; +$x->__halt_compiler(); class X { const CONTINUE = 1; @@ -60,22 +61,28 @@ L7: T_STRING X L7: T_DOUBLE_COLON :: L7: T_STRING class ; -L9: T_CLASS class -L9: T_STRING X +L8: T_VARIABLE $x +L8: T_OBJECT_OPERATOR -> +L8: T_STRING __halt_compiler +( +) +; +L10: T_CLASS class +L10: T_STRING X { -L10: T_CONST const -L10: T_STRING CONTINUE +L11: T_CONST const +L11: T_STRING CONTINUE = -L10: T_LNUMBER 1 +L11: T_LNUMBER 1 ; -L11: T_PUBLIC public -L11: T_VARIABLE $x +L12: T_PUBLIC public +L12: T_VARIABLE $x = -L11: T_STRING self -L11: T_DOUBLE_COLON :: -L11: T_STRING CONTINUE +L12: T_STRING self +L12: T_DOUBLE_COLON :: +L12: T_STRING CONTINUE + -L11: T_LNUMBER 1 +L12: T_LNUMBER 1 ; } -Done +Done \ No newline at end of file
diff --git a/Zend/tests/grammar/semi_reserved_001.phpt b/Zend/tests/grammar/semi_reserved_001.phpt index c6bfd46..26b3638 100644 --- a/Zend/tests/grammar/semi_reserved_001.phpt +++ b/Zend/tests/grammar/semi_reserved_001.phpt @@ -7,9 +7,16 @@ class Obj { function empty(){ echo __METHOD__, PHP_EOL; } function callable(){ echo __METHOD__, PHP_EOL; } + function class(){ echo __METHOD__, PHP_EOL; } function trait(){ echo __METHOD__, PHP_EOL; } function extends(){ echo __METHOD__, PHP_EOL; } function implements(){ echo __METHOD__, PHP_EOL; } + function static(){ echo __METHOD__, PHP_EOL; } + function abstract(){ echo __METHOD__, PHP_EOL; } + function final(){ echo __METHOD__, PHP_EOL; } + function public(){ echo __METHOD__, PHP_EOL; } + function protected(){ echo __METHOD__, PHP_EOL; } + function private(){ echo __METHOD__, PHP_EOL; } function const(){ echo __METHOD__, PHP_EOL; } function enddeclare(){ echo __METHOD__, PHP_EOL; } function endfor(){ echo __METHOD__, PHP_EOL; } @@ -22,6 +29,7 @@ class Obj function instanceof(){ echo __METHOD__, PHP_EOL; } function insteadof(){ echo __METHOD__, PHP_EOL; } function interface(){ echo __METHOD__, PHP_EOL; } + function namespace(){ echo __METHOD__, PHP_EOL; } function new(){ echo __METHOD__, PHP_EOL; } function or(){ echo __METHOD__, PHP_EOL; } function xor(){ echo __METHOD__, PHP_EOL; } @@ -62,22 +70,33 @@ class Obj function die(){ echo __METHOD__, PHP_EOL; } function self(){ echo __METHOD__, PHP_EOL; } function parent(){ echo __METHOD__, PHP_EOL; } - function public(){ echo __METHOD__, PHP_EOL; } - function protected(){ echo __METHOD__, PHP_EOL; } - function private(){ echo __METHOD__, PHP_EOL; } - function static(){ echo __METHOD__, PHP_EOL; } - function abstract(){ echo __METHOD__, PHP_EOL; } - function final(){ echo __METHOD__, PHP_EOL; } - function class(){ echo __METHOD__, PHP_EOL; } + function isset(){ echo __METHOD__, PHP_EOL; } + function unset(){ echo __METHOD__, PHP_EOL; } + function __CLASS__(){ echo __METHOD__, PHP_EOL; } + function __TRAIT__(){ echo __METHOD__, PHP_EOL; } + function __FUNCTION__(){ echo __METHOD__, PHP_EOL; } + function __METHOD__(){ echo __METHOD__, PHP_EOL; } + function __LINE__(){ echo __METHOD__, PHP_EOL; } + function __FILE__(){ echo __METHOD__, PHP_EOL; } + function __DIR__(){ echo __METHOD__, PHP_EOL; } + function __NAMESPACE__(){ echo __METHOD__, PHP_EOL; } + function __halt_compiler(){ echo __METHOD__, PHP_EOL; } } $obj = new Obj; $obj->empty(); $obj->callable(); +$obj->class(); $obj->trait(); $obj->extends(); $obj->implements(); +$obj->static(); +$obj->abstract(); +$obj->final(); +$obj->public(); +$obj->protected(); +$obj->private(); $obj->const(); $obj->enddeclare(); $obj->endfor(); @@ -90,6 +109,7 @@ $obj->goto(); $obj->instanceof(); $obj->insteadof(); $obj->interface(); +$obj->namespace(); $obj->new(); $obj->or(); $obj->xor(); @@ -130,22 +150,33 @@ $obj->catch(); $obj->die(); $obj->self(); $obj->parent(); -$obj->public(); -$obj->protected(); -$obj->private(); -$obj->static(); -$obj->abstract(); -$obj->final(); -$obj->class(); +$obj->isset(); +$obj->unset(); +$obj->__CLASS__(); +$obj->__TRAIT__(); +$obj->__FUNCTION__(); +$obj->__METHOD__(); +$obj->__LINE__(); +$obj->__FILE__(); +$obj->__DIR__(); +$obj->__NAMESPACE__(); +$obj->__halt_compiler(); echo "\nDone\n"; --EXPECTF-- Obj::empty Obj::callable +Obj::class Obj::trait Obj::extends Obj::implements +Obj::static +Obj::abstract +Obj::final +Obj::public +Obj::protected +Obj::private Obj::const Obj::enddeclare Obj::endfor @@ -158,6 +189,7 @@ Obj::goto Obj::instanceof Obj::insteadof Obj::interface +Obj::namespace Obj::new Obj::or Obj::xor @@ -198,12 +230,16 @@ Obj::catch Obj::die Obj::self Obj::parent -Obj::public -Obj::protected -Obj::private -Obj::static -Obj::abstract -Obj::final -Obj::class +Obj::isset +Obj::unset +Obj::__CLASS__ +Obj::__TRAIT__ +Obj::__FUNCTION__ +Obj::__METHOD__ +Obj::__LINE__ +Obj::__FILE__ +Obj::__DIR__ +Obj::__NAMESPACE__ +Obj::__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_002.phpt b/Zend/tests/grammar/semi_reserved_002.phpt index b2c2002..483ac8c 100644 --- a/Zend/tests/grammar/semi_reserved_002.phpt +++ b/Zend/tests/grammar/semi_reserved_002.phpt @@ -7,9 +7,16 @@ class Obj { static function empty(){ echo __METHOD__, PHP_EOL; } static function callable(){ echo __METHOD__, PHP_EOL; } + static function class(){ echo __METHOD__, PHP_EOL; } static function trait(){ echo __METHOD__, PHP_EOL; } static function extends(){ echo __METHOD__, PHP_EOL; } static function implements(){ echo __METHOD__, PHP_EOL; } + static function static(){ echo __METHOD__, PHP_EOL; } + static function abstract(){ echo __METHOD__, PHP_EOL; } + static function final(){ echo __METHOD__, PHP_EOL; } + static function public(){ echo __METHOD__, PHP_EOL; } + static function protected(){ echo __METHOD__, PHP_EOL; } + static function private(){ echo __METHOD__, PHP_EOL; } static function const(){ echo __METHOD__, PHP_EOL; } static function enddeclare(){ echo __METHOD__, PHP_EOL; } static function endfor(){ echo __METHOD__, PHP_EOL; } @@ -22,6 +29,7 @@ class Obj static function instanceof(){ echo __METHOD__, PHP_EOL; } static function insteadof(){ echo __METHOD__, PHP_EOL; } static function interface(){ echo __METHOD__, PHP_EOL; } + static function namespace(){ echo __METHOD__, PHP_EOL; } static function new(){ echo __METHOD__, PHP_EOL; } static function or(){ echo __METHOD__, PHP_EOL; } static function xor(){ echo __METHOD__, PHP_EOL; } @@ -62,20 +70,31 @@ class Obj static function die(){ echo __METHOD__, PHP_EOL; } static function self(){ echo __METHOD__, PHP_EOL; } static function parent(){ echo __METHOD__, PHP_EOL; } - static function public(){ echo __METHOD__, PHP_EOL; } - static function protected(){ echo __METHOD__, PHP_EOL; } - static function private(){ echo __METHOD__, PHP_EOL; } - static function static(){ echo __METHOD__, PHP_EOL; } - static function abstract(){ echo __METHOD__, PHP_EOL; } - static function final(){ echo __METHOD__, PHP_EOL; } - static function class(){ echo __METHOD__, PHP_EOL; } + static function isset(){ echo __METHOD__, PHP_EOL; } + static function unset(){ echo __METHOD__, PHP_EOL; } + static function __CLASS__(){ echo __METHOD__, PHP_EOL; } + static function __TRAIT__(){ echo __METHOD__, PHP_EOL; } + static function __FUNCTION__(){ echo __METHOD__, PHP_EOL; } + static function __METHOD__(){ echo __METHOD__, PHP_EOL; } + static function __LINE__(){ echo __METHOD__, PHP_EOL; } + static function __FILE__(){ echo __METHOD__, PHP_EOL; } + static function __DIR__(){ echo __METHOD__, PHP_EOL; } + static function __NAMESPACE__(){ echo __METHOD__, PHP_EOL; } + static function __halt_compiler(){ echo __METHOD__, PHP_EOL; } } Obj::empty(); Obj::callable(); +Obj::class(); Obj::trait(); Obj::extends(); Obj::implements(); +Obj::static(); +Obj::abstract(); +Obj::final(); +Obj::public(); +Obj::protected(); +Obj::private(); Obj::const(); Obj::enddeclare(); Obj::endfor(); @@ -88,6 +107,7 @@ Obj::goto(); Obj::instanceof(); Obj::insteadof(); Obj::interface(); +Obj::namespace(); Obj::new(); Obj::or(); Obj::xor(); @@ -128,22 +148,33 @@ Obj::catch(); Obj::die(); Obj::self(); Obj::parent(); -Obj::public(); -Obj::protected(); -Obj::private(); -Obj::static(); -Obj::abstract(); -Obj::final(); -Obj::class(); +Obj::isset(); +Obj::unset(); +Obj::__CLASS__(); +Obj::__TRAIT__(); +Obj::__FUNCTION__(); +Obj::__METHOD__(); +Obj::__LINE__(); +Obj::__FILE__(); +Obj::__DIR__(); +Obj::__NAMESPACE__(); +Obj::__halt_compiler(); echo "\nDone\n"; --EXPECTF-- Obj::empty Obj::callable +Obj::class Obj::trait Obj::extends Obj::implements +Obj::static +Obj::abstract +Obj::final +Obj::public +Obj::protected +Obj::private Obj::const Obj::enddeclare Obj::endfor @@ -156,6 +187,7 @@ Obj::goto Obj::instanceof Obj::insteadof Obj::interface +Obj::namespace Obj::new Obj::or Obj::xor @@ -196,12 +228,16 @@ Obj::catch Obj::die Obj::self Obj::parent -Obj::public -Obj::protected -Obj::private -Obj::static -Obj::abstract -Obj::final -Obj::class +Obj::isset +Obj::unset +Obj::__CLASS__ +Obj::__TRAIT__ +Obj::__FUNCTION__ +Obj::__METHOD__ +Obj::__LINE__ +Obj::__FILE__ +Obj::__DIR__ +Obj::__NAMESPACE__ +Obj::__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_003.phpt b/Zend/tests/grammar/semi_reserved_003.phpt index fe2c44d..d638240 100644 --- a/Zend/tests/grammar/semi_reserved_003.phpt +++ b/Zend/tests/grammar/semi_reserved_003.phpt @@ -69,6 +69,18 @@ class Obj var $catch = 'catch'; var $die = 'die'; var $self = 'self'; + var $parent = 'parent'; + var $isset = 'isset'; + var $unset = 'unset'; + var $__CLASS__ = '__CLASS__'; + var $__TRAIT__ = '__TRAIT__'; + var $__FUNCTION__ = '__FUNCTION__'; + var $__METHOD__ = '__METHOD__'; + var $__LINE__ = '__LINE__'; + var $__FILE__ = '__FILE__'; + var $__DIR__ = '__DIR__'; + var $__NAMESPACE__ = '__NAMESPACE__'; + var $__halt_compiler = '__halt_compiler'; } $obj = new Obj; @@ -137,6 +149,18 @@ echo $obj->as, PHP_EOL; echo $obj->catch, PHP_EOL; echo $obj->die, PHP_EOL; echo $obj->self, PHP_EOL; +echo $obj->parent, PHP_EOL; +echo $obj->isset, PHP_EOL; +echo $obj->unset, PHP_EOL; +echo $obj->__CLASS__, PHP_EOL; +echo $obj->__TRAIT__, PHP_EOL; +echo $obj->__FUNCTION__, PHP_EOL; +echo $obj->__METHOD__, PHP_EOL; +echo $obj->__LINE__, PHP_EOL; +echo $obj->__FILE__, PHP_EOL; +echo $obj->__DIR__, PHP_EOL; +echo $obj->__NAMESPACE__, PHP_EOL; +echo $obj->__halt_compiler, PHP_EOL; echo "\nDone\n"; @@ -206,5 +230,17 @@ as catch die self +parent +isset +unset +__CLASS__ +__TRAIT__ +__FUNCTION__ +__METHOD__ +__LINE__ +__FILE__ +__DIR__ +__NAMESPACE__ +__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_004.phpt b/Zend/tests/grammar/semi_reserved_004.phpt index 40c5df1..3896387 100644 --- a/Zend/tests/grammar/semi_reserved_004.phpt +++ b/Zend/tests/grammar/semi_reserved_004.phpt @@ -70,6 +70,17 @@ class Obj static $die = 'die'; static $self = 'self'; static $parent = 'parent'; + static $isset = 'isset'; + static $unset = 'unset'; + static $__CLASS__ = '__CLASS__'; + static $__TRAIT__ = '__TRAIT__'; + static $__FUNCTION__ = '__FUNCTION__'; + static $__METHOD__ = '__METHOD__'; + static $__LINE__ = '__LINE__'; + static $__FILE__ = '__FILE__'; + static $__DIR__ = '__DIR__'; + static $__NAMESPACE__ = '__NAMESPACE__'; + static $__halt_compiler = '__halt_compiler'; } echo Obj::$empty, PHP_EOL; @@ -137,6 +148,17 @@ echo Obj::$catch, PHP_EOL; echo Obj::$die, PHP_EOL; echo Obj::$self, PHP_EOL; echo Obj::$parent, PHP_EOL; +echo Obj::$isset, PHP_EOL; +echo Obj::$unset, PHP_EOL; +echo Obj::$__CLASS__, PHP_EOL; +echo Obj::$__TRAIT__, PHP_EOL; +echo Obj::$__FUNCTION__, PHP_EOL; +echo Obj::$__METHOD__, PHP_EOL; +echo Obj::$__LINE__, PHP_EOL; +echo Obj::$__FILE__, PHP_EOL; +echo Obj::$__DIR__, PHP_EOL; +echo Obj::$__NAMESPACE__, PHP_EOL; +echo Obj::$__halt_compiler, PHP_EOL; echo "\nDone\n"; @@ -206,5 +228,16 @@ catch die self parent +isset +unset +__CLASS__ +__TRAIT__ +__FUNCTION__ +__METHOD__ +__LINE__ +__FILE__ +__DIR__ +__NAMESPACE__ +__halt_compiler Done diff --git a/Zend/tests/grammar/semi_reserved_005.phpt b/Zend/tests/grammar/semi_reserved_005.phpt index 3ad0830..b2b8471 100644 --- a/Zend/tests/grammar/semi_reserved_005.phpt +++ b/Zend/tests/grammar/semi_reserved_005.phpt @@ -10,6 +10,12 @@ class Obj const TRAIT = 'trait'; const EXTENDS = 'extends'; const IMPLEMENTS = 'implements'; + const STATIC = 'static'; + const ABSTRACT = 'abstract'; + const FINAL = 'final'; + const PUBLIC = 'public'; + const PROTECTED = 'protected'; + const PRIVATE = 'private'; const CONST = 'const'; const ENDDECLARE = 'enddeclare'; const ENDFOR = 'endfor'; @@ -63,12 +69,17 @@ class Obj const DIE = 'die'; const SELF = 'self'; const PARENT = 'parent'; - const PUBLIC = 'public'; - const PROTECTED = 'protected'; - const PRIVATE = 'private'; - const STATIC = 'static'; - const ABSTRACT = 'abstract'; - const FINAL = 'final'; + const ISSET = 'isset'; + const UNSET = 'unset'; + const __CLASS__ = '__CLASS__'; + const __TRAIT__ = '__TRAIT__'; + const __FUNCTION__ = '__FUNCTION__'; + const __METHOD__ = '__METHOD__'; + const __LINE__ = '__LINE__'; + const __FILE__ = '__FILE__'; + const __DIR__ = '__DIR__'; + const __NAMESPACE__ = '__NAMESPACE__'; + const __HALT_COMPILER = '__halt_compiler'; } echo Obj::EMPTY, PHP_EOL; @@ -76,6 +87,12 @@ echo Obj::CALLABLE, PHP_EOL; echo Obj::TRAIT, PHP_EOL; echo Obj::EXTENDS, PHP_EOL; echo Obj::IMPLEMENTS, PHP_EOL; +echo Obj::STATIC, PHP_EOL; +echo Obj::ABSTRACT, PHP_EOL; +echo Obj::FINAL, PHP_EOL; +echo Obj::PUBLIC, PHP_EOL; +echo Obj::PROTECTED, PHP_EOL; +echo Obj::PRIVATE, PHP_EOL; echo Obj::CONST, PHP_EOL; echo Obj::ENDDECLARE, PHP_EOL; echo Obj::ENDFOR, PHP_EOL; @@ -129,12 +146,17 @@ echo Obj::CATCH, PHP_EOL; echo Obj::DIE, PHP_EOL; echo Obj::SELF, PHP_EOL; echo Obj::PARENT, PHP_EOL; -echo Obj::PUBLIC, PHP_EOL; -echo Obj::PROTECTED, PHP_EOL; -echo Obj::PRIVATE, PHP_EOL; -echo Obj::STATIC, PHP_EOL; -echo Obj::ABSTRACT, PHP_EOL; -echo Obj::FINAL, PHP_EOL; +echo Obj::ISSET, PHP_EOL; +echo Obj::UNSET, PHP_EOL; +echo Obj::__CLASS__, PHP_EOL; +echo Obj::__TRAIT__, PHP_EOL; +echo Obj::__FUNCTION__, PHP_EOL; +echo Obj::__METHOD__, PHP_EOL; +echo Obj::__LINE__, PHP_EOL; +echo Obj::__FILE__, PHP_EOL; +echo Obj::__DIR__, PHP_EOL; +echo Obj::__NAMESPACE__, PHP_EOL; +echo Obj::__HALT_COMPILER, PHP_EOL; echo "\nDone\n"; @@ -144,6 +166,12 @@ callable trait extends implements +static +abstract +final +public +protected +private const enddeclare endfor @@ -197,11 +225,16 @@ catch die self parent -public -protected -private -static -abstract -final +isset +unset +__CLASS__ +__TRAIT__ +__FUNCTION__ +__METHOD__ +__LINE__ +__FILE__ +__DIR__ +__NAMESPACE__ +__halt_compiler Done diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 87365a1..c52c252 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -272,6 +272,7 @@ reserved_non_modifiers: | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS + | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER ; semi_reserved: diff --git a/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt b/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt index eb0e300..fc166e2 100644 --- a/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt +++ b/ext/tokenizer/tests/token_get_all_TOKEN_PARSE_001.phpt @@ -11,6 +11,7 @@ $x->$continue; X::continue(); $x->continue(); X::class; +$x->__halt_compiler(); class X { const CONTINUE = 1; @@ -60,22 +61,28 @@ L7: T_STRING X L7: T_DOUBLE_COLON :: L7: T_STRING class ; -L9: T_CLASS class -L9: T_STRING X +L8: T_VARIABLE $x +L8: T_OBJECT_OPERATOR -> +L8: T_STRING __halt_compiler +( +) +; +L10: T_CLASS class +L10: T_STRING X { -L10: T_CONST const -L10: T_STRING CONTINUE +L11: T_CONST const +L11: T_STRING CONTINUE = -L10: T_LNUMBER 1 +L11: T_LNUMBER 1 ; -L11: T_PUBLIC public -L11: T_VARIABLE $x +L12: T_PUBLIC public +L12: T_VARIABLE $x = -L11: T_STRING self -L11: T_DOUBLE_COLON :: -L11: T_STRING CONTINUE +L12: T_STRING self +L12: T_DOUBLE_COLON :: +L12: T_STRING CONTINUE + -L11: T_LNUMBER 1 +L12: T_LNUMBER 1 ; } -Done +Done \ No newline at end of file