Я пытаюсь разобрать язык на основе отступов (например, Python, сам Haskell, Boo, YAML) в Haskell с использованием Parsec. Я видел библиотеку IndentParser, и похоже, что это идеальное совпадение, но я не могу понять, как превратить мой TokenParser в анализатор отступов. Вот код, который у меня есть до сих пор:
import qualified Text.ParserCombinators.Parsec.Token as T
import qualified Text.ParserCombinators.Parsec.IndentParser.Token as IT
lexer = T.makeTokenParser mylangDef
ident = IT.identifier lexer
Это вызывает ошибку:
parser2.hs:29:28:
Couldn't match expected type `IT.TokenParser st'
against inferred type `T.GenTokenParser s u m'
In the first argument of `IT.identifier', namely `lexer'
In the expression: IT.identifier lexer
In the definition of `ident': ident = IT.identifier lexer
Что я делаю неправильно? Как мне создать IT.TokenParser? Или IndentParser не работает, и его следует избегать?