6
我有一個語法,我想在其中包含多參數函數(如f(x,y)
)。我使用AST輸出和我自己的樹分析器。現在我的參數列表生產用於定義/調用多參數函數的ANTLR語法
paramdefs: (ID COMMA)* ID ;
這工作得很好,但AST輸出
z(x,y)=expression
是
(FUNC (z)(x)(,)(y)(expression))
(即它是非常平坦的)。
的FUNC
CommonTree的孩子,在一般情況下,都是{function name
,parameter
,comma
,parameter
,defined expression
},對於任何數量的參數。我希望參數列表是一個單獨的孩子,而不是逗號(這會使樹更容易走路)。
理想的情況下,這是樹會是什麼樣子:
(FUNC (z)((x)(y))(expression))
(請注意沒有逗號元素和x
和y
分組
相關相關的語法方面:
funcdef: ID '(' paramdefs ')' '=' expr -> ^(FUNC ID paramdefs expr) ;
paramdefs: (ID COMMA)* ID ;
謝謝 - 那偉大工程! – CajunLuke
@CajunLuke,不客氣。 –