Как получить построенное дерево в ply, используя пример документации? - PullRequest
0 голосов
/ 11 июня 2019

В документации показан пример построения дерева:

 def p_expression_binop(p):
     '''expression : expression PLUS expression
                   | expression MINUS expression
                   | expression TIMES expression
                   | expression DIVIDE expression'''

     p[0] = ('binary-expression',p[2],p[1],p[3])

 def p_expression_group(p):
     'expression : LPAREN expression RPAREN'
     p[0] = ('group-expression',p[2])

 def p_expression_number(p):
     'expression : NUMBER'
     p[0] = ('number-expression',p[1])

Но мой вопрос: когда эти деревья создаются, куда эти узлы идут? или как мне получить к ним доступ из p [0]?

1 Ответ

2 голосов
/ 11 июня 2019

До тех пор, пока вы убедитесь, что узел прошел весь путь к вершине (то есть действие для начального символа), вы просто используете возвращаемое значение вызова для parse.

Из документации:

Всякий раз, когда синтаксический анализатор уменьшает начальное правило и больше не доступно ввода, синтаксический анализ останавливается, и возвращается окончательное значение (это значение будет любым из самых верхнихправило помещено в p[0]).

...