【发布时间】:2017-05-12 06:19:57
【问题描述】:
我试图将我的语法定义为有区别的联合。它有两种可能的类型:int 和datetime 以及Add 和Mul 的数学运算符。
Add 适用于 int 和 datetime(在 int 中添加天数)
Mul 仅适用于 int 而不适用于 datetime
语法可以递归
我的语法看起来像
type MyExpression =
|Integer of int
|Date of datetime
|Add of MyExpression * MyExpression
|Mul of MyExpression * MyExpression
我已经编写了一个解析器 (fparsec),它可以解析我的语法中的文本,但我不确定如何处理 Mul 可以递归但只能在 Integer 上递归的情况。
是否可以选择对我的 MyExpression 类型定义此限制,或者我是否必须在解析的输入中处理此限制?
【问题讨论】:
标签: f# restriction f#-3.0