我嘗試了ANTLR 4,這讓我很簡單Hello
語法書中<以下輸出權威ANTLR 4參考>:在ANTLR 4中<EOF>的位置有點奇怪嗎?
[@2,12:11='<EOF>',<-1>,2:0]
按照書上的解釋,12:11
符號表示<EOF>
令牌從位置12
開始並在11
結束。這怎麼可能?
PS。我正在使用Windows。
我嘗試了ANTLR 4,這讓我很簡單Hello
語法書中<以下輸出權威ANTLR 4參考>:在ANTLR 4中<EOF>的位置有點奇怪嗎?
[@2,12:11='<EOF>',<-1>,2:0]
按照書上的解釋,12:11
符號表示<EOF>
令牌從位置12
開始並在11
結束。這怎麼可能?
PS。我正在使用Windows。
在ANTLR 4中,兩個端點都包含在內。與包括端點的跨度的長度如下:
長度=結束 - 開始+ 1
的EOF符號的長度爲0(它出現在已知的位置,但它包含沒有輸入符號)。如果輸入是長12個字符,則得到此公式的結束位置:
0 =完 - 12 + 1
因此:
完= 0 + 12 - 1 = 11
謝謝。所以我試圖理解這背後的動機。我猜*是
也許用UTF-16編碼測量它的字節數? – Mephy 2014-12-13 16:28:53