这个实验我采用的方法是将字符(or数字)和运算符切割开来,代码很简单也不想解释了。
使用方法:新建三个文件keyword.in,operator.in,value.in
keyword.in里首先一个整数x表示关键字的个数
接下来x行每行一个字符串和一个整数分别表示一个关键字和对应键值
operator.in里首先一个整数x表示运算符的个数
接下来x行每行一个字符串和一个整数分别表示一个关键字和对应键值
value.in里有两个整数a,b,分别表示变量和数字的键值
直接输入对应代码即可
代码如下:
#include<cstdio>
#include<string>
#include<map>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 25;
const int M = 100005;
const int TSIZE = 105;
char Buffer[M];
char Keyword[N][N];
char Oper[N][N];
char tmp[N * 4][TSIZE];
int tail,tlen[N * 4];
int tcnt,Blen;
int Opernum,Kewdnum;
int val1[N],val2[N];
int Numval,Varval;
map<string,int> mp;
bool isblank(char c){
if(c == ' ') return 1;
if(c == &