我想解析包含换行符的文件的文本。该文件可能在Windows或Unix中,但现在它是一个包含以下内容的Windows文件:
(**************
***************)
以上文件内容已使用slurp
读入,并将包含换行符。这是我尝试使用的语法:
S = start-comment stars <inside-comment>
start-comment = '('
stars = '*' +
<inside-comment> = '\n' +
这个语法也从一个文件中悄悄进入,我相信这会使事情变得容易一些:
&#34;所需的唯一转义字符是字符串和正则表达式的普通转义字符(另外,instaparse也支持单引号字符串中的内容)。&#34;
新行似乎没有被解析:
Parse error at line 1, column 16:
(**************
^
Expected one of:
"\n"
"*"
我需要设置<inside-comment>
以便错误出现在第二行的第一个星号上,这表明语法已识别换行符?
答案 0 :(得分:3)
Windows中的换行符显示为\ r \ n,在Unix中显示为\ n。所以你需要这样的东西:
(如果它在字符串中,则加倍黑色)。
答案 1 :(得分:0)
这解析到最后:
S = start-comment stars <inside-comment-1> stars end-comment
start-comment = '('
end-comment = ')'
stars = '*' +
<inside-comment-1> = '\n' | '\r\n'
<inside-comment-2> = '\r?\n'
请注意,<inside-comment-2>
不起作用。虽然<inside-comment-1>
有效,但可能有一种更优雅的方式来越过换行符?