Python使用什么元语法表示法?

Python使用什么元语法表示法?,python,parsing,interpreter,Python,Parsing,Interpreter,Python 3.6.3的完整语法规范如下: 它看起来像是EBNF附加了一些取自正则表达式的特殊构造,例如:()*(重复零次或多次?)和()+(重复一次或多次?) Python使用的元语法是什么?在哪里可以找到它的规范 更新 Python的语法是在这里定义的(谢谢@larsks)。然而,问题仍然存在——使用了什么符号?Python语法由源代码目录中的解析器解析。你可以从中看到这一点。这将生成Include/graminit.[ch],例如在Python/ast.c以及Modules/parser

Python 3.6.3的完整语法规范如下:

它看起来像是EBNF附加了一些取自正则表达式的特殊构造,例如:
()*
(重复零次或多次?)和
()+
(重复一次或多次?)

Python使用的元语法是什么?在哪里可以找到它的规范

更新
Python的语法是在这里定义的(谢谢@larsks)。然而,问题仍然存在——使用了什么符号?

Python语法由源代码目录中的解析器解析。你可以从中看到这一点。这将生成
Include/graminit.[ch]
,例如在
Python/ast.c
以及
Modules/parsermodule.c
中使用

语法的格式如以下所述:

输入是扩展BNF中的语法(使用*表示重复,使用+表示重复) 至少重复一次,[]用于可选零件,|用于替代品和 ()用于分组)


Python语法由源代码目录中的解析器解析。你可以从中看到这一点。这将生成
Include/graminit.[ch]
,例如在
Python/ast.c
以及
Modules/parsermodule.c
中使用

语法的格式如以下所述:

输入是扩展BNF中的语法(使用*表示重复,使用+表示重复) 至少重复一次,[]用于可选零件,|用于替代品和 ()用于分组)


它不使用该语法来生成解析器。实际上,语法是ASDL格式的,为什么它会出现呢?我假设,如果它不是CPython实际使用的,那么它至少是等效的。@kindall:这是AST结构的定义,而不是语法。它不使用该语法生成解析器。实际上,语法是ASDL格式的,为什么它会出现呢?我假设如果它不是CPython实际使用的,那么它至少是等效的。@kindall:这是AST结构的定义,而不是语法。感谢源文件中的信息,这非常有用。但是,我们仍然不知道确切使用的是什么符号。我已经更新了答案,以包含解析器的注释,希望能够回答这个问题。@siegmeyer:这是一种特殊的、松散的格式,没有正式的规范,是由python开发团队专为解析python而创建的。唯一明确和明确的描述是pgen程序,该程序解释它并创建cpython解析器。我试图避免说“使用的符号是pgen支持的符号”,但@rici说:)。谢谢谢谢你提供源文件的信息,这非常有用。但是,我们仍然不知道确切使用的是什么符号。我已经更新了答案,以包含解析器的注释,希望能够回答这个问题。@siegmeyer:这是一种特殊的、松散的格式,没有正式的规范,是由python开发团队专为解析python而创建的。唯一明确和明确的描述是pgen程序,该程序解释它并创建cpython解析器。我试图避免说“使用的符号是pgen支持的符号”,但@rici说:)。谢谢