Fla*_*ius 6 algorithm parsing programming-languages compiler-theory
我有一组S"小"树S[i] ,我需要找到它们在更大的内部的位置, 这些树被用作模式以在更大的树中找到匹配的子树T.我知道S在开始构建之前T(这是一个解析树),所以我正在考虑使用切割平面方法来匹配节点(因为解析器生成CST).
中的树S不是相同的AST T- 想想XPath与XML - S保存XPath 的树表示,T而是源代码的实际AST - 我需要映射i和匹配节点的向量T.
但是我不确定我会使用的算法的名称.
基本上我知道我想要做的,感觉就像一个" 分而治之的树"用栈,我持有可能的候选人进行匹配,在LALR解析器每班我重复堆栈的顶部,消除考生i从S[i]其中无论如何都不会匹配,并且在减少后我从堆栈中弹出.最初,所有成员S都是可能的候选人.
请注意:这只是AST,ASG是另一个故事......
附录
这是一个解析树T.

解析函数将以规范形式(也表示为树)存储在其中,知道我称之为"树路径"的列表S.但它们看起来不像parsetree,它们有自己的语言可供表示,类似于XPath.
用于获取具有变量返回值的所有函数的树路径示例:
function[body[return[expr[@type="variable"]]]]]
Run Code Online (Sandbox Code Playgroud)