parse string and char
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user