Значение двойных скобок в PLY - PullRequest
1 голос
/ 18 января 2020

В коде, использующем пакет синтаксического анализа PLY , я столкнулся с грамматическим правилом, подобным этому:

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

для чего используются скобки вокруг p[2]? Я не смог найти ничего о документации .

PS : Здесь - более полный код парсера, если это необходимо. Кроме того, здесь является еще одним примером, использующим этот синтаксис (это C синтаксический анализатор).

Ответы [ 2 ]

4 голосов
/ 18 января 2020

Внешние скобки и внутренние скобки не имеют ничего общего друг с другом. Внешние скобки делают то же самое, что и в выражении типа l = [1, 2, 3]: они представляют построение списка. [p[2]] создает список, один элемент которого p[2].

. Здесь p[1] представляет собой список, и присвоение устанавливает p[0] для нового списка, созданного путем сложения вместе p[1] и нового одноэлементный список [p[2]].

0 голосов
/ 18 января 2020

p [0] - это p [1] + новый список, который содержит p [2].

...