爱笑眼 2022-05-09 21:19 采纳率: 50%
浏览 15
已结题

在写词法分析器的实验,其中想实现一个保留字表保存所有保留字,是字符串形式的,用一个函数实现识别一个字符串是否是保留字的功能

问题遇到的现象和发生背景

在写词法分析器,其中想实现一个保留字表保存所有保留字,是字符串形式的,用一个函数实现识别一个字符串是否是保留字的功能。

问题相关代码,请勿粘贴截图
#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;
}



运行结果及报错内容

我也看不懂这个,哭了!

img

  • 写回答

1条回答 默认 最新

  • 真相重于对错 2022-05-09 21:34
    关注

    data没有new 怎么能用?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 创建了问题 5月9日