资源简介
C语言小子集编译程序,实现,词法分析,语法分析,语义分析,目标代码生成

代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
struct token//词法 token结构体
{
int code;//编码
int num;//递增编号
token *next;
};
token *token_head*token_tail;//token队列
struct str//词法 string结构体
{
int num;//编号
string word;//字符串内容
str *next;
};
str *string_head*string_tail;//string队列
struct ivan//语法 产生式结构体
{
char left;//产生式的左部
string right;//产生式的右部
int len;//产生式右部的长度
};
ivan css[20];//语法 20个产生式
struct pank//语法 action表结构体
{
char sr;//移进或归约
int state;//转到的状态编号
};
pank action[46][18];//action表
int go_to[46][11];//语法 go_to表
struct ike//语法 分析栈结构体,双链
{
ike *pre;
int num;//状态
int word;//符号编码
ike *next;
};
ike *stack_head*stack_tail;//分析栈首尾指针
struct L//语义四元式的数据结构
{
int k;
string op;//操作符
string op1;//操作数
string op2;//操作数
string result;//结果
L *next;//语义四元式向后指针
L *Ltrue;//回填true链向前指针
L *Lfalse;//回填false链向前指针
};
L *L_four_head*L_four_tail*L_true_head*L_false_head;/*四元式链,true链,false链*/
struct symb//语义输入时符号表
{
string word;//变量名称
int addr;//变量地址
symb *next;
};
symb *symb_head*symb_tail;//语义符号链表
////////////////////////////////词法分析有关函数声明
void outdaima() ;
void scan();//按字符读取源文件
void cifa_main();//词法分析主程序
int judge(char ch);//判断输入字符的类型
void out1(char ch);//写入token.txt
void out3(char chstring word);//写入string.txt
void input1(token *temp);//插入结点到队列token
void input3(str *temp);//插入结点到队列string
void output();//输出三个队列的内容
void outfile();//输出三个队列的内容到相应文件中
////////////////////////////////语法分析有关函数声明
void yufa_main();//语法分析主程序
void yufa_initialize();//初始化语法分析数据结构
int yufa_SLR1(int a);//语法分析主体部分
int ID1(int a);//给输入字符编号,转化成action表列编号
string ID10(int i);//给输入字符反编号
int ID2(char ch);//给非终结状态编号,转化成go_to表列编号
int ID20(char ch);//给非终结状态编号
char ID21(int j);//给非终结状态反编号
void add(ike *temp);//给ike分析栈链表增加一个结点
void del();//给ike分析栈链表删除一个结点
/////////////////////////////////语义分析相关函数的声明
void yuyi_main(int m);//语义分析主程序
void add_L_four(L *temp);//向四元式链中加一个结点
void add_L_true(L *temp);//向true链中加一个结点
void add_L_false(L *temp);//向false链中加一个结点
void add_symb(symb *temp);//向语义符号表链中加一个结点
void output_yuyi();//输出中间代码四元式和最后符号表
string newop(int m);//把数字变成字符串
string id_numtoname(int num);//把编号转换成相应的变量名
int lookup(string m);//变量声明检查
/////////////////////////////////全局变量的声明
FILE *fp;//文件指针
int wordcount;//标志符计数
int err;//标志词法分析结果正确或错误
int nl;//读取行数
int yuyi_linshi;//语义临时变量
string E_nameT_nameF_nameM_nameid_nameid1_nameid2_nameerrword;//用于归约时名称传递和未声明变量的输出
int id_numid1_numid2_numid_leftid_whileid_thenid_do;//用于记录一些特殊的字符位置信息
////////////////////////////////主程序开始
int main()
{
cout<<“************************“< cout<<“* 说明: *“< cout<<“* 第一部分:词法分析 *“< cout<<“* 第二部分:语法分析 *“< cout<<“* 第三部分:语义分析 *“< cout<<“* 第四部分:目标代码生成 *“< cout<<“************************“< cifa_main();//词法
yufa_main();//语法
output_yuyi();/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 28086 2013-01-08 14:06 wxy.cpp
----------- --------- ---------- ----- ----
28086 1
- 上一篇:矩阵的三角分解c程序
- 下一篇:奇异值分解SVDC语言源代码
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论