diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2024-04-07 09:11:28 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2024-04-07 09:11:28 -0700 |
| commit | 278ee46f0fa93a3db4ebdc6878fcd9b1d990094a (patch) | |
| tree | 85cd7b4703cacea8111ea05766089ca73aac9abb /parser.sml | |
| parent | bc2fef3a2ab81270af207568706647ced919bbe6 (diff) | |
| download | sml-278ee46f0fa93a3db4ebdc6878fcd9b1d990094a.tar.zst | |
Add tests and fix variables.
Diffstat (limited to 'parser.sml')
| -rw-r--r-- | parser.sml | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -447,7 +447,12 @@ struct const (Syntax.ELambda (p, e))))) <|> raiseExpr) st and expr : Syntax.expr parser = fn st => fnExpr st - and dec : Syntax.dec parser = fn st => (reserved "val" >> reserved "_" >> reserved "=" >> Syntax.DVal <$> expr) st + and dec : Syntax.dec parser = fn st => + (reserved "val" >> + bind pat (fn p => + reserved "=" >> + bind expr (fn e => + const (Syntax.DVal (p, e))))) st val program : Syntax.expr parser = (fn decs => Syntax.ELet (decs, Syntax.EInt 0)) <$> many dec fun parse (f : string) : (string, Syntax.expr) Result.either = runParser program f |
