com php-langspec: Fix print precedence: spec/10-expressions.md spec/19-grammar.md

From: Date: Fri, 15 Mar 2019 08:52:05 +0000
Subject: com php-langspec: Fix print precedence: spec/10-expressions.md spec/19-grammar.md
Groups: php.standards.cvs 
Request: Send a blank email to standards--cvs+get-427@lists.php.net to get a copy of this message
Commit: 63d72a6df5d2c7b1b7a8aedde1410c780cfd92af Author: Nikita Popov <nikita.ppv@gmail.com> Fri, 15 Mar 2019 09:52:05 +0100 Parents: b0dadd509b0fa94667f96ef32af4481ff2a23e1e Branches: master Link: http://git.php.net/?p=php-langspec.git;a=commitdiff;h=63d72a6df5d2c7b1b7a8aedde1410c780cfd92af Log: Fix print precedence Changed paths: M spec/10-expressions.md M spec/19-grammar.md Diff: diff --git a/spec/10-expressions.md b/spec/10-expressions.md index 3ae61b3..988acaf 100644 --- a/spec/10-expressions.md +++ b/spec/10-expressions.md @@ -322,7 +322,6 @@ intrinsic: eval-intrinsic exit-intrinsic isset-intrinsic - print-intrinsic --> <pre> @@ -331,7 +330,6 @@ intrinsic: <i><a href="#grammar-eval-intrinsic">eval-intrinsic</a></i> <i><a href="#grammar-exit-intrinsic">exit-intrinsic</a></i> <i><a href="#grammar-isset-intrinsic">isset-intrinsic</a></i> - <i><a href="#grammar-print-intrinsic">print-intrinsic</a></i> </pre> **Semantics** @@ -521,48 +519,6 @@ $v1 = TRUE; $v2 = 12.3; $v3 = NULL; isset($v1, $v2, $v3); // results in FALSE ``` -#### print - -**Syntax** - -<!-- GRAMMAR -print-intrinsic: - 'print' expression ---> - -<pre> -<i id="grammar-print-intrinsic">print-intrinsic:</i> - print <i><a href="#grammar-expression">expression</a></i> -</pre> - -**Constraints** - -*expression* value must be [convertable to a string](08-conversions.md#converting-to-string-type). -In particular, it should not be an array and if it is an object, it must implement -a [__toString method](14-classes.md#method-__tostring). - -**Semantics** - -After converting its *expression*'s value to a string, if necessary, -print writes the resulting string to [STDOUT](06-constants.md#core-predefined-constants). -Unlike [echo](11-statements.md#the-echo-statement), print can be used in any context -allowing an expression. It always returns the value 1. - -See also: [double quoted strings](09-lexical-structure.md#double-quoted-string-literals) and -[heredoc documents](09-lexical-structure.md#heredoc-string-literals), [conversion to string](08-conversions.md#converting-to-string-type). - -**Examples** - -```PHP -$v1 = TRUE; -$v2 = 123; -print '>>' . $v1 . '|' . $v2 . "<<\n"; // outputs ">>1|123<<" -print ('>>' . $v1 . '|' . $v2 . "<<\n"); // outputs ">>1|123<<" -$v3 = "qqq{$v2}zzz"; -print "$v3\n"; // outputs "qqq123zzz" -$a > $b ? print "..." : print "..."; -``` - ### Anonymous Function Creation **Syntax** @@ -3219,6 +3175,50 @@ foreach ($g as $yielded) { } ``` +## Print expression + +**Syntax** + +<!-- GRAMMAR +print-expression: + yield-expression + 'print' print-expression +--> + +<pre> +<i id="grammar-print-expression">print-expression:</i> + <i><a href="#grammar-yield-expression">yield-expression</a></i> + print <i><a href="#grammar-print-expression">print-expression</a></i> +</pre> + +**Constraints** + +*print-expression* value must be [convertable to a string](08-conversions.md#converting-to-string-type). +In particular, it should not be an array and if it is an object, it must implement +a [__toString method](14-classes.md#method-__tostring). + +**Semantics** + +After converting *print-expression*'s value into a string, if necessary, +print writes the resulting string to [STDOUT](06-constants.md#core-predefined-constants). +Unlike [echo](11-statements.md#the-echo-statement), print can be used in any context +allowing an expression. It always returns the value 1. + +See also: [double quoted strings](09-lexical-structure.md#double-quoted-string-literals) and +[heredoc documents](09-lexical-structure.md#heredoc-string-literals), [conversion to string](08-conversions.md#converting-to-string-type). + +**Examples** + +```PHP +$v1 = TRUE; +$v2 = 123; +print '>>' . $v1 . '|' .. $v2 . "<<\n"; // outputs ">>1|123<<" +print ('>>' . $v1 . '|' . $v2 . "<<\n"); // outputs ">>1|123<<" +$v3 = "qqq{$v2}zzz"; +print "$v3\n"; // outputs "qqq123zzz" +$a > $b ? print "..." : print "..."; +``` + ## Logical AND Operator (form 2) **Syntax** diff --git a/spec/19-grammar.md b/spec/19-grammar.md index 8d51d22..6b66633 100644 --- a/spec/19-grammar.md +++ b/spec/19-grammar.md @@ -389,7 +389,6 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md# <i><a href="#grammar-eval-intrinsic">eval-intrinsic</a></i> <i><a href="#grammar-exit-intrinsic">exit-intrinsic</a></i> <i><a href="#grammar-isset-intrinsic">isset-intrinsic</a></i> - <i><a href="#grammar-print-intrinsic">print-intrinsic</a></i> <i id="grammar-empty-intrinsic">empty-intrinsic:</i> 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# <i><a href="#grammar-variable">variable</a></i> <i><a href="#grammar-variable-list">variable-list</a></i> , <i><a href="#grammar-variable">variable</a></i> -<i id="grammar-print-intrinsic">print-intrinsic:</i> - print <i><a href="#grammar-expression">expression</a></i> - <i id="grammar-anonymous-function-creation-expression">anonymous-function-creation-expression:</i> 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> @@ -681,6 +677,10 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md# yield <i><a href="#grammar-yield-expression">yield-expression</a></i> yield <i><a href="#grammar-yield-from-expression">yield-from-expression</a></i> =&gt; <i><a href="#grammar-yield-expression">yield-expression</a></i> +<i id="grammar-print-expression">print-expression:</i> + <i><a href="#grammar-yield-expression">yield-expression</a></i> + print <i><a href="#grammar-print-expression">print-expression</a></i> + <i id="grammar-logical-AND-expression-2">logical-AND-expression-2:</i> <i><a href="#grammar-yield-expression">yield-expression</a></i> <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>

« previous php.standards.cvs (#427) next »