0
如何在{}內對(事物)(無序)集合建模。
每件事情可能只發生一次,或根本不發生。該集合中的發生順序是隨機的。例如set { a, b, c }
或set { c, b }
。如何在antlr4的詞法分析器中對此進行建模?建模ANTLR4詞法分析器中的無序集合
如何在{}內對(事物)(無序)集合建模。
每件事情可能只發生一次,或根本不發生。該集合中的發生順序是隨機的。例如set { a, b, c }
或set { c, b }
。如何在antlr4的詞法分析器中對此進行建模?建模ANTLR4詞法分析器中的無序集合
我完全不會使用詞法分析器。要在解析器驗證這一點,我會用一個規則如下所示:
set
: 'set' '{'
(a
| b
| c
)*
'}'
;
我會再創建解析樹聽衆或訪客驗證[0-1]約束。該方法的參數是SetContext ctx
。
if (ctx.a().size() > 1)
myReportErrorMethod("set can only contain one 'a' item");
if (ctx.b().size() > 1)
myReportErrorMethod("set can only contain one 'b' item");
if (ctx.c().size() > 1)
myReportErrorMethod("set can only contain one 'c' item");
優秀。我一直在努力研究如何限制語法中的出現次數 - 詞法分析器或解析器。但是上面的監聽器中的代碼很有意義!謝謝。這回答了我的問題。 – user3213604