0
在我的語法中,我希望變量由拉丁字母,西裏爾字母和普通話字符組成。 爲此,我定義了詞法分析規則,如下所示: CYRILLIC_RANGE:[\ u0400- \ u04FF];
這是我在我的ANTLRWorks 2.1輸出中看到的,當我嘗試對我的查詢運行表達式時: 行1:4令牌識別錯誤:'н' 我錯過了什麼?ANTLR4。如何正確創建unicode範圍詞法分析器規則?
在我的語法中,我希望變量由拉丁字母,西裏爾字母和普通話字符組成。 爲此,我定義了詞法分析規則,如下所示: CYRILLIC_RANGE:[\ u0400- \ u04FF];
這是我在我的ANTLRWorks 2.1輸出中看到的,當我嘗試對我的查詢運行表達式時: 行1:4令牌識別錯誤:'н' 我錯過了什麼?ANTLR4。如何正確創建unicode範圍詞法分析器規則?
我不確定你錯過了什麼,因爲這似乎在我這裏工作。你有沒有嘗試過其他的範圍語法?這兩個都應該是等價的。
CYRILLIC_RANGE : [\u0400-\u04FF] ;
CYRILLIC_RANGE : '\u0400'..'\u04FF' ;
你的char類中的連字符''似乎是一個長連字符。它應該是:'-'(ASCII'0x2D')。 –
作爲替代,使用新的[ANTLR 4.7 Unicode塊支持](https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md),例如, '\ p {Lu}'爲大寫字母。當然,這需要從源頭上構建自己的ANTLR4罐子。 –