1

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

[('command',
  [('directives',
    [('directive',
      [('name', 'retrieve')]),
     ('directive',
      [('name', 'commit')])]),
   ('filename',
    [('name', 'f30502')])])]

我的问题是此时我该怎么办?我知道很多取决于我想要做什么,但我无法找到很多关于消费/使用解析树的信息,只能创建它们。有没有人有任何指向我可能使用的引用的指针?

谢谢你的帮助。

4

1 回答 1

2

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

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

于 2010-02-03T03:55:59.573 回答