首页 > 解决方案 > 如何使用文档示例获得构造树?

问题描述

文档中,他们展示了这个示例来构建一棵树:

 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] 访问它们?

标签: pythontreeabstract-syntax-treeply

解决方案


只要确保节点一直传递到顶部(即开始符号的操作),您只需使用调用的返回值即可parse

从文档中:

每当解析器减少起始规则并且没有更多可用输入时,解析停止并返回最终值(该值将是放置在 中的最顶层规则p[0])。


推荐阅读