0
解析歧義我試圖識別列表理解這樣的表達式a for b in c for d in e
和我有以下語法:在antlr4
iter : 'for' ID 'in' expr ;
expr : ID
| expr iter+ # listcomp
| ID + ID # binary
;
但由於a for b in c for d in e
它解析爲:
(a for b in (c for d in e))
即listcomp
的listcomp
而不是:
(a (for b in c) (for d in e))
即,具有兩個iter
s的單個listcomp
。我應該如何改變語法來獲得這種效果?
謝謝。我希望不要添加括號來解決含糊不清的問題(我認爲它具有相關性?),就像在標準的python中一樣。 – JRR
謝謝@TomServo。我實際上需要修改我的語法(參見上文),它允許'listcomp'採用python中的'expr'而不是'ID'(例如,'1 + x for x in l')。這似乎破壞了你的解決方案:( – JRR
@JRR請看我最近的編輯。這也處理表達式在開始。 – TomServo