diff options
Diffstat (limited to 'src/Language/SimpleShell/Parser/Function.hs')
-rw-r--r-- | src/Language/SimpleShell/Parser/Function.hs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/Language/SimpleShell/Parser/Function.hs b/src/Language/SimpleShell/Parser/Function.hs index 667a601..0753952 100644 --- a/src/Language/SimpleShell/Parser/Function.hs +++ b/src/Language/SimpleShell/Parser/Function.hs @@ -11,20 +11,21 @@ import Language.SimpleShell.AST.Expr (Expr) import Language.SimpleShell.AST.Function (Function(..)) import Language.SimpleShell.AST.Name (FunName, VarName) import Language.SimpleShell.AST.SimpleType (SimpleType, FunSig, Typed) -import Language.SimpleShell.Parser (MainParser, symbol) +import Language.SimpleShell.Parser (symbol) import Language.SimpleShell.Parser.Expr ( runExprParser , strongTermP , strongTermP_ ) import Language.SimpleShell.Parser.Name (nameP, keyword) +import Language.SimpleShell.Parser.Root (RootParser) import Language.SimpleShell.Parser.SimpleType (simpleTypeP, forceType) import Control.Applicative ((<|>)) import Text.Megaparsec (sepBy) -functionPrefixP :: MainParser (SimpleType, FunName, [Typed VarName]) +functionPrefixP :: RootParser (SimpleType, FunName, [Typed VarName]) functionPrefixP = do keyword "function" t' <- simpleTypeP @@ -33,7 +34,7 @@ functionPrefixP = do symbol "=" return (t', fname, params) -functionP :: MainParser Function +functionP :: RootParser Function functionP = do (t', fname, params) <- functionPrefixP let vars = map snd params @@ -41,7 +42,7 @@ functionP = do return $ Function fname vars body -- | First-pass function parser. -functionP0 :: MainParser (FunName, FunSig) +functionP0 :: RootParser (FunName, FunSig) functionP0 = do (t', fname, params) <- functionPrefixP let ts = map fst params @@ -49,11 +50,11 @@ functionP0 = do return (fname, (t', ts)) -paramP :: MainParser (Typed VarName) +paramP :: RootParser (Typed VarName) paramP = (,) <$> simpleTypeP <*> nameP -bodyP :: [Typed VarName] -> MainParser (Typed Expr) +bodyP :: [Typed VarName] -> RootParser (Typed Expr) bodyP params = runExprParser params strongTermP -bodyP_ :: MainParser () +bodyP_ :: RootParser () bodyP_ = runExprParser [] strongTermP_ |