1
我有以下ANTLR4語法定義。要注意規則「查詢」可選子規則「orderLimit」結尾:如何判斷ANTLR4解析器是否消耗TokenStream的所有令牌?
query: 'IDX.SELECT' indexName orderLimit?;
indexName: IDENTIFIER;
orderLimit: 'ORDERBY' order ('LIMIT' limit)?;
order: property;
property: IDENTIFIER;
limit: INT;
INT: '0' | [1-9] [0-9]*;
IDENTIFIER: [a-zA-Z_]([a-zA-Z0-9_])*;
生成的解析器接受輸入文本「IDX.SELECT訂單LIMIT 30」沒有任何錯誤,與令牌「LIMIT 30」忽略。
但是我想檢測並報告這樣的信息,以便用戶可以修改他們的輸入爲絕對正確的。