Support for single line comment syntax using --

This commit is contained in:
James Eversole 2024-12-28 07:15:25 -06:00 committed by James Eversole
parent fe62e63c22
commit a9432777e5
2 changed files with 13 additions and 3 deletions

View File

@ -3,6 +3,8 @@ module Lexer where
import Research import Research
import Text.Megaparsec import Text.Megaparsec
import Text.Megaparsec.Char import Text.Megaparsec.Char
import Control.Monad (void)
import Data.Void import Data.Void
import qualified Data.Set as Set import qualified Data.Set as Set
@ -21,6 +23,7 @@ data LToken
| LOpenBracket | LOpenBracket
| LCloseBracket | LCloseBracket
| LNewline | LNewline
| LComment String
deriving (Show, Eq, Ord) deriving (Show, Eq, Ord)
keywordT :: Lexer LToken keywordT :: Lexer LToken
@ -72,8 +75,16 @@ closeBracket = char ']' *> pure LCloseBracket
lnewline :: Lexer LToken lnewline :: Lexer LToken
lnewline = char '\n' *> pure LNewline lnewline = char '\n' *> pure LNewline
comment :: Lexer LToken
comment = do
string "--"
content <- many (satisfy (/= '\n'))
optional (char '\n')
pure (LComment content)
sc :: Lexer () sc :: Lexer ()
sc = skipMany (char ' ' <|> char '\t') sc = skipMany (void (char ' ') <|> void (char '\t') <|> void comment)
saplingLexer :: Lexer [LToken] saplingLexer :: Lexer [LToken]
saplingLexer = many (sc *> choice saplingLexer = many (sc *> choice

View File

@ -5,7 +5,6 @@ import Lexer
import Parser import Parser
import Research import Research
import Control.Monad (void)
import Data.List (intercalate) import Data.List (intercalate)
import qualified Data.Map as Map import qualified Data.Map as Map
import System.Console.Haskeline import System.Console.Haskeline