你可以用
scan
:
scan :: s -> (s -> Word8 -> Maybe s) -> Parser ByteString
它看起来像这样:
transitions :: [((Int, Char), Int)]
transitions = [((0, '-'), 1), ((1, '-'), 2), ((2, '-'), 2), ((2, '>'), 3)]
dfa :: Int -> Word8 -> Maybe Int
dfa 3 w = Nothing
dfa s w = lookup (s, toEnum (fromEnum w)) transitions <|> Just 0
scan 0 dfa
将字节数增加到并包括final
"-->"
“-->”
到目前为止我们已经看到了。一旦我们看到他们,我们就通知他们
扫描
*Enum
调用查找表,甚至考虑直接编写函数。