在'flex& bison',有一个高级计算器示例,可以创建AST。计算器可以支持内置函数,如'sqrt','log'等。所有内置函数都是单个参数。如果我希望计算器支持多参数内置函数,例如“pow(a, b)
”,我该怎么做?
答案 0 :(得分:1)
您的AST计算器中已经有双参数函数,例如'+',它将2个表达式作为参数。你想要的只是做同样的事情,即你想要解析'frn(expr_a,expr_b)'的'expr_a + expr_b'。请注意,这适用于您指定的内置函数。它对于用户指定的函数来说会变得更加毛茸茸但是在p上。书中有61个。
结果AST:
+
/ \
/ \
expr_a expr_b
fcn
/ \
/ \
expr_a expr_b
我希望这有帮助,即使我不提供源代码。我不是Flex& S的专家。野牛...