在 Antlr4 中保留空格和换行符
Preserving Whitespace and Newline in Antlr4
我想保留用于处理 C 源文件的空白和换行符,并且我使用的是提到的语法 here。
我正在修改行 here 如下,删除重定向以跳过。
Whitespace
: [ \t]+
;
Newline
: ( '\r' '\n'?
| '\n'
)
;
但是在任何 C 程序上执行解析器时,请说以下内容:
void main(){
}
正在抛出错误
line 1:13 mismatched input '\n' expecting <EOF>
如果能帮助解决这个问题,我们将不胜感激。谢谢!
这行不通。如果您不跳过空格(或至少将它们放在不同的通道上),它们将返回到解析器并且必须在那里考虑。由于您只更改了词法分析器规则,而没有更改解析器规则,因此实际上无法匹配任何内容。所以 translationUnit?
在
compilationUnit
: translationUnit? EOF
;
被简单地跳过,预计 EOF。
我想保留用于处理 C 源文件的空白和换行符,并且我使用的是提到的语法 here。
我正在修改行 here 如下,删除重定向以跳过。
Whitespace
: [ \t]+
;
Newline
: ( '\r' '\n'?
| '\n'
)
;
但是在任何 C 程序上执行解析器时,请说以下内容:
void main(){
}
正在抛出错误
line 1:13 mismatched input '\n' expecting <EOF>
如果能帮助解决这个问题,我们将不胜感激。谢谢!
这行不通。如果您不跳过空格(或至少将它们放在不同的通道上),它们将返回到解析器并且必须在那里考虑。由于您只更改了词法分析器规则,而没有更改解析器规则,因此实际上无法匹配任何内容。所以 translationUnit?
在
compilationUnit
: translationUnit? EOF
;
被简单地跳过,预计 EOF。