[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>