stringLiteral :: Parser String
stringLiteral = lexeme $ do
    char '"'
    str <- many (stringEscape <|> noneOf "\"")
    char '"'
    return str
stringLiteral :: Parser String
stringLiteral = lexeme $ do
    char '"'
    str <- many (stringEscape <|> noneOf "\"")
    char '"'
    return str
stringLiteral = lexeme $ do
    char '"'
    str <- many (stringEscape <|> noneOf "\"")
    char '"'
    return str