com php-langspec: Sync grammar file: spec/10-expressions.md spec/13-functions.md spec/14-classes.md spec/19-grammar.md
[email protected] (Nikita Popov) Sun, 24 Apr 2016 13:55:18 +0000
| Newsgroups | php.standards.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: bcdfd0ee75f64cb31200a3b75eefe1f597061aa3 Author: Nikita Popov <[email protected]> Sun, 24 Apr 2016 15:42:48 +0200 Parents: 875d1be2800b81c53aa411cc7770e8b7a80dd1e2 Branches: PHP-7.0 master Link: http://git.php.net/?p=php-langspec.git;a=commitdiff;h=bcdfd0ee75f64cb31200a3b75eefe1f597061aa3 Log: Sync grammar file Was hoping to automate this, but the heading structure is too different :/ Changed paths: M spec/10-expressions.md M spec/13-functions.md M spec/14-classes.md M spec/19-grammar.md
diff_bcdfd0ee75f64cb31200a3b75eefe1f597061aa3.txt
(text/plain, 10.7 KB)
diff --git a/spec/10-expressions.md b/spec/10-expressions.md
index a68c3ae..0b4de83 100644
--- a/spec/10-expressions.md
+++ b/spec/10-expressions.md
@@ -2225,10 +2225,10 @@ These operators associate left-to-right.
<pre>
<i>relational-expression:</i>
<i>shift-expression</i>
- <i>relational-expression</i> < <i>shift-expression</i>
- <i>relational-expression</i> > <i>shift-expression</i>
- <i>relational-expression</i> <= <i>shift-expression</i>
- <i>relational-expression</i> >= <i>shift-expression</i>
+ <i>relational-expression</i> < <i>shift-expression</i>
+ <i>relational-expression</i> > <i>shift-expression</i>
+ <i>relational-expression</i> <= <i>shift-expression</i>
+ <i>relational-expression</i> >= <i>shift-expression</i>
<i>relational-expression</i> <=> <i>shift-expression</i>
</pre>
diff --git a/spec/13-functions.md b/spec/13-functions.md
index d59446d..2d971d1 100644
--- a/spec/13-functions.md
+++ b/spec/13-functions.md
@@ -78,14 +78,14 @@ A function is called via the function-call operator [`()`](10-expressions.md#fun
<i>type-declaration:</i>
array
callable
- <i>scalar-type</i>
+ <i>scalar-type</i>
<i>qualified-name</i>
<i>scalar-type:</i>
- bool
- float
+ bool
+ float
int
- string
+ string
<i>default-argument-specifier:</i>
= <i>constant-expression</i>
diff --git a/spec/14-classes.md b/spec/14-classes.md
index 6762e4a..9501915 100644
--- a/spec/14-classes.md
+++ b/spec/14-classes.md
@@ -499,7 +499,7 @@ class Point
<i>method-modifier:</i>
<i>visibility-modifier</i>
<i>static-modifier</i>
- <i>class-modifier</i>
+ <i>class-modifier</i>
</pre>
**Defined elsewhere**
diff --git a/spec/19-grammar.md b/spec/19-grammar.md
index bc8b8c4..becb6ee 100644
--- a/spec/19-grammar.md
+++ b/spec/19-grammar.md
@@ -111,14 +111,14 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<pre>
<i>keyword:: one of</i>
- abstract and as break callable case catch class clone
- const continue declare default do echo else elseif
- enddeclare endfor endforeach endif endswitch endwhile
+ abstract and array as break callable case catch class clone
+ const continue declare default die do echo else elseif empty
+ enddeclare endfor endforeach endif endswitch endwhile eval exit
extends final finally for foreach function global
goto if implements include include_once instanceof
- insteadof interface list namespace new or print private
+ insteadof interface isset list namespace new or print private
protected public require require_once return static switch
- throw trait try use var while xor yield
+ throw trait try unset use var while xor yield yield from
</pre>
###Literals
@@ -243,6 +243,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>dq-simple-escape-sequence</i>
<i>dq-octal-escape-sequence</i>
<i>dq-hexadecimal-escape-sequence</i>
+ <i>dq-unicode-escape-sequence</i>
<i>dq-simple-escape-sequence:: one of</i>
\" \\ \$ \e \f \n \r \t \v
@@ -256,6 +257,13 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
\x <i>hexadecimal-digit hexadecimal-digit<sub>opt</sub></i>
\X <i>hexadecimal-digit hexadecimal-digit<sub>opt</sub></i>
+ <i>dq-unicode-escape-sequence::</i>
+ \u{ codepoint-digits }
+
+ <i>codepoint-digits::</i>
+ <i>hexadecimal-digit</i>
+ <i>hexadecimal-digit codepoint-digits</i>
+
<i>string-variable::</i>
<i>variable-name</i> <i>offset-or-property<sub>opt</sub></i>
${ <i>expression</i> }
@@ -295,6 +303,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>hd-simple-escape-sequence</i>
<i>dq-octal-escape-sequence</i>
<i>dq-hexadecimal-escape-sequence</i>
+ <i>dq-unicode-escape-sequence</i>
<i>hd-simple-escape-sequence:: one of</i>
\\ \$ \e \f \n \r \t \v
@@ -310,7 +319,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
[ ] ( ) { } . -> ++ -- ** * + - ~ !
$ / % << >> < > <= >= == === != !== ^ |
& && || ? : ; = **= *= /= %= += -= .= <<=
- >>= &= ^= |= =& ,
+ >>= &= ^= |= =& , ?? <=>
</pre>
##Syntactic Grammar
@@ -442,7 +451,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
unset ( <i>expression-list-one-or-more</i> )
<i>anonymous-function-creation-expression:</i>
- static<sub>opt</sub> function &<sub>opt</sub> ( <i>parameter-declaration-list<sub>opt<sub></i> ) <i>anonymous-function-use-clause<sub>opt</sub></i>
+ static<sub>opt</sub> function &<sub>opt</sub> ( <i>parameter-declaration-list<sub>opt<sub></i> ) <i>return-type<sub>opt</sub></i> <i>anonymous-function-use-clause<sub>opt</sub></i>
<i>compound-statement</i>
<i>anonymous-function-use-clause:</i>
@@ -476,6 +485,11 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>object-creation-expression:</i>
new <i>class-type-designator</i> ( <i>argument-expression-list<sub>opt</sub></i> )
new <i>class-type-designator</i>
+ new class ( <i>argument-expression-list<sub>opt</sub></i> )
+ <i>class-base-clause<sub>opt</sub></i> <i>class-interface-clause<sub>opt</sub></i>
+ { <iclass-member-declarations<sub>opt</sub></i> }
+ new class <i>class-base-clause<sub>opt</sub></i> <i>class-interface-clause<sub>opt</sub></i>
+ { <i>class-member-declarations<sub>opt</sub></i> }
<i>class-type-designator:</i>
<i>qualified-name</i>
@@ -1013,7 +1027,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>function-definition-header compound-statement</i>
<i>function-definition-header:</i>
- function &<sub>opt</sub> <i>name</i> <i>return-type<sub>opt</sub></i> ( <i>parameter-declaration-list<sub>opt</sub></i> )
+ function &<i><sub>opt</sub></i> <i>name</i> ( <i>parameter-declaration-list<sub>opt</sub></i> ) <i>return-type<sub>opt</sub></i>
<i>parameter-declaration-list:</i>
<i>simple-parameter-declaration-list</i>
@@ -1028,10 +1042,10 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>variadic-parameter</i>
<i>parameter-declaration:</i>
- <i>type-declaration<sub>opt</sub></i> &<sub>opt</sub> <i>variable-name default-argument-specifier<sub>opt</sub></i>
+ <i>type-declaration<sub>opt</sub></i> &<i><sub>opt</sub></i> <i>variable-name default-argument-specifier<sub>opt</sub></i>
<i>variadic-parameter:</i>
- <i>type-declaration<sub>opt</sub></i> &<sub>opt</sub> ... <i>variable-name</i>
+ <i>type-declaration<sub>opt</sub></i> &<i><sub>opt</sub></i> ... <i>variable-name</i>
<i>return-type:</i>
: <i>type-declaration</i>
@@ -1056,7 +1070,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<pre>
<i>class-declaration:</i>
- <i>class-modifier<sub>opt</sub></i> class <i>name class-base-clause<sub>opt</sub> class-interface-clause<sub>opt</sub></i> { <i>trait-use-clauses<sub>opt</sub> class-member-declarations<sub>opt</sub></i> }
+ <i>class-modifier<sub>opt</sub></i> class <i>name class-base-clause<sub>opt</sub> class-interface-clause<sub>opt</sub></i> { class-member-declarations<sub>opt</sub></i> }
<i>class-modifier:</i>
abstract
@@ -1079,6 +1093,7 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>method-declaration</i>
<i>constructor-declaration</i>
<i>destructor-declaration</i>
+ <i>trait-use-clause</i>
<i>const-declaration:</i>
const <i>name</i> = <i>constant-expression</i> ;
@@ -1147,7 +1162,18 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<pre>
<i>trait-declaration:</i>
- trait <i>name</i> { <i>trait-use-clauses<sub>opt</sub> trait-member-declarations<sub>opt</sub></i> }
+ trait <i>name</i> { trait-member-declarations<sub>opt</sub></i> }
+
+ <i>trait-member-declarations:</i>
+ <i>trait-member-declaration</i>
+ <i>trait-member-declarations trait-member-declaration</i>
+
+ <i>trait-member-declaration:</i>
+ <i>property-declaration</i>
+ <i>method-declaration</i>
+ <i>constructor-declaration</i>
+ <i>destructor-declaration</i>
+ <i>trait-use-clauses</i>
<i>trait-use-clauses:</i>
<i>trait-use-clause</i>
@@ -1178,17 +1204,6 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>trait-alias-as-clause:</i>
<i>name</i> as <i>visibility-modifier<sub>opt</sub> name</i>
<i>name</i> as <i>visibility-modifier name<sub>opt</sub></i>
-
- <i>trait-member-declarations:</i>
- <i>trait-member-declaration</i>
- <i>trait-member-declarations trait-member-declaration</i>
-
- <i>trait-member-declaration:</i>
- <i>property-declaration</i>
- <i>method-declaration</i>
- <i>constructor-declaration</i>
- <i>destructor-declaration</i>
-
</pre>
###Namespaces
@@ -1200,6 +1215,9 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>namespace-use-declaration:</i>
use <i>namespace-function-or-const<sub>opt</sub></i> <i>namespace-use-clauses</i> ;
+ use <i>namespace-function-or-const</i> \<i><sub>opt</sub> namespace-name</i> \
+ { <i>namespace-use-group-clauses-1</i> } ;
+ use \<i><sub>opt</sub> namespace-name</i> \ { <i>namespace-use-group-clauses-2</i> } ;
<i>namespace-use-clauses:</i>
<i>namespace-use-clause</i>
@@ -1214,4 +1232,18 @@ The grammar notation is described in [Grammars section](09-lexical-structure.md#
<i>namespace-function-or-const:</i>
function
const
+
+ <i>namespace-use-group-clauses-1:</i>
+ <i>namespace-use-group-clause-1</i>
+ <i>namespace-use-group-clauses-1</i> , <i>namespace-use-group-clause-1</i>
+
+ <i>namespace-use-group-clause-1:</i>
+ <i>namespace-name</i> <i>namespace-aliasing-clause<sub>opt</sub></i>
+
+ <i>namespace-use-group-clauses-2:</i>
+ <i>namespace-use-group-clause-2</i>
+ <i>namespace-use-group-clauses-2</i> , <i>namespace-use-group-clause-2</i>
+
+ <i>namespace-use-group-clause-2:</i>
+ <i>namespace-function-or-const<sub>opt</sub></i> <i>namespace-name</i> <i>namespace-aliasing-clause<sub>opt</sub></i>
</pre>