对于各种玩具项目,我希望能够将对象语言嵌入到PolyML顶层,比如HOL的回勾语法,其中backticks之间的表达式由自定义解析器解析。
我不介意特定的分隔语法: backticks ...,guillemets <<...>>,或者类似于{AC.26.\\}之类的语法。我只希望能够在顶层编写表达式,并由自定义解析器对它们进行解析。
例如,如果我的数据类型类似于
datatype expression =
Add of expression * expression
| Int of int
| Mul of expression * expression我希望能够键入以下内容:
> `3 + 2 * 5`;
val it = Add (Int 3, Mul (Int 2, Int 5)): expression这有可能(简单地说)吗?
发布于 2022-07-18 16:34:05
对于你的情况,你可以用这样的方法来近似这个
val op + = Add
val op * = Mul
val ` = Int
val it = `3 + `2 * `5但是,这将不会使用自定义解析器或任何东西,而只是依赖于现有的解析器。
如果您想使用自定义解析器,最简单的方法就是编写一个函数parse : string -> expression并在顶层手动应用它。
https://stackoverflow.com/questions/73023083
复制相似问题