Ответ 1
Мое чтение файла Text.ParserCombinators.Parsec.Language
заключается в том, что это невозможно сделать напрямую с помощью LanguageDef
.
Я считаю, что вы на правильном пути, чтобы написать свой собственный парсер whiteSpace
. Чтобы использовать его успешно, вам необходимо перезаписать парсер whiteSpace
, который генерируется makeTokenParser
. TokenParser
, созданный makeTokenParser
, является записью с каждым полем, содержащим синтаксический анализатор. Мы можем создать новую копию записи с заменой одного из этих полей следующим образом:
-- ask GCHi for the type actual type signature constraints
-- Type sig is approx. fixWhiteSpace :: TokenParser -> Parser -> TokenParser
fixWhiteSpace originalTokenParser myWhiteSpaceParser =
originalTokenParser {whiteSpace = myWhiteSpaceParser}