Я пытаюсь разобрать язык на основе отступа (думаю, 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 сломан и его следует избегать?