parse string and char

This commit is contained in:
2024-02-26 17:08:26 -06:00
parent 1ffaa7378e
commit 2dc01b6c9c

View File

@@ -1,5 +1,4 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Parser where
@@ -80,13 +79,13 @@ parseComment = dbg "Comment" $ do
parseSingleComment :: Parser Text
parseSingleComment = do
_ <- string "--"
void $ string "--"
body <- manyTill anySingle newline
return $ T.pack body
parseBlockComment :: Parser Text
parseBlockComment = do
_ <- string "---"
void $ string "---"
body <- manyTill anySingle (string "---")
return $ T.pack body
@@ -165,7 +164,9 @@ parseExpression = do
choice
[ parseInt,
parseTrue,
parseFalse
parseFalse,
parseString,
parseChar
]
--- Literals
@@ -197,3 +198,18 @@ parseTrue = parseBool "true" True
parseFalse :: Parser Expression
parseFalse = parseBool "false" False
-- Text
parseString :: Parser Expression
parseString = do
void $ char '"'
contents <- manyTill anySingle (char '"')
return $ LiteralString contents
parseChar :: Parser Expression
parseChar = do
void $ char '\''
character <- anySingle
void $ char '\''
return $ LiteralChar character