我正在为python编写一个编译器脚本。我有正确解析 Tracebacks 的错误格式:
CompilerSet errorformat=
\%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,
\%Z\ \ \ \ %m
我不明白为什么在逗号之前需要额外的转义:为什么\"%f\"\\,
不能\"%f\"\,
?我知道逗号需要转义,因为它用于分隔错误格式的部分,但为什么要使用两个反斜杠?
这是一个 Traceback 的示例,其中单转义不起作用,但双重转义:
Traceback (most recent call last):
File "test.py", line 9, in <module>
g()
File "test.py", line 7, in g
f()
File "test.py", line 4, in f
raise IndexError()
IndexError
另一个类似的例子是这个使用三个反斜杠的python编译器脚本!
(我问是希望理解为什么会更容易编写更多efm
设置。)