Ich möchte Parsec's makeTokenParser
verwenden, um meinen Parser zu erstellen, aber ich möchte meine eigene Definition von whiteSpace
verwenden. Das folgende Vorgehen ersetzt whiteSpace
durch meine Definition, aber alle lexeme
Parser verwenden immer noch die alte Definition (z. B. P.identifier lexer
wird den alten whiteSpace verwenden).Benutzerdefinierter whiteSpace mit Haskell Parsec
...
lexer :: P.TokenParser()
lexer = l { P.whiteSpace = myWhiteSpace }
where l = P.makeTokenParser myLanguageDef
...
auf den Code der Suche nach makeTokenParser
Ich glaube, ich verstehe, warum es so funktioniert. Ich möchte wissen, ob es Problemumgehungen gibt, um zu vermeiden, den Code für makeTokenParser
vollständig zu duplizieren?
Related: http://stackoverflow.com/questions/5672142/in-parsec-is-there-a-way-to-prevent-lexeme-from-consuming-newlines –