Я пытаюсь реализовать простой синтаксический анализатор в haskell, используя библиотеку parsec
(для учебных целей). Поэтому я написал кучу структурных данных и связанных с ними функций следующим образом:
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
.
Итак, есть ли способ решить эту проблему?