- 4
- 0
- 约3.6千字
- 约 14页
- 2023-08-22 发布于山东
- 举报
实验报告
2015/2016学年第二学期)
课程名称编译原理
实验名称词法剖析器的结构
实验时间
2016
年
4月
29日
指导单位
计算机软件教课中心
指导教师
学生姓名
wujun
班级学号
学院(系)
计算机学院、软件
专
业
计算机科学
学院与技术
实验报告
实验名称
词法剖析器的结构
指导教师
实验种类
设计
实验学时
4
实验时间
一、实验目的和要求
1、实验目的:
设计、编制、调试一个词法剖析程序,对单词进行辨别和编码,加深对词法剖析原理的理解。
2、实验要求:
1)、同意用户自己输入源程序并保存为文件;
、系统可以输出经过预办理后的源程序(去掉说明、换行、空格
等);
、可以将该源程序中所有的单词依据其所属种类(整数、保存字、运算符、表记符等。定义的类C语言中的表记符只好以字母或下划线开
头)进行归类显示,比如:辨别保存字:if、int、for、while、do、return、
break、continue等,其余的都辨别为表记符;常数为无符号整形数;
运算符包含:+、-、*、/、=、、、=、=、!=等;分开符包含:,、;、
{、}、(、)等;
、实现文件的读取操作,而不是将文本以字符串形式预存于程序中。文本内容为待剖析的类C语言程序。
二、实验环境(实验设施)
硬件:计算机
软件:VisualC++
二、实验原理及内容
1、实验内容:
设计并实现一个词法剖析器,实现对指定地点的类C语言源程序言本文
件的读取,并可以对该源程序中的所有单词进行分类,指出其所属种类,实
现简单的词法剖析操作。
比以下边为一段C语言源程序:
main( ){
inta,b;
a=10;
b=a+20;
}
要求输出以下:
(2,’main’)
(5,’(’)
(5,’)’)
(5,’)’)
(5,’)’)
(5,’)’)
(5,’{’)
(1,’int’)
(2,’a’)
(5,’,’)
(2,’b’)
(5,’;’)
(2,’a’)
(4,’=’)
(3,’10’)
(5,’;’)
(2,’b’)
(4,’=’)
(2,’a’)
(4,’+’)
(3,’20’)
(5,’;’)
(5,’}’)
、实验原理状态变换图
3、实验代码:
实验代码:
#include
#include
#includefstream
#include
#include
#include
structChar{||
ch==:||ch==\||ch==\||ch==[||ch==]||ch==#||ch==_)
returntrue;
returnfalse;
}
==0){
returntrue;
}
returnfalse;
}
预办理去掉说明、换行、空格等
voidScanner(chars[],chara[]){
inti=0,j=0,k=strlen(s);
for(i;ik;i++){
if(s[i]==/s[i+1]==/){
do{
i++;
}while(s[i]!=\n);
i--;
}
elseif(s[i]==/s[i+1]==*){
do{
i++;
}while(s[i]!=/||s[i-1]!=*);
continue;
}
elseif(s[i]==\t||s[i]==\n||s[i]==)
a[j++]=;
else
a[j++]=s[i];
}
cout\n系统经过预办理后的输出(去掉说明和换行):endl;
couta\n\n;
cout系统经过预办理后的输出(去掉说明、换行、空格等):endl;for(i=0;istrlen(a);i++){
if(a[i]==)
continue;
else
couta[i];
}
coutendlendlendl;
}
voidHandle(chars[]){//词法剖析
charch;
for(intj=0;jstrlen(s);j++){
charword[20]={\0};
inti=0;
ch=s[j];
if(ch==)
continue;
elseif(IsLetter(ch)){
do{
word[i++]=ch;
ch=s[++j];
}while(IsLetter(ch)||IsDigit(ch)||ch==_);
j--;
word[i]=\0;
if(IsKeyWord(word))
cout(1,word)endl;
else
cout(2,word)endl;
}
elseif(IsDigit(ch)){
do{
word[i++]=ch;
ch=s[++j];
}while(IsDigit(ch));
j--;
word[i]=\0;
cout(3,word)endl;
}
elseif(IsSeparator(ch)){
您可能关注的文档
最近下载
- 山东大学李雪岩博士论文-中国长期护理保险支出预测与政策模拟研究-20210530.docx VIP
- 长期护理保险支出预测与政策模拟.pptx VIP
- 中医护理科研的选题与设计技巧.pptx VIP
- GB╱T 13234-2018 用能单位节能量计算方法.pdf
- 中国长期护理保险基金支出规模的预测研究.pdf VIP
- 江西省赣抚吉十二校联盟体2026届高三12月联考数学试卷(真题含答案解析).docx VIP
- 水利工程施工(大连理工)中国大学MOOC慕课 章节测验期末考试答案.docx VIP
- 二年级加减乘除口算.doc VIP
- 2025年水果店加盟合同协议.docx VIP
- 高中生物 2023-2024学年山东省潍坊市高二(上)期末生物试卷.pdf VIP
原创力文档

文档评论(0)