c++ 如果用双引号括起来的字符串以转义的反斜杠结尾,则词法分析器规则会将匹配字符视为用引号括起来的字符串的一部分

wn9m85ua  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(71)

如果一个双引号字符串以转义的反斜杠结尾,那么词法分析器规则就会变得贪婪,并将匹配字符视为引号字符串的一部分,然后词法分析器会认为实际开始下一个引号字符串的双引号是第一个引号的结尾,并在后面的字符上给出语法错误。我们需要调整词法分析器规则来修复这个问题。
词法分析器规则设置为.g4文件类型。
例如:string demo = "a\\b" + "c";工作正常,但是字符串demo1 = "a\\" + "c"给出了一个语法错误,说表达式是一个无效的字符串。
另一个例子:string demo = "a\\b" + "\\c";也会产生语法错误,错误与上述相同。
我能知道如何写词法分析器规则,如果有人有任何经验。

u7up0aaq

u7up0aaq1#

反斜杠是特殊的,它在字符串中充当转义字符。如果你想在字符串中使用反斜杠,你必须把它加倍\\

相关问题