《编译原理》实验 识别无符号数的词法分析器设计实现

一、实验目的与要求 通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解成各类单词的词法分析方法。 二、实验内容 选取无符号数的算术四则运算中的各类单词为识别对象,要求将其中的各个单词识别出来。 输入:由无符号数和+,-,*,/, ( , ) 构成的算术表达式,如1.5E+2-100。 输出:对识别出的每一单词均单行输出其类别码(无符号数的值暂不要求计算)。 【编译原理】词法分析是编译器构造的关键步骤之一,主要负责将源代码文本分解成一个个有意义的单词项,这些单词项被称为符号或Token。在这个实验中,我们的目标是设计并实现一个能识别无符号数的词法分析器,用于处理简单的算术四则运算表达式。 【实验目标】 实验旨在让学生掌握词法分析的基本方法,通过对程序设计语言源代码的扫描,将源代码分解为各类单词,如无符号数、运算符等。实验要求识别的单词包括无符号数(如1.5E+2)、加号(+)、减号(-)、乘号(*)、除号(/)以及括号(( 和 ))。 【实验内容】 输入的表达式由上述单词构成,例如“1.5E+2-100”。输出应为识别出的每个单词的类别码,但不计算无符号数的值。单词类别码包括: 1. 无符号数 - 数字值 2. 加号 - 无值 3. 减号 - 无值 4. 乘号 - 无值 5. 除号 - 无值 6. 开始括号 - 无值 7. 结束括号 - 无值 例如,对于输入“1.5E+2-100”,输出可能为: 1 (对应 1.5E+2) 3 (对应 -) 1 (对应 100) 【实现方法】 1. **状态转换图**:设计识别各类单词的状态转换图。对于无符号数,状态转换图会涉及多个状态,如<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>。终态1、2和6分别表示识别到整数、小数和科学计数的结束。四则运算符的识别则相对简单,可以直接添加到状态图的0状态,指向新的终态。 2. **程序编写**:根据状态转换图或状态矩阵,使用C语言或Java等编程语言编写词法分析程序。程序应能读取输入,识别出单词类型,并输出相应的类别码。 【扩展实验】 为了深入理解编译系统,可以设计错误处理机制。这包括分析词法分析过程中的错误,创建一个简单的错误检查和处理程序。当遇到识别错误时,程序应能给出提示,展示实际编译器错误处理的基本原理和方法。 以下是一个简单的词法分析程序片段: ```c #include<stdio.h> #include<ctype.h> #include<math.h> // ...定义常量和函数声明... int GetChar(void){ int c; c=getchar(); if(isdigit(c)) return DIGIT; if(c=='.') return POINT; if(c=='E' || c=='e') return POWER; if(c=='+') return PLUS; if(c=='-') return MINUS; return OTHER; } // ...其他函数定义... int main(){ while((c=GetChar()) != EOF){ switch(c){ case DIGIT: case POINT: case POWER: // 处理无符号数和四则运算符 break; default: // 错误处理 break; } } return 0; } ``` 该程序片段示例了如何获取输入字符并根据字符类型执行相应的操作。在实际应用中,还需要补充其他函数来处理识别到的单词,并生成对应的类别码。 这个实验不仅训练了学生的编程能力,更让他们深入理解了编译原理中的词法分析概念,为构建更复杂的编译器打下基础。通过实践,学生能够学习到如何将理论知识转化为实际操作,从而提高问题解决的能力。




























剩余6页未读,继续阅读

- u0104078892013-11-30代码是c++的,实验可用
- baidu_235113112015-11-09可以用,比较全

- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 中学校园网站的方案设计书(1).doc
- 数据库自治技术架构解读.pptx
- 算法工程师的个人简历模板.doc
- 基于单片机的步进电机控制系统方案设计书03085.doc
- 单片机原理及接口技术课程设计.doc
- 云计算背景下计算机安全问题及对策.docx
- 专业定制级别互联网电商推广宣传创业计划书优秀ppt模板课件【精选模板】.ppt
- 2014年度混凝土与水泥制品行业技术革新奖获奖项目管理展示(五).doc
- 定向增发项目管理收益率的二因子分解模型及溢价率的项目管理质地假说.doc
- 信息化施工组织设计专业技术方案.doc
- 基于云计算的虚拟化实验室设计与实现.docx
- 芜湖铁画在互联网时代下的发展出路探析.docx
- 2017公需课《网络效应》和《专业技术人员知识重点创造与经营》练习题答案.doc
- 互联网+背景下的情景式和互动式教学模式探究.docx
- 新形势下计算机网络信息安全存在的威胁及对策分析.docx
- JAVA网吧管理.doc


