stringLit :: Parser ByteString
stringLit = mconcat <$> (("\"" *> many (insides '"') <* "\"") <|> ("\'" *> many (insides '\'') <* "\'"))
  where insides b = escapeHex <|> escapeChar <|> escapeOct <|> (ByteString.singleton <$> satisfy (notInClass (b : "\0\n")))
stringLit :: Parser ByteString
stringLit = mconcat <$> (("\"" *> many (insides '"') <* "\"") <|> ("\'" *> many (insides '\'') <* "\'"))
  where insides b = escapeHex <|> escapeChar <|> escapeOct <|> (ByteString.singleton <$> satisfy (notInClass (b : "\0\n")))
stringLit = mconcat <$> (("\"" *> many (insides '"') <* "\"") <|> ("\'" *> many (insides '\'') <* "\'"))
  where insides b = escapeHex <|> escapeChar <|> escapeOct <|> (ByteString.singleton <$> satisfy (notInClass (b : "\0\n")))