樹表示,如果聲明,正確地分析我有以下幾點:如果語句在ANTLR
ifStatement
: 'IF' expression 'THEN' statementBlock
(options {greedy=true;}
: 'ELSE' statementBlock)?
;
現在,我想它解析爲一個AST這一點。這是我做的:
ifStatement
: 'IF'^ expression 'THEN'! statementBlock
(options {greedy=true;}
: 'ELSE'! statementBlock)?
;
新增!
和^
,爲->
建造指令似乎沒有工作。
我的結果是有3個孩子的AST:1是條件式,2和3是語句塊。 else部分是可選的:如果沒有其他部分,則節點3丟失。
問題是語句塊總是空的。如何解決這個問題?
對不起,這個問題到底是什麼?你想要什麼結果,你得到了什麼不同的結果?你希望我們能爲你做什麼? – 2011-03-27 22:48:46
抱歉不清楚,但是,我的代碼不會返回包含3個節點的父節點。如果我還沒有一個else語句,然後2. 通常,我的父節點需要有1個孩子,表達式,第二個孩子的第一個語句,第三個else語句 – pantelis 2011-03-27 23:38:40
所以你*要*得到一個AST與三個孩子先行的,後續的,替代的),但實際上,根據輸入中是否存在「ELSE」條款,您實際上會獲得(先行的,隨後的,替代的)或(先行的,後續的),並且您正在尋找使AST得到建立,使它具有相同的結構嗎? – 2011-03-28 00:38:34