我想解析包含换行符的文件的文本。该文件可能位于Windows或Unix中,但目前它是一个具有以下内容的Windows文件:
(**************
***************)上面的文件内容已经用slurp读取,并将包含一个换行符。下面是我试图使用的语法:
S = start-comment stars <inside-comment>
start-comment = '('
stars = '*' +
<inside-comment> = '\n' +这种语法也是从文件中删除的,我相信这会使事情变得更容易一些:
“唯一需要的转义字符是用于字符串和正则表达式的普通转义字符(另外,instaparse还支持\‘单引号内的字符串)。”
换行符似乎没有被解析:
Parse error at line 1, column 16:
(**************
^
Expected one of:
"\n"
"*"我需要将<inside-comment>设置为什么才能使错误出现在第二行的第一颗星上,这将表明语法已经识别了换行符?
发布于 2016-08-23 19:02:35
Windows中的Newline显示为\r\n,在Unix中显示为\n。所以你需要这样的东西:
#'\r?\n'如果语法在字符串中,则将黑线加倍:
"some-rule = #'\\r?\\n'"发布于 2016-08-24 01:16:53
这将分析到最后:
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>工作时,可能有一种更优雅的方法可以通过换行符?
https://stackoverflow.com/questions/39095082
复制相似问题