如何处理具体语法树?

时间:2010-02-03 02:50:22

标签: python parsing concrete-syntax-tree

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

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

我的问题是此时我该怎么做?我知道很多东西取决于我想要做什么,但我没有找到很多关于消费/使用解析树,只创建它们。有没有人对我可能使用的参考文献有任何指示?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我们有一个社区委员会来支持围绕pyPEG的此类问题。您可以在此处找到它:https://community.fdik.org/board/show/2/pypeg/

此致, VB。