3
我無法理解,爲什麼這個簡單的語法 -ANTLR - 有以下兩個選項不能被匹配
grammar Test;
file : ID;
ID : .*;
導致這個錯誤 -
Test.g:3:6: The following alternatives can never be matched: 1
這究竟是爲什麼?
我無法理解,爲什麼這個簡單的語法 -ANTLR - 有以下兩個選項不能被匹配
grammar Test;
file : ID;
ID : .*;
導致這個錯誤 -
Test.g:3:6: The following alternatives can never be matched: 1
這究竟是爲什麼?
在詞法規則的末尾使用.*
和.+
是違法的ANTLR:
ID : .*; // illegal
ID : 'bar' .*; // illegal
ID : .* 'bar'; // legal
在語法規則,這種情況並非如此。
謝謝! 這似乎也適用於「。+」。 ANTLR中有這個限制嗎?如果是這樣,ANTLR文件中提到了哪些地方?或者,這只是一個普通的詞法分析練習? 這同樣似乎不適用於解析器規則? – user869081
@ user869081,true'。+'也是非法的,在解析器規則中可以使用'。*'和'。+'_can_(編輯我的答案以包含此內容)。無論這是ANTLR特有的(與其他解析器生成器相反),還是一般的詞法分析器特定的事情,我都不知道。 AFAIK,它在帕爾的「定義ANTLR參考」中提到過(我稍後會看看是否可以找到該頁面)。 –
再次感謝!我也在通讀這本書。但我看不出Parr在說什麼?順便說一句,取代「。」與「('\ u0001'..'\ uffff')」不會導致任何錯誤。 -Xdbgconversion標誌似乎給出了一些信息,但我不確定它的含義。 – user869081