com php-langspec: Fix precedence of instanceof/logical not: spec/00-specification-for-php.md spec/10-expressions.md spec/19-grammar.md

[email protected] (Nikita Popov) Tue, 19 Sep 2017 07:31:35 +0000
Newsgroups php.standards.cvs
Message-ID <[email protected]>
Commit:    714f68927038ece7e8f5f0a2bbce04a8c600eb25=0AAuthor:    Nikita Pop=
ov <[email protected]>         Tue, 19 Sep 2017 09:31:35 +0200=0AParents:   7d6=
ae475928a67c706aeaec8c131bed9567aafed=0ABranches:  master=0A=0ALink:       =
http://git.php.net/?p=3Dphp-langspec.git;a=3Dcommitdiff;h=3D714f68927038ece=
7e8f5f0a2bbce04a8c600eb25=0A=0ALog:=0AFix precedence of instanceof/logical =
not=0A=0AFixes #189.=0A=0ABugs:=0Ahttps://bugs.php.net/189=0A=0AChanged pat=
hs:=0A  M  spec/00-specification-for-php.md=0A  M  spec/10-expressions.md=
=0A  M  spec/19-grammar.md=0A=0A=0ADiff:=0Adiff --git a/spec/00-specificati=
on-for-php.md b/spec/00-specification-for-php.md=0Aindex fb7fe9b..3fb4db0 1=
00644=0A--- a/spec/00-specification-for-php.md=0A+++ b/spec/00-specificatio=
n-for-php.md=0A@@ -134,6 +134,7 @@ is distributed without any warranty.=0A =
    - [Shell Command Operator](10-expressions.md#shell-command-operator)=0A=
     - [Cast Operator](10-expressions.md#cast-operator)=0A   - [`instanceof=
` Operator](10-expressions.md#instanceof-operator)=0A+  - [Logical NOT Oper=
ator](10-expressions.md#logical-not-operator)=0A   - [Multiplicative Operat=
ors](10-expressions.md#multiplicative-operators)=0A   - [Additive Operators=
](10-expressions.md#additive-operators)=0A   - [Bitwise Shift Operators](10=
-expressions.md#bitwise-shift-operators)=0Adiff --git a/spec/10-expressions=
.md b/spec/10-expressions.md=0Aindex cfae203..f854436 100644=0A--- a/spec/1=
0-expressions.md=0A+++ b/spec/10-expressions.md=0A@@ -1993,7 +1993,7 @@ una=
ry-op-expression:=0A   unary-operator unary-expression=0A =0A unary-operato=
r: one of=0A-  '+' '-' '!' '~'=0A+  '+' '-' '~'=0A -->=0A =0A <pre>=0A@@ -2=
001,7 +2001,7 @@ unary-operator: one of=0A    <i><a href=3D"#grammar-unary-=
operator">unary-operator</a></i>   <i><a href=3D"#grammar-unary-expression"=
>unary-expression</a></i>=0A =0A <i id=3D"grammar-unary-operator">unary-ope=
rator: one of</i>=0A-   +   -   !   ~=0A+   +   -   ~=0A </pre>=0A =0A **Co=
nstraints**=0A@@ -2013,10 +2013,6 @@ an object supporting `~`.=0A =0A **Sem=
antics**=0A =0A-For a unary `!` operator the type of the result is `bool`.=
=0A-The value of the operand is [converted to type `bool`](08-conversions.m=
d#converting-to-boolean-type)=0A-and if it is `TRUE` then the of the operat=
or result is `FALSE`, and the result is `TRUE` otherwise.=0A-=0A *Arithmeti=
c Operands*=0A =0A For a unary `+` operator used with an arithmetic operand=
, the type and=0A@@ -2073,8 +2069,6 @@ and for `+` and `-` the object is [c=
onverted to `int`](08-conversions.md#convert=0A ```PHP=0A $v =3D +10;=0A if=
 ($v1 > -5) // ...=0A-$t =3D TRUE;=0A-if (!$t) // ...=0A $v =3D ~0b1010101;=
=0A $s =3D "\x86\x97"; $s =3D ~$s; // $s is "yh"=0A ```=0A@@ -2300,24 +2294=
,50 @@ $e2 =3D new E1;=0A var_dump($e2 instanceof $e1);      // TRUE=0A ```=
=0A =0A+## Logical NOT Operator=0A+=0A+<!-- GRAMMAR=0A+logical-NOT-expressi=
on:=0A+  instanceof-expression=0A+  '!' instanceof-expression=0A+-->=0A+=0A=
+<pre>=0A+<i id=3D"grammar-logical-NOT-expression">logical-NOT-expression:<=
/i>=0A+   <i><a href=3D"#grammar-instanceof-expression">instanceof-expressi=
on</a></i>=0A+   !   <i><a href=3D"#grammar-instanceof-expression">instance=
of-expression</a></i>=0A+</pre>=0A+=0A+**Semantics**=0A+=0A+The value of th=
e operand is [converted to type `bool`](08-conversions.md#converting-to-boo=
lean-type)=0A+and if it is `TRUE` then the result of the operator is `FALSE=
`. The result is `TRUE` otherwise.=0A+=0A+**Examples**=0A+=0A+```PHP=0A+$t =
=3D TRUE;=0A+if (!$t) // ...=0A+```=0A+=0A ## Multiplicative Operators=0A =
=0A **Syntax**=0A =0A <!-- GRAMMAR=0A multiplicative-expression:=0A-  insta=
nceof-expression=0A-  multiplicative-expression '*' instanceof-expression=
=0A-  multiplicative-expression '/' instanceof-expression=0A-  multiplicati=
ve-expression '%' instanceof-expression=0A+  logical-NOT-expression=0A+  mu=
ltiplicative-expression '*' logical-NOT-expression=0A+  multiplicative-expr=
ession '/' logical-NOT-expression=0A+  multiplicative-expression '%' logica=
l-NOT-expression=0A -->=0A =0A <pre>=0A <i id=3D"grammar-multiplicative-exp=
ression">multiplicative-expression:</i>=0A-   <i><a href=3D"#grammar-instan=
ceof-expression">instanceof-expression</a></i>=0A-   <i><a href=3D"#grammar=
-multiplicative-expression">multiplicative-expression</a></i>   *   <i><a h=
ref=3D"#grammar-instanceof-expression">instanceof-expression</a></i>=0A-   =
<i><a href=3D"#grammar-multiplicative-expression">multiplicative-expression=
</a></i>   /   <i><a href=3D"#grammar-instanceof-expression">instanceof-exp=
ression</a></i>=0A-   <i><a href=3D"#grammar-multiplicative-expression">mul=
tiplicative-expression</a></i>   %   <i><a href=3D"#grammar-instanceof-expr=
ession">instanceof-expression</a></i>=0A+   <i><a href=3D"#grammar-logical-=
NOT-expression">logical-NOT-expression</a></i>=0A+   <i><a href=3D"#grammar=
-multiplicative-expression">multiplicative-expression</a></i>   *   <i><a h=
ref=3D"#grammar-logical-NOT-expression">logical-NOT-expression</a></i>=0A+ =
  <i><a href=3D"#grammar-multiplicative-expression">multiplicative-expressi=
on</a></i>   /   <i><a href=3D"#grammar-logical-NOT-expression">logical-NOT=
-expression</a></i>=0A+   <i><a href=3D"#grammar-multiplicative-expression"=
>multiplicative-expression</a></i>   %   <i><a href=3D"#grammar-logical-NOT=
-expression">logical-NOT-expression</a></i>=0A </pre>=0A =0A **Constraints*=
*=0Adiff --git a/spec/19-grammar.md b/spec/19-grammar.md=0Aindex 08f7ac3..0=
6fcb02 100644=0A--- a/spec/19-grammar.md=0A+++ b/spec/19-grammar.md=0A@@ -5=
83,7 +583,7 @@ The grammar notation is described in [Grammars section](09-l=
exical-structure.md#=0A    <i><a href=3D"#grammar-unary-operator">unary-ope=
rator</a></i>   <i><a href=3D"#grammar-unary-expression">unary-expression</=
a></i>=0A =0A <i id=3D"grammar-unary-operator">unary-operator: one of</i>=
=0A-   +   -   !   ~=0A+   +   -   ~=0A =0A <i id=3D"grammar-error-control-=
expression">error-control-expression:</i>=0A    @   <i><a href=3D"#grammar-=
expression">expression</a></i>=0A@@ -605,11 +605,15 @@ The grammar notation=
 is described in [Grammars section](09-lexical-structure.md#=0A <i id=3D"gr=
ammar-instanceof-subject">instanceof-subject:</i>=0A    <i><a href=3D"#gram=
mar-expression">expression</a></i>=0A =0A-<i id=3D"grammar-multiplicative-e=
xpression">multiplicative-expression:</i>=0A+<i id=3D"grammar-logical-NOT-e=
xpression">logical-NOT-expression:</i>=0A    <i><a href=3D"#grammar-instanc=
eof-expression">instanceof-expression</a></i>=0A-   <i><a href=3D"#grammar-=
multiplicative-expression">multiplicative-expression</a></i>   *   <i><a hr=
ef=3D"#grammar-instanceof-expression">instanceof-expression</a></i>=0A-   <=
i><a href=3D"#grammar-multiplicative-expression">multiplicative-expression<=
/a></i>   /   <i><a href=3D"#grammar-instanceof-expression">instanceof-expr=
ession</a></i>=0A-   <i><a href=3D"#grammar-multiplicative-expression">mult=
iplicative-expression</a></i>   %   <i><a href=3D"#grammar-instanceof-expre=
ssion">instanceof-expression</a></i>=0A+   !   <i><a href=3D"#grammar-insta=
nceof-expression">instanceof-expression</a></i>=0A+=0A+<i id=3D"grammar-mul=
tiplicative-expression">multiplicative-expression:</i>=0A+   <i><a href=3D"=
#grammar-logical-NOT-expression">logical-NOT-expression</a></i>=0A+   <i><a=
 href=3D"#grammar-multiplicative-expression">multiplicative-expression</a><=
/i>   *   <i><a href=3D"#grammar-logical-NOT-expression">logical-NOT-expres=
sion</a></i>=0A+   <i><a href=3D"#grammar-multiplicative-expression">multip=
licative-expression</a></i>   /   <i><a href=3D"#grammar-logical-NOT-expres=
sion">logical-NOT-expression</a></i>=0A+   <i><a href=3D"#grammar-multiplic=
ative-expression">multiplicative-expression</a></i>   %   <i><a href=3D"#gr=
ammar-logical-NOT-expression">logical-NOT-expression</a></i>=0A =0A <i id=
=3D"grammar-additive-expression">additive-expression:</i>=0A    <i><a href=
=3D"#grammar-multiplicative-expression">multiplicative-expression</a></i>=
=0A