程序可以解释赋值语句,完成的功能如下:
- 判断它是够包含合法的赋值语句
- 求所有表达式的值
输入输出模版如下:
递归包含直接递归和间接递归。例如:一个项可以是一个因子,或者一个因子后面跟着称号“*”(或“/”)以及另一个因子。而因子可能是一个标识符,一个数,圆括号中的表达式,或者带有负号的因子。
调用链为term()->factor()->expression()->term();
代码如下:
/***********************interpreter.h***********************/
#ifndef _INTERPRETER_H_
#define _INTERPRETER_H_
#include <iostream>
#include <list>
#include <algorithm>
#include <cstring>
using namespace std;
class IdNode
{
private:
char *id;
double value;
friend class Statement; //友元类
friend ostream &operator<<(ostream &out, const IdNode &node);
public:
IdNode(char *s = "", double e = 0){
id = strdup(s); //申请空间并复制字符串
value = e;
}
bool operator==(const IdNode& node) const{
return strcmp(id, node.id) == 0;
}
};
class Statement
{
private:
list<IdNode> idList;
char ch;
double factor();