- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3__识别无符号数的词法分析器设计实现c重点讲义
实验三 识别无符号数的词法分析器程序设计
一、实验目的与要求
通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将源程序分解成各类单词的词法分析方法。
二、实验重难点
DFA无符号数的词法分析器编码实现
三、实验内容与要求
阅读实验案例,明确实验要求和程序实现方案;
参考实验案例,完善该无符号数的词法分析器设计程序。
四、实验学时
2课时
五、实验设备与环境
C语言编译环境
六、实验案例
无符号数的词法分析器原理
(1)正规式表示:Unsigned digital: d…d…d…dESd…d, it includes four regular expressions:
dd* 如:5 56 567
d*.dd* 如:.5 5.6 5.67
d*ESdd* 如:E5 E+56 5E-67
d*.dd*ESdd* 如:.5E5 5.65E+56 5.4E-67
while
VT={0, ···,9, ·,+,-,E}
d =0|1| ···|9
S = +|-|ε
(2)NFA表示:
(3)经过NFA转DFA和DFA的化简后得到无符号数的DFA表示:
2.设计要求
选取无符号数的算术四则运算中的各类单词为识别对象,要求将其中的各个单词识别出来。
输入:由无符号数和+,-,*,/, ( , ) 构成的算术表达式,如1.5E+2-100。
输出:对识别出的每一单词均单行输出其类别码。
单词符号 类别码(CLASS) 单词值(VALUE) 无符号数 1 数字值 + 2 + - 3 - * 4 * / 5 / ( 6 ( ) 7 ) 如1 (对应1.5E+2)
3 (对应-)
1 (对应100)
3、程序源代码:
4、运行结果:
测试用例1:0.23E-12-E12
结论:(1)案例中的程序只给出了A到B\C及其后续通路的程序,没有给出A到D及其后续通路的程序。因此不能识别E12是一个无符号数。
测试用例2:0.23E*12/a(0.23E-12)
结论:(2)案例中的程序只给出了若输入的字符串符合无符号数的DFA语法规则,将该无符号数识别出来,并没有给出当输入的字符串不符合无符号数的DFA语法规则时,如何处理。请将案例程序按下表规则补充完整。
错误提示有两层含义,一个是输入字符不属于输入字母表,一个是输入字符正确但不合语法规则,这两种错误都应该予以检测并给出相应的处理。但案例程序只检测了第一种错误。
七、无符号数的词法分析器设计的完善
设计要求,对案例程序的BUG进行完善:
(1)案例中的程序只给出了A到B\C及其后续通路的程序,没有给出A到D及其后续通路的程序,请将A到D及其后续通路的程序给出。
(2)案例中只给出了若输入的字符串符合无符号数的DFA语法规则,将该无符号数识别出来,并没有给出当输入的字符串不符合无符号数的DFA语法规则时如何处理。请将案例程序按下表规则补充完整。注意:3个非终态都应该给出相应的判断。
单词符号 类别码(CLASS) 单词值(VALUE) 无符号数 1 数字值 + 2 无值 - 3 无值 * 4 无值 / 5 无值 ( 6 无值 ) 7 无值 非法的字符串 8 该非法的字符串
词法分析程序(c++语言版,保持良好的缩进关系,主函数不能改,只能改AssortIdentify()、Output()函数等相应的函数):
#includeiostream
using namespace std;
#define M 101 //最多可输入的字符数
#define UNSIGNEDNUMBER 1 //无符号数
#define PLUS 2 //加号
#define SUBTRACT 3 //减号
#define MULTIPLY 4 //乘号
#define DIVIDE 5 //除号
#define LEFTBRACKET 6 //左括号
#define RIGHTBRACKET 7 //右括号
#define ILLEGAL 8 //非法的字符串
class AccidenceAnalysis //定义词法分析器类
{
private:
char testStr[M],*p; //私有数据
public:
AccidenceAnalysis(); //构造函数,功能一般是对类做初始化
voi
您可能关注的文档
最近下载
- 《念奴娇赤壁怀古》课件.pptx VIP
- 《线性代数》(陈建龙等)第三章 线性方程组.ppt VIP
- 2025年初中物理课程标准(2022版)考试模拟试卷及答案(共三套).docx
- 城市快速路系统工程冬季施工方案.pdf VIP
- 施耐德_ELAU PacDrive-3-故障代码.pdf VIP
- 2025年重庆市《安全员》C3证考试题库(含答案) .pdf VIP
- 模型试验在土力学与基础工程课程教学中的应用.pdf VIP
- 掘进与支护(第二版)课件:煤巷、半煤岩巷及特殊掘巷法.pptx
- 基于AHP-熵权法的建筑工程经济课程教学策略优化研究.pdf VIP
- 基于BIM技术的独立学院混凝土结构课程教学改革研究.pdf VIP
原创力文档


文档评论(0)