2013-07-09 19 views
1

在'flex & bison'中,有一個先進的計算器示例創建AST。該計算器可以支持「sqrt」,「log」等內置函數。所有內置函數都是單個參數。如果我想讓計算器支持多參數內置函數,比如'pow(a, b)',我該怎麼做?如何解析Bison中的多個argumemts內置函數

+0

如果您對答案感到滿意,如果您接受它,將會非常酷,以便未來的訪問者能夠看到它相當的解決;) – nic

回答

1

您的AST計算器中已經有雙參數函數,例如'+'將2個表達式作爲參數。你想要做的只是做同樣的事情,即你想解析'expr_a + expr_b'的內容'fcn(expr_a,expr_b)'。請注意,這是針對您已指定的內置函數。它對於用戶指定的功能變得更加容易,但是在頁面上。書中61。

所得的AST:

 + 
    /\    
    / \ 
expr_a expr_b 


     fcn 
    /\    
    / \ 
expr_a expr_b 

我希望這可以幫助,即使我不提供源代碼。我不是Flex的專家& Bison ...

+0

謝謝。計算器示例中有兩個函數,'callbuiltin'和'calluser'。仔細閱讀'calluser'後,發現函數調用的參數是通過遍歷AST語法樹來檢索的。我爲'callbuiltin'添加了相同的邏輯。到目前爲止,該計算器可以支持N參數內置功能。 – Kecise