首页 > 解决方案 > 在 Go 中制作 AST

问题描述

我正在为 go 中的自定义语言编写解析器。我的问题是语法树上的每个节点都根据其类型(无论是 anif或 avariableDef或 a funcDef)而不同,因此具有不同的值,但我需要有可以指向其中任何一个的指针,以赋予它树状功能.

有人建议使用interface, 类似于describe描述节点的方法(依赖于实现),但问题是它会根据节点返回不同的东西。(AfuncDef会给出args []variableDefand body []node,但 if 会给出cond binand body []node,而变量 def 会给出type typand name string

我最初是用 JS 编写的,并利用 JSON 的灵活性来发挥我的优势。我听说 Go 有内置的 JSON 支持,但我不认为我想走这条路。

标签: goabstract-syntax-treego-interface

解决方案


推荐阅读