无符号数算术运算词法分析实验:识别与分类

需积分: 9 2 下载量 23 浏览量 更新于2024-09-17 收藏 140KB DOC 举报
实验一主要涉及的是编译原理中的词法分析,目标是设计一个程序来识别无符号数的算术四则运算中的各类单词,即从输入的算术表达式中提取并分类这些单词。实验的核心在于处理无符号数的识别,包括整数、小数以及以E为底数的指数。以下是实验的主要步骤: 1. 实验内容: - 输入:接受由无符号数(如1.5E+2)和基本运算符(如+,-,*,/,以及括号())组成的算术表达式。 - 输出:对于识别出的每个单词,即数字和运算符,分别输出它们的类别码。对于无符号数,目前仅识别而不计算其值。 2. 设计部分: - 关键点:无符号数识别。这部分需要考虑多种情况,如正整数、小数点、指数标志'E'等。 - 词法分析流程图展示了识别过程的结构,可能包括检查字符类型(数字、运算符、其他特殊字符)、判断整数或小数的合法性、以及处理指数运算等步骤。 3. 源程序代码: - 包含了多个函数,如`StoreType()`用于存储识别结果的类别码,`ShowStrFile()`负责读取输入字符串,`Output()`用于输出字符,`Sign()`、`UnsignedNum()`、`LegalCharacter()`等用于单个字符的识别。 - `DistinguishSign()`函数可能专门处理运算符的识别,`TypyDistinguish()`则可能用于识别整个单词(数字或运算符)。 - `ShowType()`函数将识别后的类别码存储在数组`Type[100]`中,供后续语法分析阶段使用。 4. 实现细节: - `ShowStrFile()`函数打开文件a,并将输入字符串写入,为后续处理提供基础数据。 - 在输入字符串中,`LegalCharacter()`函数会检查每个字符是否属于合法字符集,包括运算符、数字(0-9)、小数点`.`和指数符号'E'。 这个实验着重于词法分析的基本概念和技术,通过编写程序来识别和分类输入表达式的不同部分。参与者需要理解并掌握如何构造和执行词法分析器,同时能够正确处理无符号数的特殊形式,如整数、小数和指数。通过完成这个实验,学生将加深对编译原理特别是词法分析阶段的理解和实践能力。