答案 0 :(得分:3)
这个问题真的很老了,不过我会为未来的访客发布我的答案。当定义了令牌时,我告诉alex处理所有空格:
tokens :-
$white {\p s -> checkWhite p $ head s}
checkWhite
看起来像这样:
checkWhite :: AlexPosn -> Char -> Token
checkWhite p '\n' = TNewLine p
checkWhite p _ = TEmpty
如您所见,遇到换行时会输出一个特殊标记。要从输出中删除TEmpty
,您可以使用... filter (\= TEmpty) $ alexScanTokens ...
。
答案 1 :(得分:1)