#python-3.x #abstract-syntax-tree
#python-3.x #абстрактное синтаксическое дерево
Вопрос:
В Python3.6 AST Abstract Grammar внутри есть expr*
, expr?
и expr
. В чем разница между ними? Такие как: expr* targets
, expr? value
и expr target
.
Ответ №1:
Обычно эти суффиксы означают то же самое, что и в регулярных выражениях:
expr
— ровно один экземпляр выраженияexpr?
— ноль или один экземплярexpr*
— ноль или более экземпляров
Например, для следующего:
FunctionDef(identifier name, arguments args,
stmt* body, expr* decorator_list, expr? returns)
определение функции состоит ровно из одного имени, по крайней мере, нулевых операторов и необязательного возвращаемого значения asn (для функций, которые ничего не возвращают).