我该如何使用具体语法树?

exu*_*ero 4 python parsing concrete-syntax-tree

我正在使用pyPEG为简单语法创建解析树。该树使用列表和元组来表示。这是一个例子:

[('command',
  [('directives',
    [('directive',
      [('name', 'retrieve')]),
     ('directive',
      [('name', 'commit')])]),
   ('filename',
    [('name', 'f30502')])])]
Run Code Online (Sandbox Code Playgroud)

我的问题是此时我该怎么办?我知道很大程度上取决于我想要做什么,但我无法找到太多有关使用/使用解析树的信息,只能创建它们。有人有我可能使用的参考资料吗?

感谢您的帮助。

Eli*_*sky 6

由于某些原因, CST(具体语法树)很难使用。因此,它们通常会转换为 AST(抽象语法树)以进行进一步处理(同一篇文章中有详细信息)。例如,Python 编译器(将 Python 源代码转换为 Python VM 字节码的组件)将 CST 转换为 AST,作为其工作的一部分。

现在,这确实很大程度上取决于您的最终目标。你在解析什么?你想用它做什么?如果您要重新创建经典编译流程,转换为 AST 可能是一个好方法。否则,您可能会发现 CST 就足够了 - 这完全取决于您的需要。