版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XX大学学生课程设计(论文)题 目:关于词法分析器的实现学 号:姓 名:专业年级:12计科2班教师姓名:2015年 6月 15日摘 要词法分析器是通过词法分析程序对构成源程序的字符串从左到右的扫描,逐个字符地读入源程序字符并按照构词规则切分成一个一个具有独立意义的单词。并确定其属性(如保留字、标识符、运算符、界限符和常量等)。再把它们转换称长度统一的标准形式属性字(TOKEN)。而词法分析器的功能是输入源程序,输出单词符号,并且词法分析器有两种处理结构:一种是把词法分析器作为主程序;另一种是把词法分析器作为语法分析程序调用的子程序。本文所要介绍的词法分析器是第一种,把它作为主程序。关键词:词法
2、分析 编译原理AbstractLexer is through lexical analysis procedures constitute a source string isscanned from left to right, to read in source code characters and character-by-character in accordance with the rules of word formation of independentsignificance into one word. And if the property (as reserved
3、words,identifiers, operators, boundaries, and constants, and so on). Then unified them said the length of a standard form-property words (TOKEN). LexicalAnalyzer function is the input source, output Word symbols, and lexicalanalyzer has two structures: one is the lexical analyzer as main program;the
4、 other is the parser calls the lexical analyzer programs. The lexicalanalyzer is the first to be introduced in this article, use it as the mainprogram.Keywords: lexical analysis Compiler construction principles目 录1 课程设计的基本分析51.1 词法分析器的概述51.2课程设计的内容51.3课程设计的内容51.4课程设计的要求51.5开发工具的选用62 词法分析模块设计62.
5、1 设计流程图62.2 设计思路62.3 设计代码72.4 设计结果103 总结11参考文献:121 课程设计的基本分析1.1 词法分析器的概述词法分析器又称扫描器。其主要任务是从左到右依次描述字符中形式的源程序的各个字符,逐个识别出其中的单词,并将其转换成为内部编码形式的单词符号串输出,用于进行语法分析。词法分析器的工作是低级别的分析:将字符或者字符序列转化成记号.。在分析时,一是把词法分析器当成语法分析的一部分,另一种是把词法分析器当成编译程序的独立部分。在前一种情况下,词法分析器不断地被语法分析器调用,每调用一次词法分析器将从源程序的字符序列拼出一个单词,并将其Token值返回给语法分析
6、器。后一种情况则不同,词法分析器不是被语法分析器不断地调用,而是一次扫描全部单词完成编译器的独立一遍任务。1.2课程设计的内容通过课程设计进一步理解高级语言在计算机中的执行过程,加深对编译原理中重点算法和编译技术的理解,提高自己的编程能力,培养好的程序设计风格。同时通过某种可视化编程语言的应用,具备初步的Windows环境下的编程思想。1.3课程设计的内容设计一个程序,调试、编译,实现词法分析的功能,识别各单词或字符所属类别,并显示在屏幕上。1.4课程设计的要求通过词法分析器能够实现以下五种类型如单词等的识别。(1)关键字"begin","end",&q
7、uot;if","then","else","while","write","read"等,"do", "call","const","char","until","procedure","repeat"等(2)运算符:"+","-","*","/","=&q
8、uot;等(3)界符:"","","","","",",",".","(",")",":"等(4)标识符 (5)常量1.5开发工具的选用软件环境使用Win7操作系统,使用Visual C+作为编程工具,实现词法的分析。2 词法分析模块设计2.1 设计流程图2.2 设计思路先在桌面建立两个记事本文件,取名为test1.txt和test2.txt,如下运行程序,出现提示,输入以上两个txt文件的名称,
9、即可对记事本中的内容进行分析,并把分析结果输出显示在屏幕上。2.3 设计代码#include <iostream>#include<string>using namespace std;#define MAX 22 char ch =' 'string key15="begin","end","if","then","else","while","write","read", "do&q
10、uot;, "call","const","char","until","procedure","repeat"int Iskey(string c) /关键字判断int i;for(i=0;i<MAX;i+) if(pare(c)=0) return 1; return 0;int IsLetter(char c) /判断是否为字母 if(c<='z')&&(c>='a')|(c<=
11、39;Z')&&(c>='A') return 1; else return 0;int IsDigit(char c) /判断是否为数字 if(c>='0'&&c<='9') return 1;else return 0;void analyse(FILE *fpin) string arr="" while(ch=fgetc(fpin)!=EOF) arr="" if(ch=' '|ch='t'|ch='n
12、') else if(IsLetter(ch) while(IsLetter(ch)|IsDigit(ch) if(ch<='Z')&&(ch>='A') ch=ch+32; arr=arr+ch; ch=fgetc(fpin); fseek(fpin,-1L,SEEK_CUR); if (Iskey(arr)cout<<arr<<"t$属于关键字"<<endl; else cout<<arr<<"t$属于普通标识符"<&
13、lt;endl; else if(IsDigit(ch) while(IsDigit(ch)|ch='.'&&IsDigit(fgetc(fpin) arr=arr+ch; ch=fgetc(fpin); fseek(fpin,-1L,SEEK_CUR); cout<<arr<<"t$属于无符号实数"<<endl; else switch(ch) case'+': case'-' : case'*' : case'=' : case'/
14、' :cout<<ch<<"t$属于运算符"<<endl;break; case'(' : case')' : case'' : case'' : case'' : case'.' : case',' : case'' : case'' :cout<<ch<<"t$属于界符"<<endl;break; case':'
15、:ch=fgetc(fpin); if(ch='=') cout<<":="<<"t$属于运算符"<<endl; else cout<<"="<<"t$属于运算符"<<endl; fseek(fpin,-1L,SEEK_CUR); break; case'>' :ch=fgetc(fpin); if(ch='=') cout<<">="<<&
16、quot;t$属于运算符"<<endl; if(ch='>')cout<<">>"<<"t$属于输入控制符"<<endl; else cout<<">"<<"t$属于运算符"<<endl; fseek(fpin,-1L,SEEK_CUR); break; case'<' :ch=fgetc(fpin); if(ch='=')cout<<
17、;"<="<<"t$属于运算符"<<endl; else if(ch='<')cout<<"<<"<<"t$属于输出控制符"<<endl; else if(ch='>') cout<<"<>"<<"t$属于运算符"<<endl; elsecout<<"<"<<
18、"t$属于运算符"<<endl; fseek(fpin,-1L,SEEK_CUR); break; default : cout<<ch<<"t$无法识别字符,请重新输入!"<<endl; void main() char in_fn30; FILE * fpin; cout<<"请输入源文件名:n" for(;) cin>>in_fn; if(fpin=fopen(in_fn,"r")!=NULL) break; else cout<<&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 塑料设备转让合同范本
- 国内电子旅游合同范本
- 园区整租租房合同范本
- 塑料插脚采购合同范本
- 场地搭建服务合同范本
- 地面铺设租赁合同范本
- 土地作价入股合同范本
- 外墙维护维修合同范本
- 基坑环境监测合同范本
- 在迪拜的工作合同范本
- GB/T 15601-2013管法兰用金属包覆垫片
- 【原创】课题专题讲座-《抓好朗读训练播下语感种子》PPT
- FZ/T 01002-2010印染企业综合能耗计算办法及基本定额
- CJJ28-2014城镇供热管网工程施工及验收规范
- 美术技法理论试卷A
- 防爆电器基础知识
- 减员减支方案一阶段
- 苏教版四年级上册数学第三单元观察物体试卷【含答案】
- 银行笔试真题
- 安全检查记录 受限空间作业
- 工厂数字化之三维激光扫描课件
评论
0/150
提交评论