在ANTLR 4中<eof>的位置有点奇怪吗?</eof>

时间:2014-12-13 09:05:24

标签: antlr antlr4 antlr3

我正在尝试使用ANTLR 4,它为本书中的简单Hello语法提供了以下输出&lt;最终的ANTLR 4参考&gt;:

[@2,12:11='<EOF>',<-1>,2:0]

根据本书的解释,12:11符号表示<EOF>令牌从位置12开始,到11结束。怎么可能这样呢?

PS。我正在使用Windows。

1 个答案:

答案 0 :(得分:2)

在ANTLR 4中,两个端点都是包容性的。包含端点的跨度的长度如下:

  

长度=结束 - 开始+ 1

EOF符号的长度为0(它出现在已知位置,但不包含输入符号)。如果输入的长度为12个字符,则可以得到最终位置的公式:

  

0 =结束 - 12 + 1

因此:

  

结束= 0 + 12 - 1 = 11