我正在用 Antlr 4 (v4.9.2) 決議語法
以下是語法:
grammar Test;
start
:
command EOF
;
command: commandType params ;
commandType: 'DISPLAY' ;
params: param (',' param)*
| ;//parameter list
param: ID;
ID : [a-z] [a-z0-9]*
;
WS
:
[ \t\r\n] -> skip
;
語法的輸入文本是:
DISPLAY hello, really, sdfdsf
DISPLAY one more now
下面是生成的決議樹。(start (command (commandType DISPLAY) (params (param hello) , (param true) , (param sdfdsf))) (command (commandType DISPLAY) (params (param one)))現在更多)
節點“現在更多”沒有標記。
為什么決議器沒有為“more now”拋出錯誤?
uj5u.com熱心網友回復:
它確實會產生錯誤,但 ANTLR 的默認策略是(嘗試)從無效輸入中恢復,并繼續決議。
這是嘗試決議您的輸入時顯示的內容:


嘗試谷歌搜索“ANTLR 錯誤策略”、“ANTLR 錯誤處理”,或查看此問答:處理 ANTLR4 中的錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/395888.html
下一篇:JSON.parse(str)以某種方式檢索了原始物件的__proto__非常具體的資訊,該資訊不在JSON字串(=str)中。如何?
