编译原理词法分析程序设计实验报告_第1页
编译原理词法分析程序设计实验报告_第2页
编译原理词法分析程序设计实验报告_第3页
编译原理词法分析程序设计实验报告_第4页
编译原理词法分析程序设计实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、完美 WORD 格式 编译原理词法分析程序设计实验报 告 【实验目的】 1 了解词法分析的主要任务。 2 熟悉编译程序的编制。 【实验内容】 根据某文法,构造一基本词法分析程序。找出该语言的关键字、标识符、整数以 及其他一些特殊符号,给出单词的种类和值。 【实验要求】 1. 构造一个小语言的文法 类 C 小语言文法(以 EBNF 表示) : = . : = ( , ) 数体 : =int, := ; : =;| : =| : = : =+|- : = :=| : = +|- : = *|/ 专业知识分享 完美 WORD 格式 : =if else : = : = =|!=|=|= :=for

2、( ; ) : = ( ,| ) : =| : = :=a|b|c| |X|Y|Z :=0|1|2| |8|9 单词分类情况 关键字: intif elsefor 标识符:以字母开头的字母和数字的组合 关系运算符:=|!=|=|= 加法运算符: +|- 乘法运算符:*|/界符:,; ( ) 2. 设计单词的输出形式,单词的种类和值的表示方法 种别码单词值 如: 1int 3. 编写词法分析程序 cffx.c 实现基本的词法分析器,能够分析关键字、标识符、 数字、运算符(需要有“= ”或“=:” 之类需要超前搜索的运算符)以及其他一些符号。 /编译原理词法分析程序.cpp #include #i

3、nclude #include typedef struct words int id; char name20; char value20; word; 专业知识分享 完美 WORD 格式 char integer20=i,n,t; char 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

4、( 种别码: 2 类别:关键字 ifn); printf( 种别码: 3 类别:关键字 elsen); printf( 种别码: 4 类别:关键字 forn); printf( 种别码: 5 类别:标识符 n); printf( 种别码: 6 类别:计算运算符 n); printf( 种别码: 7 类别:关系运算符 n); printf( 种别码: 8 类别:界符 n); while(1) gets(code); n=strlen(code); for(m=0,j=0;m=a j+; else if(words0=i for(i=0;i20;i+) symbolk.valuei=wordsi;

5、 k+; else if(words0=i for(i=0;i20;i+) symbolk.valuei=iffi; k+; else if(words0=e for(i=0;i20;i+) symbolk.valuei=elseei; k+; else if(words0=f for(i=0;i20;i+) symbolk.valuei=forri; k+; else 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;

6、 专业知识分享 完美 WORD 格式 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; symbolk.value0=*; for(i=1;i20;i+) symbolk.valuei=0; k+; if(codem=/) symbolk.id=6; symbolk.value0=/; for(i=1;i20;i+) s

7、ymbolk.valuei=0; k+; if(codem= symbolk.value0=; for(i=1;i20;i+) symbolk.valuei=0; 专业知识分享 完美 WORD 格式 k+; if(codem= symbolk.value0=; symbolk.value1=; for(i=2;i20;i+) symbolk.valuei=0; k+; m+; if(codem=! symbolk.value0=!; symbolk.value1=; for(i=2;i symbolk.value0=; symbolk.value1=; for(i=2;i20;i+) symb

8、olk.valuei=0; k+; m+; if(codem= symbolk.value0=; symbolk.value1=; 专业知识分享 完美 WORD 格式 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;

9、i+) symbolk.valuei=0; k+; if(codem=;) symbolk.id=8; symbolk.value0=; for(i=1;i20;i+) symbolk.valuei=0; 专业知识分享 完美 WORD 格式 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=) s

10、ymbolk.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+; 专业知识分享 完美 WORD 格式 count=k; system(cls); for(i=0;icount;i+) printf(%d ,symboli.id); printf(%sn,symboli.value); return 0; 4.生成并输出单词符号表 专业知识分享 完美 WORD 格式 识

11、别单词的状态转换图: 专业知识分享 完美 WORD 格式 字母 0数字 字符 a 字符 b 字符 c 5.流程图 其他符号 1字母或数 字 其他符号 2 数字 字符 a 3 = 4 5 6 7 8 9 专业知识分享 完美 WORD 格式 开始 初始化 输入语句 字母或数字? 否 是暂存进 words Words 内是否为关键字 否 存入 symbol 结构体 (标识符) 是 存入 symbol 结构体 (关键字) 输入的字符是否为计 否 是否为关系运 否 是否为界符 算运算符 算符 是是 是 存入 symbol 结构体存入 symbol 结构体 (关系运算符)(界符) 存入 symbol 结构体 (计算运算符)否 输出 symbol 输入错误 结束 专业知识分享 完美 WORD 格式 6.源程序清单 int a,b,c; a=b+c; 7.测试结果 8.实验心得: 此次实验让我了解了如何设计、编制并调试词法分析程序,并加深了我对词法分析器 原理的理解;熟悉了直接构造词法分析器的方法和相关原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论