2

我想实现这样一个程序:它读取一些包含一些变量的表达式。这些变量将在稍后设置,程序应该计算最终结果(如 sql 准备语句)。

例如,表达式可能像$foo + $bar + 2,我需要在后面设置$foo和时计算结果。$bar

我正在尝试用ragellemon来实现它。我已经学会了使用ragel来解析表达式。但我不知道如何使用柠檬来处理变量并进行计算。

谢谢你的帮助。

4

1 回答 1

2

您必须为您的表达式构建 AST。对于这棵树中的每个变量,您应该保存一些指向变量的指针(例如只是一个名称)。在评估时,您必须为变量条目提供值。例如,它可能是一个字典<variable name> -> <variable value>

作为使用柠檬在 C++ 上构建 AST 的示例,我可以推荐这个:https ://github.com/kvirund/calculator

veei@sauron:~/git/calculator/build$ ./test.it
expr> foo=1
Value: 1
expr> bar=2
Value: 2
expr> foo+bar+2
Value: 5
expr>

但是使用 re2c 而不是 Ragel 作为令牌提供者。

于 2016-01-07T19:12:27.027 回答