com php-langspec: Make switch-statement definition more precise: spec/11-statements.md spec/19-grammar.md
[email protected] (Nikita Popov) Wed, 09 Nov 2016 20:43:55 +0000
| Newsgroups | php.standards.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: a050aef11c681bbf53c0f8d708e10dc12a107e4a=0AAuthor: Sara Itani= <[email protected]> Mon, 7 Nov 2016 18:01:56 -0800=0ACommitter:= Nikita Popov <[email protected]> Wed, 9 Nov 2016 21:43:55 +0100=0AParents= : 676257512edc3bd92a78300105d9f2fef569b864=0ABranches: master=0A=0ALink:= http://git.php.net/?p=3Dphp-langspec.git;a=3Dcommitdiff;h=3Da050aef1= 1c681bbf53c0f8d708e10dc12a107e4a=0A=0ALog:=0AMake switch-statement definiti= on more precise=0A=0A`case-statement` and `default-statement` usages must o= ccur inside a `switch-statement`. Update the spec to represent this behavio= r more precisely in the grammar, rather than as an additional constraint.= =0A=0AChanged paths:=0A M spec/11-statements.md=0A M spec/19-grammar.md= =0A=0A=0ADiff:=0Adiff --git a/spec/11-statements.md b/spec/11-statements.md= =0Aindex 3655731..7a969f2 100644=0A--- a/spec/11-statements.md=0A+++ b/spec= /11-statements.md=0A@@ -8,7 +8,7 @@=0A =0A <i>statement:</i>=0A <i>co= mpound-statement</i>=0A- <i>labeled-statement</i>=0A+ <i>named-label-= statement</i>=0A <i>expression-statement</i>=0A <i>selection-statem= ent</i>=0A <i>iteration-statement</i>=0A@@ -91,23 +91,8 @@ while (condi= tion)=0A **Syntax**=0A =0A <pre>=0A- <i>labeled-statement:</i>=0A- <i>n= amed-label-statement</i>=0A- <i>case-statement</i>=0A- <i>default-sta= tement</i>=0A-=0A <i>named-label-statement:</i>=0A <i>name</i> : <i= >statement</i>=0A-=0A- <i>case-statement:</i>=0A- case <i>expression = case-default-label-terminator statement</i>=0A-=0A- <i>default-stateme= nt:</i>=0A- default <i>case-default-label-terminator statement</i>=0A= -=0A- <i>case-default-label-terminator:</i>=0A- :=0A- ;=0A </pre>=0A= =0A **Defined elsewhere**=0A@@ -122,8 +107,6 @@ A named label can be used = as the target of a [`goto` statement](#the-goto-statem=0A =0A Named labels = must be unique within a function.=0A =0A-A case and default labeled stateme= nts must only occur inside a [`switch` statement](#the-switch-statement).= =0A-=0A **Semantics**=0A =0A Any statement may be preceded by a token seque= nce that declares a name=0A@@ -308,13 +291,21 @@ else // this else does go= with the outer if=0A <i>case-statements:</i>=0A <i>case-statement</i= > <i>statement-list<sub>opt</sub></i> <i>case-statements<sub>opt</sub></i>= =0A <i>default-statement</i> <i>statement-list<sub>opt</sub></i> <i>cas= e-statements<sub>opt</sub></i>=0A+=0A+ <i>case-statement:</i>=0A+ case = <i>expression case-default-label-terminator statement</i>=0A+=0A+ <i= >default-statement:</i>=0A+ default <i>case-default-label-terminator = statement</i>=0A+=0A+ <i>case-default-label-terminator:</i>=0A+ :=0A+ = ;=0A </pre>=0A =0A **Defined elsewhere**=0A =0A * [*expression*](10-expre= ssions.md#general-6)=0A-* [*case-statement*](#labeled-statements)=0A-* [*de= fault-statement*](#labeled-statements)=0A * [*compound-statement*](#compoun= d-statements)=0A * [*statement-list*](#compound-statements)=0A =0Adiff --gi= t a/spec/19-grammar.md b/spec/19-grammar.md=0Aindex d616407..1acdd67 100644= =0A--- a/spec/19-grammar.md=0A+++ b/spec/19-grammar.md=0A@@ -824,7 +824,7 @= @ The grammar notation is described in [Grammars section](09-lexical-struct= ure.md#=0A =0A <i>statement:</i>=0A <i>compound-statement</i>=0A- = <i>labeled-statement</i>=0A+ <i>named-label-statement</i>=0A <i>expr= ession-statement</i>=0A <i>selection-statement</i>=0A <i>iteration-= statement</i>=0A@@ -856,23 +856,8 @@ The grammar notation is described in [= Grammars section](09-lexical-structure.md#=0A ####Labeled Statements=0A =0A= <pre>=0A- <i>labeled-statement:</i>=0A- <i>named-label-statement</i>= =0A- <i>case-statement</i>=0A- <i>default-statement</i>=0A-=0A <i>n= amed-label-statement:</i>=0A <i>name</i> : <i>statement</i>=0A-=0A- = <i>case-statement:</i>=0A- case <i>expression case-default-label-ter= minator statement</i>=0A-=0A- <i>default-statement:</i>=0A- default = <i>case-default-label-terminator statement</i>=0A-=0A- <i>case-default-l= abel-terminator:</i>=0A- :=0A- ;=0A </pre>=0A =0A ####Expression Stat= ements=0A@@ -917,6 +902,15 @@ The grammar notation is described in [Grammar= s section](09-lexical-structure.md#=0A <i>case-statement</i> <i>stateme= nt-list<sub>opt</sub></i> <i>case-statements<sub>opt</sub></i>=0A <i>de= fault-statement</i> <i>statement-list<sub>opt</sub></i> <i>case-statements<= sub>opt</sub></i>=0A =0A+ <i>case-statement:</i>=0A+ case <i>expressi= on case-default-label-terminator statement</i>=0A+=0A+ <i>default-stat= ement:</i>=0A+ default <i>case-default-label-terminator statement</i>= =0A+=0A+ <i>case-default-label-terminator:</i>=0A+ :=0A+ ;=0A </pre>= =0A =0A ####Iteration Statements=0A