例如,我将为一个非常简单的递归语法提取一个抽象语法树 对于C函数调用语句。我把语法定义为:
name = Word(srange("[a-z]"), srange("[a-zA-Z0-9_]"))
func_args = Forward()
func_call = (name + "(" + func_args + ZeroOrMore(Word(",") + func_args) + ")").setParseAction(create_node)
func_args <<= (func_call | name)
res = func_call.parseString("func1(func2(v1,func3(v2,v3)))", True)
解析是可以的,但我无法找到创建AST的最佳方法。在
对于这个示例字符串,我想要的是这个AST:
^{pr2}$假设我有一个类tree
。当对第一个func3(v2, v3)
调用回调create_node
时,我应该使用childsv2
和v3
等为{
当您的示例代码出现在我身上时,您是否尝试命名标记(类似于下面所示),然后在解析结果上使用
dump()
?在恐怕你得修改一下这个代码,但是在这条路线的某个地方。在
相关问题 更多 >
编程相关推荐