1 / 11
文档名称:

东南大学 编译原理 词法分析器实验报告.docx

格式:docx   大小:515KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

东南大学 编译原理 词法分析器实验报告.docx

上传人:s1188831 2017/6/27 文件大小:515 KB

下载得到文件列表

东南大学 编译原理 词法分析器实验报告.docx

相关文档

文档介绍

文档介绍:词法分析设计
1. 实验目的 
通过本实验的编程实践,了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。
 
2. 实验内容 
用C++语言实现对C++语言子集的源程序进行词法分析。通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示 ;同时进行标识符登记符号表的管理。
3. 实验原理
本次实验采用NFA->DFA->DFA0的过程:
对待分析的简单的词法(关键词/id/num/运算符/空白符等)先分别建立自己的FA,然后将他们用产生式连接起来并设置一个唯一的开始符,终结符不合并。
待分析的简单的词法
(1)关键字:
"asm","auto","bool","break","case","catch","char","class","const","const_cast"等
(2)界符(查表)
";",",","(",")","[","]","{","}"
运算符
"*","/","%","+","-","<<","=",">>","&","^","|","++","--","+=","-=","*=","/=","%=","&=","^=","|="
relop:
其他单词是标识符(ID)和整型常数(SUM),通过正规式定义。

id/keywords:
digit:
空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。

空白、制表符和换行符:
4. 相关自动机描述
DFA:
DFA0:
流程图
5. 核心数据结构描述
(1)生成的token序列由name、type、attr保存。
struct token{
string name;
string type;
int attr;
};
(2)本文的大多数数据结构都用map来保存,优点是查找方便,大大提高时间复杂度。
map<string,int> Keywords; //保存关键字
map<string,int> Sep; //保存界符
map<string,int> Relop; //保存比较运算符
map<string,int> Op; //保存其他运算符
map<string,int>id; //保存输入字符串中的id
map<string,int>num; //保存数字
vector<token>Token; //保存token序列,大小未知,所以采用vector保存
6. 核心算法描述
(1)void addToken(string s,int type)s为找到的字符串,type为可能类型。
将分析出来的token()序列添加到Token序列表中。如果是类型为1,查看关键词表,若找到,其类型为关键词并将其以类型为关键词存储到Token表中;若未找到,则查找id表,若找到,说明该id已经出现过,否则添加新的id到id表中,将该i字符串以类型为id添加到Token表中。如果类型为2,在界符表中查找,如果找到以类型为界符存储到Token表中,同理其他几种类型。可能类型为1--5,如果出现其他类型表示是词法分析器中发现额错误,将错误信息记录下来。
void addToken(string s,int type)
{
switch(type){
case 1:
l_it=(s);
if (l_it!=()){
token t={s,"keywords",l_it->second};
(t);
}else{
l_it=(s);
if (l_it==())
{
id[s]=idNum;
token t={s,"id",idNum++};
(t);
}else {
token t={s,"id",l_it->second};
(t);
}
}
break;
case 2:
l_it=(s);
if (l_it!=()){
token t={s,"separatrix",l_it->second};
(t);
}
break;
case 3:
l_i

最近更新

二年级上册阅读市公开课获奖教案省名师优质课.. 5页

乡村支市公开课获奖教案省名师优质课赛课一等.. 4页

乖宝宝的市公开课获奖教案省名师优质课赛课一.. 4页

中班绘画市公开课获奖教案省名师优质课赛课一.. 4页

世界水日大班市公开课获奖教案省名师优质课赛.. 6页

下雨美术市公开课获奖教案省名师优质课赛课一.. 3页

三条鱼活动市公开课获奖教案省名师优质课赛课.. 4页

七色花市公开课获奖教案省名师优质课赛课一等.. 3页

七年级下册实数市公开课获奖教案省名师优质课.. 6页

一年级静夜思市公开课获奖教案省名师优质课赛.. 4页

一年级家庭市公开课获奖教案省名师优质课赛课.. 4页

一分钟幼儿市公开课获奖教案省名师优质课赛课.. 3页

《祖父的园子》市公开课获奖教案省名师优质课.. 5页

《木兰从军》的市公开课获奖教案省名师优质课.. 4页

黑脉金斑蝶教学设计 5页

高考地理干热河谷教学设计 6页

高中音乐教学设计教案范例 5页

高中生物教学设计研究方向 3页

高中优质教学设计数学 4页

马说教学设计实践报告 4页

韩信无影不进场教学设计 5页

难忘的英语语法教学设计 4页

镜子中的世界魔术教学设计 4页

金色的草地评论课教学设计 4页

逆风守家关羽教学设计 5页

还原物理生态课堂教学设计 3页

路灯变爱心的特效教学设计 4页

货运电梯线路图教学设计 6页

课外阅读小学教学设计案例 5页

语文教学设计及反思 4页