什么是使用 F# 解析 AST 并构建解释器的最佳方法?有许多 F# 的示例适用于简单的语法(基本算术操作),但我似乎找不到适用于具有更大范围特性的语言的示例。
区分联合看起来非常有用,但如果选项很多,应该如何构造它?是在其他地方定义类型(例如加法、减法、条件语句、控制流)并将它们作为预定义类型引入联合中更好呢?
或者我错过了编写解释器的其他更有效的方法?对于每种类型使用一个 eval 函数是否更有效,或者也许使用单子?
提前感谢您。
区分联合看起来非常有用,但如果选项很多,应该如何构造它?是在其他地方定义类型(例如加法、减法、条件语句、控制流)并将它们作为预定义类型引入联合中更好呢?
或者我错过了编写解释器的其他更有效的方法?对于每种类型使用一个 eval 函数是否更有效,或者也许使用单子?
提前感谢您。