我对 F# 和 FParsec 还很陌生,我什至不想通过展示我到目前为止所拥有的东西来让自己难堪。
在 FParsec 示例中,AST 中的每种类型(我看到的)都是单个值、列表或元组的类型缩写。
如果我有一个复杂的类型,它应该包含一个解析过的函数名和它的参数怎么办?
因此,f(a, b, c)
将被解析为PFunction
具有字符串成员Name
和PParameter
列表成员的类型的对象Parameters
。我怎样才能从一个可以匹配的解析器f(a, b, c)
变成|>>
一个PFunction
?
到目前为止,我似乎能做的就是创建复合解析器,但不把它变成任何东西。如果 Calculator 示例包含类似 Term 的类型的 AST,但在我看来,它似乎是解释器而不是解析器,因此没有 AST。此外,术语可能只是其他类型缩写组件的元组。
谢谢!