我想使用Parsec的makeTokenParser
來構建我的解析器,但我想使用我自己的定義whiteSpace
。以下步驟用我的定義替換whiteSpace
,但所有lexeme
解析器仍使用舊定義(例如P.identifier lexer
將使用舊的whiteSpace)。使用Haskell Parsec的自定義whiteSpace
...
lexer :: P.TokenParser()
lexer = l { P.whiteSpace = myWhiteSpace }
where l = P.makeTokenParser myLanguageDef
...
看代碼爲makeTokenParser
我想我明白爲什麼是這樣工作的。我想知道是否有任何解決方法可以避免完全重複makeTokenParser
的代碼?
相關:http://stackoverflow.com/questions/5672142/in-parsec-is-there-a-way-to-prevent-lexeme-from-consuming-newlines – 2011-10-15 23:34:04