S-expressions: Difference between revisions
m
→{{header|Haskell}}
(→{{header|Haskell}}: Added a variant which parses by hand and shows a parse tree diagram.) |
|||
Line 3,064:
<$> fst (parseExpr (tokenized expr))
------------------
parseExpr :: [String] -> ([Tree Val], [String])
parseExpr = go
where
finished (_, ")" : _) = True▼
parseToken (trees, []) = (trees, [])
parseToken (trees, "(" : rest) =
Line 3,082 ⟶ 3,078:
parseToken (trees, t : rest) =
(trees <> [Node (atom t) []], rest)
go tokens = until finished parseToken ([], tokens)
----------------------
atom :: String -> Val
|