显然,如果您添加任何解析操作并在该操作中返回结果,结果将始终封装到列表中并加深'输出树。
我认为这是为了返回多个值,但它使得随意使用库变得更加困难,因为你必须记住你替换的树的哪些部分并调用result.normalstruct.replaced[0]
(甚至更糟result.normalstruct['replaced'][0]
)
这有点奇怪,让重构变得更难,所以我想要一种避免重构的方法。有什么提示吗?
答案 0 :(得分:1)
这里的问题是setParseAction
的参数标记已经是一个列表。我不应该在str(token_argument)
上操作,而应该在str(token_argument[0])
上操作并返回。不再深化。
编辑:虽然显然它并不总是发生。用一个单词动作发生在我身上,但是当我试图解开' '和'的元素零表达式来自setParseAction仿函数,它给了我第一个子表达式。
伙计,我喜欢这里的一致性。