东北大学 编译原理作业 c++模拟一个扫描器

本文介绍如何使用C++编程实现编译原理中的扫描器,详细阐述了扫描器的工作原理,并提供了具体的代码实现,帮助读者理解编译器前端的基础构建块。
摘要由CSDN通过智能技术生成
#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({
   
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值