版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理词法分析程序设计实验报 【实验目的】 1了解词法分析的主要任务。 2熟悉编译程序的编制。 【实验内容】 根据某文法,构造一基本词法分析程序。找出该语言的关键字、标识符、整数 以及其他一些特殊符号,给出单词的种类和值。 【实验要求】 3构造一个小语言的文法 类 C 小语言文法(以 EBNF 表示) 程序:=分程序 分程序 . 分程序 : =标识符 ( 变量说明部分 ,变量说明部分 )函数体 变量说明部分:=int标识符,标识符 函数体 : : = 变量说明部分 。语句序列 语句序列 : : =语句序列 。语句|语句 语句:=赋值语句 |条件语句 |循环语句 |函数调用语句 赋值语句 :=
2、标识符 =表达式 表达式 : : =+|- 项加法运算符 项 项:=因子乘法运算符 因子 因子:=标识符|无符号整数 加法运算符 := +|- 乘法运算符 := *|/ 条件语句:=if条件语句序列 else语句序列 条件:=表达式 关系运算符 表达式 关系运算符 := =|!=|=|= 循环语句:=for 表达式 。条件 。表达式 )语句序列 函数调用语句 :=标识符 (标识符 ,标识符 |空) 标识符 :=字母字母|数字 : = :=a|b|c|X|Y|Z :=0|1|2|8|9 单词分类情况 关键字: int if else for 标识符:以字母开头的字母和数字的组合 关系运算符: =
3、|!=|=|= 加法运算符: +|- 乘法运算符: *|/界符:,; ( ) 4 设计单词的输出形式,单词的种类和值的表示方法 种别码 单词值 如: 1 int 3. 编写词法分析程序 cffx.c 实现基本的词法分析器,能够分析关键字、标识符、数字、运算符(需要有“ =”或 =”之类需要超前搜索的运算符)以及其他一些符号。 / 编译原理词法分析程序 .cpp #include #include #include typedef struct words int id 。 char name20 。 char value20 。 word 。 char integer20=i,n,t 。 ch
4、ar iff20=i,f 。 char elsee20=e,l,s,e 。 char forr20=f,o,r 。 int main() char code10000 。 char words20,ch 。 int i,j,p,count,n,m 。 int k=0 。 word symbol500 。 printf( 种别码: 1 类别:关键字 intn) 。 printf( 种别码: 2 类别:关键字 ifn) 。 printf( 种别码: 3 类别:关键字 elsen) 。 printf( 种别码: 4 类别:关键字 forn) 。 printf( 种别码: 5 类别:标识符 n) 。
5、printf( 种别码: 6 类别:计算运算符 n) 。 printf( 种别码: 7 类别:关系运算符 n) 。 printf( 种别码: 8 类别:界符 n) 。 while(1) gets(code)。 n=strlen(code) 。 for(m=0,j=0。m=a&codem=0&codem=9) wordsj=codem 。 j+。 else if(words0=i&words1=n&words2=t&words3=0) symbolk.id=1 。 for(i=0。 i20。 i+) symbolk.valuei=wordsi 。 k+。 else if(words0=i&wor
6、ds1=f&words2=0) symbolk.id=2 。 for(i=0。 i20。 i+) symbolk.valuei=iffi 。 k+。 else if(words0=e&words1=l&words2=s&words3=e&words4=0) symbolk.id=3 。 for(i=0 。 i20。 i+) symbolk.valuei=elseei 。 k+。 else if(words0=f&words1=o&words2=r&words3=0) symbolk.id=4 。 for(i=0 。 i20。 i+) symbolk.valuei=forri 。 k+。 els
7、e symbolk.id=5 。 for(i=0 。 i20。 i+) symbolk.valuei=wordsi 。 k+。 for(p=0。p20。p+) wordsp=0 。 j=0。 if(codem=+) symbolk.id=6 。 symbolk.value0=+ 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=-) symbolk.id=6 。 symbolk.value0=- 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=*) symbolk.id=6 。 s
8、ymbolk.value0=* 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=/) symbolk.id=6 。 symbolk.value0=/ 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=&codem+1!=) symbolk.id=6 。 symbolk.value0= 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=&codem+1=) symbolk.id=7 。 symbolk.value0= 。 sym
9、bolk.value1= 。 for(i=2 。 i20。 i+) symbolk.valuei=0 。 k+。 m+。 if(codem=!&codem+1=) symbolk.id=7 。 symbolk.value0=! 。 symbolk.value1= 。 for(i=2 。 i&codem+1=) symbolk.id=7 。 symbolk.value0= 。 symbolk.value1= 。 for(i=2 。 i20。 i+) symbolk.valuei=0 。 k+。 m+。 if(codem=&codem+1=) symbolk.id=7 。 symbolk.valu
10、e0= 。 symbolk.value1= 。 for(i=2 。 i) symbolk.id=7 。 symbolk.value0= 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=) symbolk.id=7 。 symbolk.value0= 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=,) symbolk.id=8 。 symbolk.value0=, 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem= 。 )
11、symbolk.id=8 。 symbolk.value0= 。 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=() symbolk.id=8 。 symbolk.value0=( 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=) symbolk.id=8 。 symbolk.value0=) 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=) symbolk.id=8 。 symbolk.value0= 。 for(
12、i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 if(codem=) symbolk.id=8 。 symbolk.value0= 。 for(i=1 。 i20。 i+) symbolk.valuei=0 。 k+。 count=k 。 system(cls)。 for(i=0 。 icount 。 i+) printf(%d ,symboli.id) 。 printf(%sn,symboli.value) 。 1 return 0 。 4.生成并输出单词符号表 1 】00 00 5 OB 5 5 00 识别单词的状态转换图: 5流程图 结束 6源程序清单 int a,b,c。 a=b+c。 7测试结果 C:UsersTHI NKDeskQpU ntitled l.ece C AUsersXTHI 忖 KDe3ktopUntitled l.exe C ! a = b + 8.实验心得: 此次实验让我了解了如何设计、编制并调试词法分析程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福利分房合同范本
- 旅游美学学习通超星期末考试答案章节答案2024年
- 2024年新趋势:《画漫画》教案设计展望
- 强电布线合同范本
- 水塔拆迁合同范本
- 种植质保合同范本
- 2023年贵州科技馆制员工招聘考试真题
- 甲方宅基地转让合同范本
- 2024年销售人员劳动协议格式
- 土鸡预售合同范本
- 第9课《这些是大家的》(课件)-部编版道德与法治二年级上册
- 2024年四川省南充市从“五方面人员”中选拔乡镇领导班子成员201人历年高频500题难、易错点模拟试题附带答案详解
- 医疗行业智能化医疗设备维修与保养方案
- 2024年母婴护理考试竞赛试题
- 人工智能算力中心项目可行性研究报告写作模板-申批备案
- 2024-2030年中国空压机(空气压缩机)行业运营现状与可持续发展建议研究报告
- 2024-2030年中国机器翻译行业市场发展趋势与前景展望战略分析报告
- 高速公路综合监控太阳能供电系统技术方案设计
- 2024年秋新华师大版七年级上册数学 2.4.3去括号和添括号 教学课件
- 【论述土木工程的信息化建设应用8600字(论文)】
- 北师大版(三起)(2024)三年级上册英语Unit 5单元测试卷(含答案)
评论
0/150
提交评论