【发布时间】:2021-02-04 23:43:59
【问题描述】:
newtype Program = Program [Global] [Function]
我在 Haskell 中使用类 C 语法解析源文件,其中全局变量和函数位于顶层。如果它们必须按顺序排列,例如所有全局变量之后的函数,解析起来很简单。但它们可以按任何顺序出现,如下所示。如何处理这样的语法?
全局0
函数0
全球1
函数1
函数2
全球2
似乎可以使用 Parsec.Perm,但 the example 在所有选择返回相同类型(十进制)时有效,而我的情况返回 Global或功能。
【问题讨论】:
-
data Declaration = DeclGlobal Global | DeclFunction Function. -
至于排列解析:它适用于你最多想要每件事一个,以任何顺序。由于您希望允许任意数量的每个,这实际上是一个更容易解决的问题。