资源简介
词法分析主要是根据标识符的定义规则逐个识别字符或者字符串,包括对关键字、普通标识符、常数等的识别,分别构建标识符表和数字表,并生成二元式流。
语法分析和语义分析调用词法分析,然后查找用SLR(1)构造的ACTION表和GOTO表进行移进或归约,归约时根据不同的产生式进行不同的语义分析,最终输出分析过程,并形成符号表、二元式、四元式文件。
本次程序将本次课程所学的词法分析,语法分析和语义分析结合起来,使我们进一步理解正则表达式,自动机以及语法分析方法。同时加深掌握语法制导翻译和中间代码生成,在语法分析的同时进行语义加工并产生出中间代码的方法。
代码片段和文件信息
#include“header.h“
#include
#include
#include
#define alen 100
#define blen 100
char ch;
FILE *in; //源文件
FILE *outid;
FILE *outnum;
letter wordbuf;
int equal;
int linenum=1; //错误出现的行号
int error_count; //错误出现的个数
int id_count;
int num_count;
letter word[100];int w=0;
letter word1[100];
int addr=0;
int flag=0;
char get1[20];
char value[10];
char id_val[10];
char num_val[10];
char F_val[10];
char T_val[10];
char E_val[10];
char A_val[10];
char id1_val[10];
char *a1[alen]={“int““float““““;““id““#““S““D“};
char *a2[blen]={“id““=““;““+““*““(““)““num““#““A““E““T““F“};
/*int action1_table[10][8]=
{
34000012
0000010000
00650000
00007000
00008000
00000-100
00009000
00-2-20000
00-3-30000
00-4-40000
};*/
/*int action2_table[17][13]=
{
2000000001000
000000001000000
0300000000000
8000070900456
001011000000000
00-3-3120-3000000
00-5-5-50-5000000
80000709001356
00-7-7-70-7000000
00-8-8-80-8000000
00000000-10000
80000709000146
80000709000015
000110016000000
00-2-2120-2000000
00-4-4-40-4000000
00-6-6-60-6000000
};*/
int action1_table[10][8]=
{
3410210110110112
10210210110110310000
1041046510310400
101101102102710400
101101102102810400
101101101101101-100
101101102102910100
104104-2-210310400
104104-3-310310400
104104-4-410310400
};
int action2_table[17][13]=
{
21011011011011011011011011000
1031011011011011031011031000000
10131011011011011011011010000
8101102102102710191010456
10310110111031031011031040000
103101-3-312103-31031010000
103101-5-5-5103-51031010000
81011011031037101910101356
103101-7-7-7103-71031040000
103101-8-8-8103-81031040000
101101101101101101101101-10000
81011011021027101910100146
81011011021027101910100015
10310110111101103161031010000
103101-2-212103-21031010000
103101-4-4-4103-41031010000
103101-6-6-6103-61031010000
};
//初始化保留字表
void Scanner(Seqlist_key &keywordSeqlist_id &L1Number &L2)
{
strcpy(keyword.data[1].name“int“); keyword.data[1].num=1;
strcpy(keyword.data[2].name“char“); keyword.data[2].num=2;
strcpy(keyword.data[3].name“float“); keyword.data[3].num=3;
strcpy(keyword.data[4].name“void“); keyword.data[
- 上一篇:c++源码C-语法分析器源代码
- 下一篇:全套BT源代码,C++编写
相关资源
- MFC视频播放器源码(支持avi/wma/mp3等格
- 北邮-编译原理-词法分析
- VC经典教程等chm格式学习资料包
- 通达信day格式文件转换含港股和基金
- C++语言实现一些基本算法(两点距离
- c++游戏程序(包含源代码,有扫雷,
- Visual C++数字图像实用工程案例精选源
- C程序设计语言_第2版(徐宝文等译)
- 语法分析c语言实现程序代码+实验报告
- 实现语法分析器-编译原理
- 计算机等级考试题库系统
- 模拟进程管理c语言至少要有:创建新
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 定义一个存折类CAccount,存折类具有帐
- 数据结构与程序设计C++描述(Kruse著)
- C++MFC数据库职工信息管理系统,实现
- 追赶法.rar
- 词法分析器有去除注释功能
- 全国计算机等级考试-二级教程-C语言
- Internet选项设置-C++
- VC++6.0多人网络小游戏-支持多人联机网
- 语法分析器 tiny语言语法分析
- C++语法分析器
- Intel_Visual_Fortran应用程序开发
- 自定义词法规则的词法分析器
- 从DEM数据中提取等高线——MFC编写
- MFC写的多媒体播放器包括录音,播放
- 语法分析c语言实现含报告
- C语言词法分析程序
- 简易词法分析器——基于C语言
评论
共有 条评论