Commit caccca78 authored by Andrés Delfino's avatar Andrés Delfino Committed by Serhiy Storchaka

bpo-33702: Add some missing links in production lists and do a little polish (GH-7259)

parent b6bb77c2
...@@ -91,7 +91,7 @@ The :keyword:`if` statement is used for conditional execution: ...@@ -91,7 +91,7 @@ The :keyword:`if` statement is used for conditional execution:
.. productionlist:: .. productionlist::
if_stmt: "if" `expression` ":" `suite` if_stmt: "if" `expression` ":" `suite`
: ( "elif" `expression` ":" `suite` )* : ("elif" `expression` ":" `suite`)*
: ["else" ":" `suite`] : ["else" ":" `suite`]
It selects exactly one of the suites by evaluating the expressions one by one It selects exactly one of the suites by evaluating the expressions one by one
...@@ -235,7 +235,7 @@ The :keyword:`try` statement specifies exception handlers and/or cleanup code ...@@ -235,7 +235,7 @@ The :keyword:`try` statement specifies exception handlers and/or cleanup code
for a group of statements: for a group of statements:
.. productionlist:: .. productionlist::
try_stmt: try1_stmt | try2_stmt try_stmt: `try1_stmt` | `try2_stmt`
try1_stmt: "try" ":" `suite` try1_stmt: "try" ":" `suite`
: ("except" [`expression` ["as" `identifier`]] ":" `suite`)+ : ("except" [`expression` ["as" `identifier`]] ":" `suite`)+
: ["else" ":" `suite`] : ["else" ":" `suite`]
...@@ -384,7 +384,7 @@ This allows common :keyword:`try`...\ :keyword:`except`...\ :keyword:`finally` ...@@ -384,7 +384,7 @@ This allows common :keyword:`try`...\ :keyword:`except`...\ :keyword:`finally`
usage patterns to be encapsulated for convenient reuse. usage patterns to be encapsulated for convenient reuse.
.. productionlist:: .. productionlist::
with_stmt: "with" with_item ("," with_item)* ":" `suite` with_stmt: "with" `with_item` ("," `with_item`)* ":" `suite`
with_item: `expression` ["as" `target`] with_item: `expression` ["as" `target`]
The execution of the :keyword:`with` statement with one "item" proceeds as follows: The execution of the :keyword:`with` statement with one "item" proceeds as follows:
...@@ -468,14 +468,15 @@ A function definition defines a user-defined function object (see section ...@@ -468,14 +468,15 @@ A function definition defines a user-defined function object (see section
:ref:`types`): :ref:`types`):
.. productionlist:: .. productionlist::
funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")" ["->" `expression`] ":" `suite` funcdef: [`decorators`] "def" `funcname` "(" [`parameter_list`] ")"
: ["->" `expression`] ":" `suite`
decorators: `decorator`+ decorators: `decorator`+
decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE decorator: "@" `dotted_name` ["(" [`argument_list` [","]] ")"] NEWLINE
dotted_name: `identifier` ("." `identifier`)* dotted_name: `identifier` ("." `identifier`)*
parameter_list: `defparameter` ("," `defparameter`)* ["," [`parameter_list_starargs`]] parameter_list: `defparameter` ("," `defparameter`)* ["," [`parameter_list_starargs`]]
: | `parameter_list_starargs` : | `parameter_list_starargs`
parameter_list_starargs: "*" [`parameter`] ("," `defparameter`)* ["," ["**" `parameter` [","]]] parameter_list_starargs: "*" [`parameter`] ("," `defparameter`)* ["," ["**" `parameter` [","]]]
: | "**" `parameter` [","] : | "**" `parameter` [","]
parameter: `identifier` [":" `expression`] parameter: `identifier` [":" `expression`]
defparameter: `parameter` ["=" `expression`] defparameter: `parameter` ["=" `expression`]
funcname: `identifier` funcname: `identifier`
...@@ -698,7 +699,8 @@ Coroutine function definition ...@@ -698,7 +699,8 @@ Coroutine function definition
----------------------------- -----------------------------
.. productionlist:: .. productionlist::
async_funcdef: [`decorators`] "async" "def" `funcname` "(" [`parameter_list`] ")" ["->" `expression`] ":" `suite` async_funcdef: [`decorators`] "async" "def" `funcname` "(" [`parameter_list`] ")"
: ["->" `expression`] ":" `suite`
.. index:: .. index::
keyword: async keyword: async
......
...@@ -1055,7 +1055,7 @@ The power operator binds more tightly than unary operators on its left; it binds ...@@ -1055,7 +1055,7 @@ The power operator binds more tightly than unary operators on its left; it binds
less tightly than unary operators on its right. The syntax is: less tightly than unary operators on its right. The syntax is:
.. productionlist:: .. productionlist::
power: ( `await_expr` | `primary` ) ["**" `u_expr`] power: (`await_expr` | `primary`) ["**" `u_expr`]
Thus, in an unparenthesized sequence of power and unary operators, the operators Thus, in an unparenthesized sequence of power and unary operators, the operators
are evaluated from right to left (this does not constrain the evaluation order are evaluated from right to left (this does not constrain the evaluation order
...@@ -1127,7 +1127,7 @@ operators and one for additive operators: ...@@ -1127,7 +1127,7 @@ operators and one for additive operators:
.. productionlist:: .. productionlist::
m_expr: `u_expr` | `m_expr` "*" `u_expr` | `m_expr` "@" `m_expr` | m_expr: `u_expr` | `m_expr` "*" `u_expr` | `m_expr` "@" `m_expr` |
: `m_expr` "//" `u_expr`| `m_expr` "/" `u_expr` | : `m_expr` "//" `u_expr` | `m_expr` "/" `u_expr` |
: `m_expr` "%" `u_expr` : `m_expr` "%" `u_expr`
a_expr: `m_expr` | `a_expr` "+" `m_expr` | `a_expr` "-" `m_expr` a_expr: `m_expr` | `a_expr` "+" `m_expr` | `a_expr` "-" `m_expr`
...@@ -1207,7 +1207,7 @@ Shifting operations ...@@ -1207,7 +1207,7 @@ Shifting operations
The shifting operations have lower priority than the arithmetic operations: The shifting operations have lower priority than the arithmetic operations:
.. productionlist:: .. productionlist::
shift_expr: `a_expr` | `shift_expr` ( "<<" | ">>" ) `a_expr` shift_expr: `a_expr` | `shift_expr` ("<<" | ">>") `a_expr`
These operators accept integers as arguments. They shift the first argument to These operators accept integers as arguments. They shift the first argument to
the left or right by the number of bits given by the second argument. the left or right by the number of bits given by the second argument.
...@@ -1267,7 +1267,7 @@ C, expressions like ``a < b < c`` have the interpretation that is conventional ...@@ -1267,7 +1267,7 @@ C, expressions like ``a < b < c`` have the interpretation that is conventional
in mathematics: in mathematics:
.. productionlist:: .. productionlist::
comparison: `or_expr` ( `comp_operator` `or_expr` )* comparison: `or_expr` (`comp_operator` `or_expr`)*
comp_operator: "<" | ">" | "==" | ">=" | "<=" | "!=" comp_operator: "<" | ">" | "==" | ">=" | "<=" | "!="
: | "is" ["not"] | ["not"] "in" : | "is" ["not"] | ["not"] "in"
...@@ -1631,9 +1631,9 @@ Expression lists ...@@ -1631,9 +1631,9 @@ Expression lists
.. index:: pair: expression; list .. index:: pair: expression; list
.. productionlist:: .. productionlist::
expression_list: `expression` ( "," `expression` )* [","] expression_list: `expression` ("," `expression`)* [","]
starred_list: `starred_item` ( "," `starred_item` )* [","] starred_list: `starred_item` ("," `starred_item`)* [","]
starred_expression: `expression` | ( `starred_item` "," )* [`starred_item`] starred_expression: `expression` | (`starred_item` ",")* [`starred_item`]
starred_item: `expression` | "*" `or_expr` starred_item: `expression` | "*" `or_expr`
.. index:: object: tuple .. index:: object: tuple
......
...@@ -707,15 +707,14 @@ The :keyword:`import` statement ...@@ -707,15 +707,14 @@ The :keyword:`import` statement
keyword: from keyword: from
.. productionlist:: .. productionlist::
import_stmt: "import" `module` ["as" `name`] ( "," `module` ["as" `name`] )* import_stmt: "import" `module` ["as" `identifier`] ("," `module` ["as" `identifier`])*
: | "from" `relative_module` "import" `identifier` ["as" `name`] : | "from" `relative_module` "import" `identifier` ["as" `identifier`]
: ( "," `identifier` ["as" `name`] )* : ("," `identifier` ["as" `identifier`])*
: | "from" `relative_module` "import" "(" `identifier` ["as" `name`] : | "from" `relative_module` "import" "(" `identifier` ["as" `identifier`]
: ( "," `identifier` ["as" `name`] )* [","] ")" : ("," `identifier` ["as" `identifier`])* [","] ")"
: | "from" `module` "import" "*" : | "from" `module` "import" "*"
module: (`identifier` ".")* `identifier` module: (`identifier` ".")* `identifier`
relative_module: "."* `module` | "."+ relative_module: "."* `module` | "."+
name: `identifier`
The basic import statement (no :keyword:`from` clause) is executed in two The basic import statement (no :keyword:`from` clause) is executed in two
steps: steps:
...@@ -837,12 +836,11 @@ features on a per-module basis before the release in which the feature becomes ...@@ -837,12 +836,11 @@ features on a per-module basis before the release in which the feature becomes
standard. standard.
.. productionlist:: * .. productionlist:: *
future_statement: "from" "__future__" "import" feature ["as" name] future_stmt: "from" "__future__" "import" `feature` ["as" `identifier`]
: ("," feature ["as" name])* : ("," `feature` ["as" `identifier`])*
: | "from" "__future__" "import" "(" feature ["as" name] : | "from" "__future__" "import" "(" `feature` ["as" `identifier`]
: ("," feature ["as" name])* [","] ")" : ("," `feature` ["as" `identifier`])* [","] ")"
feature: identifier feature: `identifier`
name: identifier
A future statement must appear near the top of the module. The only lines that A future statement must appear near the top of the module. The only lines that
can appear before a future statement are: can appear before a future statement are:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment