我正在尝试使用ANTLR 4,它为本书中的简单Hello
语法提供了以下输出<最终的ANTLR 4参考>:
[@2,12:11='<EOF>',<-1>,2:0]
根据本书的解释,12:11
符号表示<EOF>
令牌从位置12
开始,到11
结束。怎么可能这样呢?
PS。我正在使用Windows。
答案 0 :(得分:2)
在ANTLR 4中,两个端点都是包容性的。包含端点的跨度的长度如下:
长度=结束 - 开始+ 1
EOF符号的长度为0(它出现在已知位置,但不包含输入符号)。如果输入的长度为12个字符,则可以得到最终位置的公式:
0 =结束 - 12 + 1
因此:
结束= 0 + 12 - 1 = 11