在'flex & bison'中,有一個先進的計算器示例創建AST。該計算器可以支持「sqrt」,「log」等內置函數。所有內置函數都是單個參數。如果我想讓計算器支持多參數內置函數,比如'pow(a, b)
',我該怎麼做?如何解析Bison中的多個argumemts內置函數
1
A
回答
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
相關問題
- 1. 多個flex/bison解析器
- 2. 如何在Bison解析器上返回多個標記?
- 3. 用bison解析bibtex
- 4. 解析Bison中的While循環
- 5. 如何從內部函數中解析外部異步函數
- 6. 用Bison解析錯誤
- 7. Bison/Flex解析文件
- 8. 使用Bison解析樹
- 9. Flex/Bison:錯誤恢復析構函數?
- 10. 如何設置解析逗號分隔參數列表的flex/bison規則
- 11. 如何找出C++ bison解析器中的意外標記?
- 12. 如何使用Bison%析構函數指令
- 13. 如何在Yacc中打印解析器樹(BISON)
- 14. 如何在bison/yacc GLR解析器中獲得'expected token'?
- 15. 如何使用Bison(Yacc)在C++中生成64位解析器?
- 16. 解析大於Bison/Yacc的鏈
- 17. 使用flex和Bison的解析器
- 18. C++帶Bison的GLR解析器
- 19. 如何解析與多個小數點
- 20. 我如何解析函數的參數?
- 21. 我如何說服Bison解析文件的一部分?
- 22. 如何在解析不同流的塊時保持Bison狀態?
- 23. 如何編寫解析這種語言的flex和bison文件?
- 24. 如何解釋函數模板解析?
- 25. flex/bison中的多個分析器:包含失敗
- 26. 瞭解內置next()函數
- 27. 用flex + bison解析bibtex:重溫
- 28. 使用Bison從char *字符串解析
- 29. 如何查看解析的R函數的內容?
- 30. 使用jQuery解析解析函數中的第二個XML
如果您對答案感到滿意,如果您接受它,將會非常酷,以便未來的訪問者能夠看到它相當的解決;) – nic