【问题标题】:What does "walk the abstract syntax tree" mean?“遍历抽象语法树”是什么意思?
【发布时间】:2015-08-29 17:30:56
【问题描述】:

我在一个编译器类中,我们必须在其中用 OCaml 编写一个编译器,我一直听说一个必要的步骤是“遍历抽象语法树”。这在理论上和实际编写代码方面意味着什么?

【问题讨论】:

  • @Thomas 因为它是一个编译器类,而不是解释器类,所以我不希望任何东西被评估。除了评估它之外,您还想通过 AST 进行测试的原因有很多。
  • 在此上下文中与“遍历”同义:您需要遍历 AST。这样做的一个原因可能是用类型来装饰 AST。就实际编写代码而言,可能会涉及到对抽象语法结构进行模式匹配的递归函数。

标签: ocaml abstract-syntax-tree


【解决方案1】:

这意味着你需要一个 AST 并遍历节点来做某事,就像遍历一个列表一样。所以像这样的

match ast_token with
| INT_LITERAL(x) -> dsw x
| IF_EXPRESSION(p, e1, e2) -> dsw p e1 e2
...

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 2015-11-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多