[STANDARDS-VCS] [php-langspec] master: Add grammar for readonly classes
[email protected] (Nathanael Esayeas via Nikita Popov) Thu, 7 Mar 2024 21:22:16 +0000
| Newsgroups | php.standards.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: Nathanael Esayeas (ghostwriter) Committer: Nikita Popov (nikic) Date: 2024-03-07T22:08:27+01:00 Commit: https://github.com/php/php-langspec/commit/ca697b43031efd70b5306d29b74e1190e7eacac8 Raw diff: https://github.com/php/php-langspec/commit/ca697b43031efd70b5306d29b74e1190e7eacac8.diff Add grammar for readonly classes Signed-off-by: Nathanael Esayeas <[email protected]> Changed paths: M spec/14-classes.md M spec/19-grammar.md Diff: diff --git a/spec/14-classes.md b/spec/14-classes.md index e480e4d..6a8639d 100644 --- a/spec/14-classes.md +++ b/spec/14-classes.md @@ -60,11 +60,16 @@ While PHP supports *anonymous class types*, such a type cannot be declared using <!-- GRAMMAR class-declaration: - class-modifier? 'class' name class-base-clause? class-interface-clause? '{' class-member-declarations? '}' + class-modifiers? 'class' name class-base-clause? class-interface-clause? '{' class-member-declarations? '}' + +class-modifiers: + class-modifier + class-modifiers class-modifier class-modifier: 'abstract' 'final' + 'readonly' class-base-clause: 'extends' qualified-name @@ -76,11 +81,16 @@ class-interface-clause: <pre> <i id="grammar-class-declaration">class-declaration:</i> - <i><a href="#grammar-class-modifier">class-modifier</a></i><sub>opt</sub> class <i><a href="09-lexical-structure.md#grammar-name">name</a></i> <i><a href="#grammar-class-base-clause">class-base-clause</a></i><sub>opt</sub> <i><a href="#grammar-class-interface-clause">class-interface-clause</a></i><sub>opt</sub> { <i><a href="#grammar-class-member-declarations">class-member-declarations</a></i><sub>opt</sub> } + <i><a href="#grammar-class-modifiers">class-modifiers</a></i><sub>opt</sub> class <i><a href="09-lexical-structure.md#grammar-name">name</a></i> <i><a href="#grammar-class-base-clause">class-base-clause</a></i><sub>opt</sub> <i><a href="#grammar-class-interface-clause">class-interface-clause</a></i><sub>opt</sub> { <i><a href="#grammar-class-member-declarations">class-member-declarations</a></i><sub>opt</sub> } + +<i id="grammar-class-modifiers">class-modifiers:</i> + <i><a href="#grammar-class-modifier">class-modifier</a></i> + <i><a href="#grammar-class-modifiers">class-modifiers</a></i> <i><a href="#grammar-class-modifier">class-modifier</a></i> <i id="grammar-class-modifier">class-modifier:</i> abstract final + readonly <i id="grammar-class-base-clause">class-base-clause:</i> extends <i><a href="09-lexical-structure.md#grammar-qualified-name">qualified-name</a></i> diff --git a/spec/19-grammar.md b/spec/19-grammar.md index 06f6260..ae4117b 100644 --- a/spec/19-grammar.md +++ b/spec/19-grammar.md @@ -964,11 +964,16 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md# <pre> <i id="grammar-class-declaration">class-declaration:</i> - <i><a href="#grammar-class-modifier">class-modifier</a></i><sub>opt</sub> class <i><a href="#grammar-name">name</a></i> <i><a href="#grammar-class-base-clause">class-base-clause</a></i><sub>opt</sub> <i><a href="#grammar-class-interface-clause">class-interface-clause</a></i><sub>opt</sub> { <i><a href="#grammar-class-member-declarations">class-member-declarations</a></i><sub>opt</sub> } + <i><a href="#grammar-class-modifiers">class-modifiers</a></i><sub>opt</sub> class <i><a href="#grammar-name">name</a></i> <i><a href="#grammar-class-base-clause">class-base-clause</a></i><sub>opt</sub> <i><a href="#grammar-class-interface-clause">class-interface-clause</a></i><sub>opt</sub> { <i><a href="#grammar-class-member-declarations">class-member-declarations</a></i><sub>opt</sub> } + +<i id="grammar-class-modifiers">class-modifiers:</i> + <i><a href="#grammar-class-modifier">class-modifier</a></i> + <i><a href="#grammar-class-modifiers">class-modifiers</a></i> <i><a href="#grammar-class-modifier">class-modifier</a></i> <i id="grammar-class-modifier">class-modifier:</i> abstract final + readonly <i id="grammar-class-base-clause">class-base-clause:</i> extends <i><a href="#grammar-qualified-name">qualified-name</a></i>