编译原理课设代码-1

编译原理课设(NEU)代码exe1.h

代码有几处bug,另外当时开发的时候心太急,理论基础没有做好,导致代码有不可逆性的缺陷:符号表,大家可以将符号表结构修改一下
代码是分为多个文章中存放的
VS 2017 VC++环境
代码是分为6个部分,在个人主页中都可以找到
编译以原理语言风格类似于C,允许递归函数,递归定义struct等,if,while语句也支持,但是没有多维数组,尽量模仿C语言,好像是可以生成最终的虚拟Intel汇编代码,本来有一个优化模块的,但是后来时间紧张,没有加进去

#pragma once
#include <iostream>
#include<map>
#include<string>
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
#include<list>
#include <fstream>
#include<vector>
using namespace std;
class exe1
{
private:
	map<string, string>Map_KT;
	map<string, string>Map_PT;
	int ktt = 1, chang = 1, ptt = 1, biao = 1;
	list<string>daima;
	list<string>leixing;
	list<string>neibuma;
	
	list<int>jiao;

	void transfer(list<string> source);//将list转换为cextor

public:
	vector<string> to_next_output;//传递给下一级  文法分析
	list<string>const_number;//存储常量
	exe1(string name);
	~exe1();
	map<string, string> init_KT(map<string, string> map_kt);
	map<string, string> init_PT(map<string, string> map_pt);

	int ch_to_code(char ch);
	int state_next(int state, int ch_code);
	int state_change(int state, char ch);
	int Out_Token(int state_before, string out_token, int ch_code, char ch);
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值