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

This commit is contained in:
Andrés Delfino 2018-07-07 17:24:46 -03:00 committed by Serhiy Storchaka
parent b6bb77c2b8
commit caccca78e4
3 changed files with 25 additions and 25 deletions

View file

@ -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
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`
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
: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
----------------------------- -----------------------------
.. 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

View file

@ -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:
.. 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
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
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
.. 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

View file

@ -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
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: