运行结果都是截图,上传截图的时候网有点差,所以就没有代码运行结果了。
【实验一】词法分析
〖1.实验目的〗
加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。
〖2.实验内容〗 类C语言的手工词法分析器设计
〖3.实验要求〗
(1)C语言子集(最好能对实际的C源代码进行词法分析,从而省去样例设计)
(2)一符一种
(3)单字符单词(算符、界符)的种码等于其ASCII码,不必设计;
关键字和双字符运算符,种码从130开始编码。
(4)如果以真实的C源程序为测试样例,请酌情考虑一些问题:
转义字符
编译预处理行(以'#'开始的行,#include、#define、#if、#else、……,等等)
带续行的宏定义。
注释(单行注释// ... 和块注释 )
……
〖4.实验步骤〗
1.定义目标语言的可用符号表和构词规则;
2.依次读入源程序符号,对源程序进行单词切分和识别,直到源程序结束;
3.对正确的单词,按照它的种别以<种别码,值>的形式保存在符号表中;
4.对不正确的单词,做出错误处理。
〖5.技术路线〗
这里以开始定义的C语言子集的源程序作为词法分析程序的输入数据。在词法分析中,自文件头开始扫描源程序字符,一旦发现符合“单词”定义的源程序字符串时,将它翻译成固定长度的单词内部表示,并查、填适当的信息表。经过词法分析后,源程序字符串(源程序的外部表示)被翻译成具有等长信息的单词串(源程序的内部表示),并产生两个表格:常数表和标识符表,它们分别包含了源程序中的所有常数和所有标识符。
1.关键字: if、int、for、while、do、return、break、continue。
2.标识符;单词。
3.常数为无符号整形数。
4.运算符包括: +、一、*、/、=、、<、=、<=、!= 。
5.分隔符包括:,、 ;、{、}、(、)。
空格、注释:在词法分析中要去掉。
| 单词符号 | 种别码 | 单词符号 | 种别码 |
| begin | 1 |


