S-expressions: Difference between revisions
Content deleted Content added
Line 3,063: | Line 3,063: | ||
parseExpr = go |
parseExpr = go |
||
where |
where |
||
⚫ | |||
⚫ | |||
parseToken (trees, []) = (trees, []) |
parseToken (trees, []) = (trees, []) |
||
parseToken (trees, "(" : rest) = |
parseToken (trees, "(" : rest) = |
||
Line 3,072: | Line 3,076: | ||
parseToken (trees, t : rest) = |
parseToken (trees, t : rest) = |
||
(trees <> [Node (atom t) []], rest) |
(trees <> [Node (atom t) []], rest) |
||
⚫ | |||
⚫ | |||
----------------------- TOKEN PARSER --------------------- |
----------------------- TOKEN PARSER --------------------- |
||
Line 3,085: | Line 3,085: | ||
atom s = firstParse parses |
atom s = firstParse parses |
||
where |
where |
||
firstParse [] = List [] |
|||
firstParse (x : _) = x |
firstParse (x : _) = x |
||
parses = |
parses = |
||
Line 3,092: | Line 3,091: | ||
<$> ( fmap |
<$> ( fmap |
||
(<> (' ' : s)) |
(<> (' ' : s)) |
||
[ |
["Int", "Integer", "Float", "Double"] |
||
"Integer", |
|||
"Float", |
|||
"Double" |
|||
] |
|||
<> ["Symbol \"" <> s <> "\""] |
<> ["Symbol \"" <> s <> "\""] |
||
) |
) |
||
Line 3,111: | Line 3,106: | ||
go token@('"' : _) = [token] |
go token@('"' : _) = [token] |
||
go s = words $ spacedBrackets s |
go s = words $ spacedBrackets s |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
quoteTokens :: Char -> String -> [String] |
quoteTokens :: Char -> String -> [String] |
||
Line 3,124: | Line 3,113: | ||
go (i, k) |
go (i, k) |
||
| even i = [k] |
| even i = [k] |
||
| otherwise = [q : k <> [q]] |
| otherwise = [q : k <> [q]] |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
{{Out}} |
{{Out}} |
||
<pre>Symbol "List" |
<pre>Symbol "List" |