@@ -980,6 +980,7 @@ Constant ::=
980 | 'Bits64x2'
980 | 'Bits64x2'
981 | Float_t
981 | Float_t
982 | Natural_t
982 | Natural_t
983 | String_t
984 | String_t
@@ -1002,10 +1003,21 @@ constant = do reserved "Integer";return (AType (ATInt ITBig))
1002 <|> do reserved "Bits64x2"; return (AType (ATInt (ITVec IT64 2)))
1003 <|> do reserved "Bits64x2"; return (AType (ATInt (ITVec IT64 2)))
1003 <|> try (do f <- float; return $ Fl f)
1004 <|> try (do f <- float; return $ Fl f)
1004 <|> try (do i <- natural; return $ BI i)
1005 <|> try (do i <- natural; return $ BI i)
1006+ <|> try (do s <- verbatimStringLiteral; return $ Str s)
1005 <|> try (do s <- stringLiteral; return $ Str s)
1007 <|> try (do s <- stringLiteral; return $ Str s)
1006 <|> try (do c <- charLiteral; return $ Ch c)
1008 <|> try (do c <- charLiteral; return $ Ch c)
1007 <?> "constant or literal"
1009 <?> "constant or literal"
1011+{- | Parses a verbatim multi-line string literal (triple-quoted)
1013+VerbatimString_t ::=
1017+verbatimStringLiteral :: MonadicParsing m => m String
1018+verbatimStringLiteral = do string "\"\"\""
1019+ manyTill anyChar $ try (string "\"\"\"")
1009{- | Parses a static modifier
1021{- | Parses a static modifier