时间:2010-07-24 14:55:13

标签: haskell newline alex

2 个答案:

答案 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)