From fd94a9d8a3e4fc86e5128715a2bc68187c872970 Mon Sep 17 00:00:00 2001 From: Einhard Leichtfuß Date: Tue, 20 May 2025 19:40:53 +0200 Subject: Reduce name parsers to nameP There is no good reason to have different syntax for variable and function names, for example. --- src/Language/SimpleShell/Parser/Function.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/Language/SimpleShell/Parser/Function.hs') diff --git a/src/Language/SimpleShell/Parser/Function.hs b/src/Language/SimpleShell/Parser/Function.hs index 29ebbaa..26f5a5c 100644 --- a/src/Language/SimpleShell/Parser/Function.hs +++ b/src/Language/SimpleShell/Parser/Function.hs @@ -12,7 +12,7 @@ import Language.SimpleShell.AST.Name (VarName) import Language.SimpleShell.AST.SimpleType (FunSig, Typed) import Language.SimpleShell.Parser (Parser, symbol, declareVars) import Language.SimpleShell.Parser.Expr (strongTermP) -import Language.SimpleShell.Parser.Name (funNameP, varNameP, keyword) +import Language.SimpleShell.Parser.Name (nameP, keyword) import Language.SimpleShell.Parser.SimpleType (simpleTypeP, forceType) import Control.Applicative ((<|>)) @@ -23,14 +23,14 @@ functionP :: Parser (FunSig, Function) functionP = do keyword "function" t' <- simpleTypeP - fname <- funNameP + fname <- nameP params <- symbol "(" *> paramP `sepBy` symbol "," <* symbol ")" let (ts, vars) = unzip params body <- forceType t' (bodyP params) <|> fail "Function return type mismatch." return ((t', ts), Function fname vars body) paramP :: Parser (Typed VarName) -paramP = (,) <$> simpleTypeP <*> varNameP +paramP = (,) <$> simpleTypeP <*> nameP bodyP :: [Typed VarName] -> Parser (Typed Expr) bodyP params = declareVars params strongTermP -- cgit v1.2.3