All of the parsers in Text.Parsec.Token politely use lexeme to eat whitespace after a token. Unfortunately for me, whitespace includes new lines, whic
Text.Parsec.Token
lexeme
If newlines are your expression terminators, maybe it would make sense to split the input at each newline and parsing each line on its own.