PLY中双括号的含义

Meaning of double brackets in PLY

在使用PLY解析包的代码中,遇到了这样的语法规则:

    def p_clauses(self, p):
        """clauses : clauses clause"""
        p[0] = p[1] + [p[2]]

p[2] 两边的括号有什么用?我在 documentation.

中找不到任何相关信息

PSHere is the more complete parser code if needed. Also, here 是另一个使用此语法的示例(它是 C 解析器)。

p[0] 是 p[1] + 包含 p[2] 的新列表。

外括号和内括号没有任何关系。外括号做的事情与它们在 l = [1, 2, 3] 这样的语句中所做的相同:它们代表列表构建。 [p[2]] 构建一个列表,其一个元素是 p[2].

这里,p[1]是一个列表,赋值集p[0]为一个新的列表p[1]和一个新的单元素列表[p[2]] .