如何在编写解析器时处理字符串中的引号


How to handle quotes inside strings when writing parsers?

示例:

"abcdef'"gh"

解析器规范规定字符串以"开始,以"结束。但它也应该忽略像'" 这样的转义引号

在编写解析器时,处理这种情况的最佳方法是什么?

我想看看后面,如果前面的字符是',我就忽略这句话。但这是最好的方式吗?因为在我看来这有点可疑

向后扫描是可能的,但很棘手,因为您可能有一些转义字符序列:

"This is a backslash: '"'''""

向前解析通常比向后解析更容易。将双引号字符串的内容与转义符相匹配的一个简单正则表达式是:

([^"]|''.)*

但这只会帮助您识别字符串的内容。在实践中,您通常希望解释字符串的内容,这可能包括转换,例如将'n更改为换行符,甚至将'u00D1更改为Ñ的utf-8序列(C3 91(。