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