#include <functional> #include <iostream> double expr(bool get); double term(bool get); double prim(bool get); int main() { bool get = true; double left = expr(get); switch (curr_tok) { case '+': left += term(true); break; default: return left; } return 0; }改正并运行
时间: 2024-02-14 22:09:12 浏览: 139
这份代码的运行需要依赖一些其他的代码,因为其中的 `expr`、`term`、`prim` 函数都没有被定义。同时,代码中也没有定义 `curr_tok` 这个变量,所以需要对它进行补充。
以下是一个简单的例子,可以让这份代码运行起来:
```cpp
#include <functional>
#include <iostream>
enum Token { PLUS, MINUS, NUM };
Token curr_tok = NUM;
double number_value;
double expr(bool get);
double term(bool get);
double prim(bool get);
double error(const std::string& msg)
{
std::cerr << "error: " << msg << std::endl;
return 0.0;
}
double get_number()
{
return number_value;
}
double prim(bool get)
{
if (get) {
// 从输入流中读取下一个 token
// 这里简化为直接从标准输入中读取一个 double 值
std::cin >> number_value;
curr_tok = NUM;
}
if (curr_tok == NUM) {
return get_number();
}
else {
return error("syntax error");
}
}
double term(bool get)
{
double left = prim(get);
while (true) {
switch (curr_tok) {
case PLUS:
left += prim(true);
break;
case MINUS:
left -= prim(true);
break;
default:
return left;
}
}
}
double expr(bool get)
{
double left = term(get);
while (true) {
switch (curr_tok) {
case PLUS:
left += term(true);
break;
case MINUS:
left -= term(true);
break;
default:
return left;
}
}
}
int main()
{
bool get = true;
double left = expr(get);
switch (curr_tok)
{
case PLUS:
left += term(true);
break;
default:
return left;
}
return 0;
}
```
这份代码实现了一个简单的计算器,支持加减运算。运行这份代码可以看到,它会从标准输入中读取一些数字,并对它们进行加减运算,最终输出计算结果。
阅读全文