[php-langspec] master: Add grammar for readonly classes
| From: | Nathanael Esayeas via Nikita Popov | Date: | Thu, 07 Mar 2024 21:22:16 +0000 |
| Subject: | [php-langspec] master: Add grammar for readonly classes | ||
| Groups: | php.standards.cvs | ||
| Request: | Send a blank email to standards--cvs+get-452@lists.php.net to get a copy of this message | ||
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 <nathanael.esayeas@protonmail.com>
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>