#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Token {
public:
Token(string n, char t, int i) :token(n), table(t), id(i) {
}
string token;
char table;
int id;
};
class Table {
public:
vector<string> item;//存放元素
Table() {
s = 0; };//默认构造函数
Table(vector<string> str) {
vector<string>::iterator it = str.begin();
while (it != str.end()) {
item.push_back(*it++);
}
s = str.size();
}
int size() {
//求大小
return s;
}
int find(string a) {
int k = 0;
while (k < s) {
if (item[k] == a) {
return k + 1;
}
k++;
}
return s + 1;
}
void insert(string a) {
s++;
item.push_back(a);
}
private:
int s;
};
//token表
//关键字表K,届符表,标识符表,常量表(常整数,常浮点数,常字符,常字符串)
Table K({
"int","void","break",
"float","while","do",
"struct","const","case",
"for","return","if",
"default","else"
});
Table P({
东北大学 编译原理作业 c++模拟一个扫描器
最新推荐文章于 2022-04-18 17:08:43 发布
本文介绍如何使用C++编程实现编译原理中的扫描器,详细阐述了扫描器的工作原理,并提供了具体的代码实现,帮助读者理解编译器前端的基础构建块。
摘要由CSDN通过智能技术生成