2
我寫了一個ANTLR3語法細分成更小的規則以提高可讀性。 例如:如何避免使用ANTLR3構建中間體和無用的AST節點?
messageSequenceChart:
'msc' mscHead bmsc 'endmsc' end
;
# Where mscHead is a shortcut to :
mscHead:
mscName mscParameterDecl? timeOffset? end
mscInstInterface? mscGateInterface
;
我知道內置ANTLR AST建築功能允許聲明不會在最後的AST中間AST節點的用戶。但是如果你手動建立AST呢?
messageSequenceChart returns [msc::MessageSequenceChart* n = 0]:
'msc' mscHead bmsc'endmsc' end
{
$n = new msc::MessageSequenceChart(/* mscHead subrules accessors like $mscHead.mscName.n ? */
$bmsc.n);
}
;
mscHead:
mscName mscParameterDecl? timeOffset? end
;
該文檔沒有談論這樣的事情。所以看起來我必須爲每個中間規則創建節點才能訪問其子規則結果。
有誰知道更好的解決方案?
謝謝。
太棒了!有用 ! :D你讓我省了很多時間! – 2011-05-17 20:27:23
@Julio,很高興聽到,歡迎您。 – 2011-05-17 21:04:56
另一個問題! http://stackoverflow.com/questions/6047127/ignore-tokens-in-the-token-characters我相信你:p – 2011-05-18 15:22:18