From f88d78d60bad406ce775d29ec5891d8c46974119 Mon Sep 17 00:00:00 2001 From: Einhard Leichtfuß Date: Wed, 21 May 2025 11:51:00 +0200 Subject: Rename auxiliary parser modules --- src/Language/SimpleShell/Parser.hs | 40 ------------------------ src/Language/SimpleShell/Parser/Common/Lexeme.hs | 40 ++++++++++++++++++++++++ src/Language/SimpleShell/Parser/Common/Root.hs | 12 +++++++ src/Language/SimpleShell/Parser/Expr.hs | 4 +-- src/Language/SimpleShell/Parser/Function.hs | 4 +-- src/Language/SimpleShell/Parser/Module.hs | 2 +- src/Language/SimpleShell/Parser/Name.hs | 2 +- src/Language/SimpleShell/Parser/Root.hs | 12 ------- 8 files changed, 58 insertions(+), 58 deletions(-) delete mode 100644 src/Language/SimpleShell/Parser.hs create mode 100644 src/Language/SimpleShell/Parser/Common/Lexeme.hs create mode 100644 src/Language/SimpleShell/Parser/Common/Root.hs delete mode 100644 src/Language/SimpleShell/Parser/Root.hs (limited to 'src/Language/SimpleShell') diff --git a/src/Language/SimpleShell/Parser.hs b/src/Language/SimpleShell/Parser.hs deleted file mode 100644 index 5f536ed..0000000 --- a/src/Language/SimpleShell/Parser.hs +++ /dev/null @@ -1,40 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE FlexibleContexts #-} - -module Language.SimpleShell.Parser - ( lexeme - , symbol - , commentFirstChars - ) -where - - -import Control.Monad (void) -import Data.Text (Text) -import Text.Megaparsec (MonadParsec) -import Text.Megaparsec.Char (space1) -import qualified Text.Megaparsec.Char.Lexer as L - ( lexeme - , symbol - , space - , skipLineComment - , skipBlockComment - ) - - --- Must be kept in sync with 'commentFirstChars'. -sc :: (MonadParsec e Text m) => m () -sc = L.space - space1 - (L.skipLineComment "//") - (L.skipBlockComment "/*" "*/") - --- | List of all characters that may start a comment. -commentFirstChars :: [Char] -commentFirstChars = "/" - -lexeme :: (MonadParsec e Text m) => m a -> m a -lexeme = L.lexeme sc - -symbol :: (MonadParsec e Text m) => Text -> m () -symbol = void . L.symbol sc diff --git a/src/Language/SimpleShell/Parser/Common/Lexeme.hs b/src/Language/SimpleShell/Parser/Common/Lexeme.hs new file mode 100644 index 0000000..c0a6fd6 --- /dev/null +++ b/src/Language/SimpleShell/Parser/Common/Lexeme.hs @@ -0,0 +1,40 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE FlexibleContexts #-} + +module Language.SimpleShell.Parser.Common.Lexeme + ( lexeme + , symbol + , commentFirstChars + ) +where + + +import Control.Monad (void) +import Data.Text (Text) +import Text.Megaparsec (MonadParsec) +import Text.Megaparsec.Char (space1) +import qualified Text.Megaparsec.Char.Lexer as L + ( lexeme + , symbol + , space + , skipLineComment + , skipBlockComment + ) + + +-- Must be kept in sync with 'commentFirstChars'. +sc :: (MonadParsec e Text m) => m () +sc = L.space + space1 + (L.skipLineComment "//") + (L.skipBlockComment "/*" "*/") + +-- | List of all characters that may start a comment. +commentFirstChars :: [Char] +commentFirstChars = "/" + +lexeme :: (MonadParsec e Text m) => m a -> m a +lexeme = L.lexeme sc + +symbol :: (MonadParsec e Text m) => Text -> m () +symbol = void . L.symbol sc diff --git a/src/Language/SimpleShell/Parser/Common/Root.hs b/src/Language/SimpleShell/Parser/Common/Root.hs new file mode 100644 index 0000000..c0ec448 --- /dev/null +++ b/src/Language/SimpleShell/Parser/Common/Root.hs @@ -0,0 +1,12 @@ +module Language.SimpleShell.Parser.Common.Root + ( RootParser + ) +where + + +import Data.Void (Void) +import Data.Text (Text) +import Text.Megaparsec (Parsec) + + +type RootParser = Parsec Void Text diff --git a/src/Language/SimpleShell/Parser/Expr.hs b/src/Language/SimpleShell/Parser/Expr.hs index ab27555..dddc82a 100644 --- a/src/Language/SimpleShell/Parser/Expr.hs +++ b/src/Language/SimpleShell/Parser/Expr.hs @@ -14,13 +14,13 @@ where import Language.SimpleShell.AST.Expr (Expr(..), TypedExpr) import Language.SimpleShell.AST.Name (FunName, VarName) import Language.SimpleShell.AST.SimpleType (SimpleType(..), Typed, FunSig) -import Language.SimpleShell.Parser +import Language.SimpleShell.Parser.Common.Lexeme ( lexeme , symbol , commentFirstChars ) +import Language.SimpleShell.Parser.Common.Root (RootParser) import Language.SimpleShell.Parser.Name (nameP, keyword) -import Language.SimpleShell.Parser.Root (RootParser) import Language.SimpleShell.Parser.SimpleType (forceType) import Control.Monad.Combinators.FailExpr ( Associativity(..) diff --git a/src/Language/SimpleShell/Parser/Function.hs b/src/Language/SimpleShell/Parser/Function.hs index 0753952..3565966 100644 --- a/src/Language/SimpleShell/Parser/Function.hs +++ b/src/Language/SimpleShell/Parser/Function.hs @@ -11,14 +11,14 @@ 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 (symbol) +import Language.SimpleShell.Parser.Common.Lexeme (symbol) +import Language.SimpleShell.Parser.Common.Root (RootParser) 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 ((<|>)) diff --git a/src/Language/SimpleShell/Parser/Module.hs b/src/Language/SimpleShell/Parser/Module.hs index 01a8975..a20ee7a 100644 --- a/src/Language/SimpleShell/Parser/Module.hs +++ b/src/Language/SimpleShell/Parser/Module.hs @@ -8,7 +8,7 @@ where import Language.SimpleShell.AST.Module (Module) import Language.SimpleShell.AST.Name (FunName, ProcedureName) import Language.SimpleShell.AST.SimpleType (FunSig, ProcedureSig) -import Language.SimpleShell.Parser.Root (RootParser) +import Language.SimpleShell.Parser.Common.Root (RootParser) import Control.Monad.Reader (ReaderT, runReaderT) import Control.Monad.State (StateT, execStateT) diff --git a/src/Language/SimpleShell/Parser/Name.hs b/src/Language/SimpleShell/Parser/Name.hs index 2691a36..235a9fb 100644 --- a/src/Language/SimpleShell/Parser/Name.hs +++ b/src/Language/SimpleShell/Parser/Name.hs @@ -7,7 +7,7 @@ module Language.SimpleShell.Parser.Name where -import Language.SimpleShell.Parser (lexeme) +import Language.SimpleShell.Parser.Common.Lexeme (lexeme) import Control.Monad (void) import Data.Text (Text, cons) diff --git a/src/Language/SimpleShell/Parser/Root.hs b/src/Language/SimpleShell/Parser/Root.hs deleted file mode 100644 index 9fa32ff..0000000 --- a/src/Language/SimpleShell/Parser/Root.hs +++ /dev/null @@ -1,12 +0,0 @@ -module Language.SimpleShell.Parser.Root - ( RootParser - ) -where - - -import Data.Void (Void) -import Data.Text (Text) -import Text.Megaparsec (Parsec) - - -type RootParser = Parsec Void Text -- cgit v1.2.3