summaryrefslogtreecommitdiffstats
path: root/parser.sml
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-05-05 21:12:16 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-05-05 21:12:16 -0700
commit457c482397e2ca745067e5a3ef2c7d71d7daf187 (patch)
treeaef2b8d88421829105a3c6b8887d8ffde39d5e1e /parser.sml
parentChange some formatting (diff)
downloadsml-457c482397e2ca745067e5a3ef2c7d71d7daf187.tar.zst
Add tuples.
Diffstat (limited to 'parser.sml')
-rw-r--r--parser.sml6
1 files changed, 5 insertions, 1 deletions
diff --git a/parser.sml b/parser.sml
index c1432f2..9325c98 100644
--- a/parser.sml
+++ b/parser.sml
@@ -351,7 +351,11 @@ struct
val rec atpat : Syntax.pat parser = fn st =>
(Syntax.PWild <$ reserved "_"
<|> Syntax.PInt <$> integer
- <|> between (symbol "(") (symbol ")") pat
+ <|> bind (between (symbol "(") (symbol ")") (sepBy pat (symbol ","))) (fn pats =>
+ const
+ (case pats of
+ [p] => p
+ | _ => Syntax.PTuple pats))
<|> Syntax.PVar <$> identifier) st
and pat : Syntax.pat parser = fn st => atpat st