问题遇到的现象和发生背景
在写词法分析器,其中想实现一个保留字表保存所有保留字,是字符串形式的,用一个函数实现识别一个字符串是否是保留字的功能。
问题相关代码,请勿粘贴截图
#include <iostream>
#include <string>
using namespace std;
const int MaxSize = 100;
//保留字表,保留字的data = 字符串内容,index = 保留字在表中的序号(从零开始)
class KeyWordList {
public:
string * data;
int length;
KeyWordList() {
length = 11;
data[0] = "int";
data[1] = "string";
data[2] = "bool";
data[3] = "while";
data[4] = "if";
data[5] = "switch";
data[6] = "case";
data[7] = "else";
data[8] = "return";
data[9] = "main";
data[10] = "new";
}//默认构造函数,保留字表内容是固定的;
};
static KeyWordList KeyWordList1 = KeyWordList();
//(重要)处理保留字,对token中的字符串查保留字表,若查到,返回保留字的序号,否则返回MaxSize;
//MaxSize是一个足够大的数,不会和已有的保留字序号发生冲突
int reserve(string token) {
int len = KeyWordList1.length;
for (int i = 0; i < len; i++) {
if (token == KeyWordList1.data[i])
return i;
}
return MaxSize;
}
int main()
{
cout << reserve("case") << endl;
return 0;
}
运行结果及报错内容
我也看不懂这个,哭了!