From d5cdf6e40b070ad82418d698bc408dc08c175d2e Mon Sep 17 00:00:00 2001 From: Einhard Leichtfuß Date: Mon, 19 May 2025 02:26:06 +0200 Subject: Add lexeme parser --- src/Language/SimpleShell/Parser.hs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Language/SimpleShell/Parser.hs b/src/Language/SimpleShell/Parser.hs index fdbeaf9..1f65456 100644 --- a/src/Language/SimpleShell/Parser.hs +++ b/src/Language/SimpleShell/Parser.hs @@ -1,5 +1,8 @@ +{-# LANGUAGE OverloadedStrings #-} + module Language.SimpleShell.Parser ( Parser + , lexeme , lookupVar , lookupFun , initContext @@ -18,6 +21,13 @@ import Data.Text (Text, unpack) import Data.Void (Void) import Text.Megaparsec (Parsec) import qualified Text.Megaparsec as MP (parseTest) +import Text.Megaparsec.Char (space1) +import qualified Text.Megaparsec.Char.Lexer as L + ( lexeme + , space + , skipLineComment + , skipBlockComment + ) type Parser = ReaderT Context (Parsec Void Text) @@ -34,6 +44,15 @@ initContext = Context } +sc :: Parser () +sc = L.space + space1 + (L.skipLineComment "//") + (L.skipBlockComment "/*" "*/") + +lexeme = L.lexeme sc + + lookupVar :: VarName -> Parser SimpleType lookupVar varname = do mt <- Map.lookup varname . ctxVars <$> ask -- cgit v1.2.3