Skip to content

Commit 63d72a6

Browse files
committed
Fix print precedence
1 parent b0dadd5 commit 63d72a6

File tree

2 files changed

+48
-48
lines changed

2 files changed

+48
-48
lines changed

spec/10-expressions.md

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,6 @@ intrinsic:
322322
eval-intrinsic
323323
exit-intrinsic
324324
isset-intrinsic
325-
print-intrinsic
326325
-->
327326

328327
<pre>
@@ -331,7 +330,6 @@ intrinsic:
331330
<i><a href="#grammar-eval-intrinsic">eval-intrinsic</a></i>
332331
<i><a href="#grammar-exit-intrinsic">exit-intrinsic</a></i>
333332
<i><a href="#grammar-isset-intrinsic">isset-intrinsic</a></i>
334-
<i><a href="#grammar-print-intrinsic">print-intrinsic</a></i>
335333
</pre>
336334

337335
**Semantics**
@@ -521,48 +519,6 @@ $v1 = TRUE; $v2 = 12.3; $v3 = NULL;
521519
isset($v1, $v2, $v3); // results in FALSE
522520
```
523521

524-
#### print
525-
526-
**Syntax**
527-
528-
<!-- GRAMMAR
529-
print-intrinsic:
530-
'print' expression
531-
-->
532-
533-
<pre>
534-
<i id="grammar-print-intrinsic">print-intrinsic:</i>
535-
print <i><a href="#grammar-expression">expression</a></i>
536-
</pre>
537-
538-
**Constraints**
539-
540-
*expression* value must be [convertable to a string](08-conversions.md#converting-to-string-type).
541-
In particular, it should not be an array and if it is an object, it must implement
542-
a [`__toString` method](14-classes.md#method-__tostring).
543-
544-
**Semantics**
545-
546-
After converting its *expression*'s value to a string, if necessary,
547-
`print` writes the resulting string to [`STDOUT`](06-constants.md#core-predefined-constants).
548-
Unlike [`echo`](11-statements.md#the-echo-statement), `print` can be used in any context
549-
allowing an expression. It always returns the value 1.
550-
551-
See also: [double quoted strings](09-lexical-structure.md#double-quoted-string-literals) and
552-
[heredoc documents](09-lexical-structure.md#heredoc-string-literals), [conversion to string](08-conversions.md#converting-to-string-type).
553-
554-
**Examples**
555-
556-
```PHP
557-
$v1 = TRUE;
558-
$v2 = 123;
559-
print '>>' . $v1 . '|' . $v2 . "<<\n"; // outputs ">>1|123<<"
560-
print ('>>' . $v1 . '|' . $v2 . "<<\n"); // outputs ">>1|123<<"
561-
$v3 = "qqq{$v2}zzz";
562-
print "$v3\n"; // outputs "qqq123zzz"
563-
$a > $b ? print "..." : print "...";
564-
```
565-
566522
### Anonymous Function Creation
567523

568524
**Syntax**
@@ -3219,6 +3175,50 @@ foreach ($g as $yielded) {
32193175
}
32203176
```
32213177

3178+
## Print expression
3179+
3180+
**Syntax**
3181+
3182+
<!-- GRAMMAR
3183+
print-expression:
3184+
yield-expression
3185+
'print' print-expression
3186+
-->
3187+
3188+
<pre>
3189+
<i id="grammar-print-expression">print-expression:</i>
3190+
<i><a href="#grammar-yield-expression">yield-expression</a></i>
3191+
print <i><a href="#grammar-print-expression">print-expression</a></i>
3192+
</pre>
3193+
3194+
**Constraints**
3195+
3196+
*print-expression* value must be [convertable to a string](08-conversions.md#converting-to-string-type).
3197+
In particular, it should not be an array and if it is an object, it must implement
3198+
a [`__toString` method](14-classes.md#method-__tostring).
3199+
3200+
**Semantics**
3201+
3202+
After converting *print-expression*'s value into a string, if necessary,
3203+
`print` writes the resulting string to [`STDOUT`](06-constants.md#core-predefined-constants).
3204+
Unlike [`echo`](11-statements.md#the-echo-statement), `print` can be used in any context
3205+
allowing an expression. It always returns the value 1.
3206+
3207+
See also: [double quoted strings](09-lexical-structure.md#double-quoted-string-literals) and
3208+
[heredoc documents](09-lexical-structure.md#heredoc-string-literals), [conversion to string](08-conversions.md#converting-to-string-type).
3209+
3210+
**Examples**
3211+
3212+
```PHP
3213+
$v1 = TRUE;
3214+
$v2 = 123;
3215+
print '>>' . $v1 . '|' . $v2 . "<<\n"; // outputs ">>1|123<<"
3216+
print ('>>' . $v1 . '|' . $v2 . "<<\n"); // outputs ">>1|123<<"
3217+
$v3 = "qqq{$v2}zzz";
3218+
print "$v3\n"; // outputs "qqq123zzz"
3219+
$a > $b ? print "..." : print "...";
3220+
```
3221+
32223222
## Logical AND Operator (form 2)
32233223

32243224
**Syntax**

spec/19-grammar.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,6 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
389389
<i><a href="#grammar-eval-intrinsic">eval-intrinsic</a></i>
390390
<i><a href="#grammar-exit-intrinsic">exit-intrinsic</a></i>
391391
<i><a href="#grammar-isset-intrinsic">isset-intrinsic</a></i>
392-
<i><a href="#grammar-print-intrinsic">print-intrinsic</a></i>
393392

394393
<i id="grammar-empty-intrinsic">empty-intrinsic:</i>
395394
empty ( <i><a href="#grammar-expression">expression</a></i> )
@@ -410,9 +409,6 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
410409
<i><a href="#grammar-variable">variable</a></i>
411410
<i><a href="#grammar-variable-list">variable-list</a></i> , <i><a href="#grammar-variable">variable</a></i>
412411

413-
<i id="grammar-print-intrinsic">print-intrinsic:</i>
414-
print <i><a href="#grammar-expression">expression</a></i>
415-
416412
<i id="grammar-anonymous-function-creation-expression">anonymous-function-creation-expression:</i>
417413
static<sub>opt</sub> function &amp;<sub>opt</sub> ( <i><a href="#grammar-parameter-declaration-list">parameter-declaration-list</a></i><sub>opt</sub> ) <i><a href="#grammar-anonymous-function-use-clause">anonymous-function-use-clause</a></i><sub>opt</sub> <i><a href="#grammar-return-type">return-type</a></i><sub>opt</sub> <i><a href="#grammar-compound-statement">compound-statement</a></i>
418414

@@ -681,6 +677,10 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
681677
yield <i><a href="#grammar-yield-expression">yield-expression</a></i>
682678
yield <i><a href="#grammar-yield-from-expression">yield-from-expression</a></i> =&gt; <i><a href="#grammar-yield-expression">yield-expression</a></i>
683679

680+
<i id="grammar-print-expression">print-expression:</i>
681+
<i><a href="#grammar-yield-expression">yield-expression</a></i>
682+
print <i><a href="#grammar-print-expression">print-expression</a></i>
683+
684684
<i id="grammar-logical-AND-expression-2">logical-AND-expression-2:</i>
685685
<i><a href="#grammar-yield-expression">yield-expression</a></i>
686686
<i><a href="#grammar-logical-AND-expression-2">logical-AND-expression-2</a></i> and <i><a href="#grammar-yield-expression">yield-expression</a></i>

0 commit comments

Comments
 (0)