我正在尝试使用parsec
库在haskell中实现简单的解析器(用于学习目的)。所以我写了一堆数据结构和相关函数,如下所示:
data SourceElement
= StatementSourceElement Statement
| FunctionSourceElement FunctionName FunctionBody
data Statement
= IfStatement Expr Statement Statement
| WhileStatement Expr Statement
data FunctionBody = FunctionBody [SourceElement]
parseSourceElement :: Parser SourceElement
parseSourceElement = ...
parseFunctionBody :: Parser FunctionBody
parseFunctionBody = ...
它工作正常。现在我想把这些东西分成两个模块来分开FunctionBody
和Statement
数据结构(因为可读性问题)。但我不能!原因是 和 之间的循环SourceElement
依赖FunctionBody
。
那么,有没有办法解决这个问题呢?