我想使用 ParsecmakeTokenParser
来构建我的解析器,但我想使用我自己的whiteSpace
. 执行以下操作将替换whiteSpace
为我的定义,但所有lexeme
解析器仍使用旧定义(例如P.identifier lexer
,将使用旧空白)。
...
lexer :: P.TokenParser ()
lexer = l { P.whiteSpace = myWhiteSpace }
where l = P.makeTokenParser myLanguageDef
...
查看代码,makeTokenParser
我想我明白它为什么会这样工作。我想知道是否有任何解决方法可以避免完全复制代码makeTokenParser
?