From 99e2ce71faa82e7b99574895e0fe24183ba9f6c3 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Wed, 5 Nov 2025 12:02:23 +0100 Subject: can parse whole programs and load them --- lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs') diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs index b0f4b8f..a0cc577 100644 --- a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs +++ b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs @@ -67,6 +67,11 @@ pretty = \case App x y rest -> "(" <> mconcat (List.intersperse " " (pretty <$> (x : y : rest))) <> ")" Def name body -> "(def " <> name <> " " <> pretty body <> ")" +parseProgram :: Text -> Either ParseError [AST] +parseProgram input = + first (ParseError . pack . errorBundlePretty) $ + Text.Megaparsec.parse (many ast) "" input + parse :: Text -> Either ParseError AST parse = first (ParseError . pack . errorBundlePretty) . Text.Megaparsec.parse ast "" -- cgit v1.3.1