I don't know parsimonious's syntax, but in a regex-style one I'd do something like:
string = doubleString / singleString
doubleString = ~'"([^"]|(\"))*"'
singleString = ~"'([^']|(\'))*'"
i.e. you'd need a different escaped string for each kind of string, each made of a possibly empty sequence of either characters that are not the end quote char or escaped end quote chars.