on master help sign in
Added support for verbatim literals
commitc99854a45e79c006f550424b4c0f5534590edb53 authorAhmad Salim Al-Sibahi <asal@itu.dk> dateSat 11 Jan 2014, 20:59 (13 years ago) parentef0b6ec
1 file changed+12
src/Idris/ParseExpr.hs+12
src/Idris/ParseExpr.hs+12
@@ -980,6 +980,7 @@ Constant ::=
980980 | 'Bits64x2'
981981 | Float_t
982982 | Natural_t
983+ | VerbatimString_t
983984 | String_t
984985 | Char_t
985986 ;
@@ -1002,10 +1003,21 @@ constant = do reserved "Integer";return (AType (ATInt ITBig))
10021003 <|> do reserved "Bits64x2"; return (AType (ATInt (ITVec IT64 2)))
10031004 <|> try (do f <- float; return $ Fl f)
10041005 <|> try (do i <- natural; return $ BI i)
1006+ <|> try (do s <- verbatimStringLiteral; return $ Str s)
10051007 <|> try (do s <- stringLiteral; return $ Str s)
10061008 <|> try (do c <- charLiteral; return $ Ch c)
10071009 <?> "constant or literal"
10081010
1011+{- | Parses a verbatim multi-line string literal (triple-quoted)
1012+@
1013+VerbatimString_t ::=
1014+ '"""' ~'"""' '"""'
1015+@
1016+ -}
1017+verbatimStringLiteral :: MonadicParsing m => m String
1018+verbatimStringLiteral = do string "\"\"\""
1019+ manyTill anyChar $ try (string "\"\"\"")
1020+
10091021{- | Parses a static modifier
10101022
10111023@