go - 在 Go 中制作 AST
问题描述
我正在为 go 中的自定义语言编写解析器。我的问题是语法树上的每个节点都根据其类型(无论是 anif
或 avariableDef
或 a funcDef
)而不同,因此具有不同的值,但我需要有可以指向其中任何一个的指针,以赋予它树状功能.
有人建议使用interface
, 类似于describe
描述节点的方法(依赖于实现),但问题是它会根据节点返回不同的东西。(AfuncDef
会给出args []variableDef
and body []node
,但 if 会给出cond bin
and body []node
,而变量 def 会给出type typ
and name string
)
我最初是用 JS 编写的,并利用 JSON 的灵活性来发挥我的优势。我听说 Go 有内置的 JSON 支持,但我不认为我想走这条路。
解决方案
推荐阅读
- python - 在 start_urls 中传递不同的 url
- google-cloud-firestore - 如何有效地将关联记录存储在 Cloud Firestore 中?
- c# - 有没有办法从事件订阅者返回一个值
- sql - 如何动态插入行
- c - 将结构指针或数组作为函数参数传递
- scala - 使用多个 Web 服务和合并输出的 Scala 惯用和最快方式
- json - 使用 SQL Server 将 JSON 数组对象插入到两个表中
- ruby-on-rails - 有没有办法将 Rails 默认时间戳更改为 Ymd H:i:s(而不是 Ymd H:i:su)或让 laravel 忽略 Ymd H:i:su 的小数部分?
- android - 底部导航视图图标与文本重叠
- php - Apache PHP/PDO - 登录超时已过期