S-expressions: Difference between revisions
m
→{{header|Haskell}}: (disaggregated expression parser)
m (→Python :: Functional: (Disaggregated the expression parser)) |
m (→{{header|Haskell}}: (disaggregated expression parser)) |
||
Line 3,071:
parseExpr :: [String] -> (Val, [String])
parseExpr = until finished parseToken . (mempty,)
finished (_, []) = True▼
finished (_, token : _) = ")" == token▼
finished :: (Val, [String]) -> Bool
parseToken (v, "(" : rest) =▼
bimap▼
((v <>) . List . return)▼
tail▼
parseToken :: (Val, [String]) -> (Val, [String])
(parseExpr rest)▼
parseToken (v, t : rest) = (v <> List [atom t], rest)▼
----------------------- TOKEN PARSER ---------------------
|