我正在尝试ANTLR 4,它为《最终的ANTLR 4参考>》一书中的简单Hello
语法提供了以下输出<:
[@2,12:11='<EOF>',<-1>,2:0]
根据该书的解释,12:11
符号意味着<EOF>
令牌从位置12
开始,到11
结束。这怎么可能?
附言。我正在研究Windows。
在 ANTLR 4 中,两个端点都是包含的。具有非独占终结点的跨度长度如下:
长度 = 结束 - 开始 + 1
EOF符号的长度为0(它出现在已知位置,但不包含输入符号)。如果输入长度为 12 个字符,则得到以下结束位置公式:
0 = 结束 - 12 + 1
因此:
结束 = 0 + 12 - 1 = 11