1.实验要求
(1)从源程序文件中读取有效字符流并将其分析识别单词符号,转换成二元组内部表示形式输出。
(2)可视化方式展示词法分析识别过程或者词法分析器工作原理(选做)。
(3)实验时间4学时。
(4)实验完成后,要提交实验报告(包括源程序清单)。
2.实验内容
2.1主程序设计考虑:
主程序的说明部分为各种表格和变量安排空间(关键字和特殊符号表)。
id 和ci 数组分别存放标识符和常数;还有一些为造表填表设置的变量。
主程序的工作部分建议设计成便于调试的循环结构。每个循环处理一个单词;调用词法分析过程;输出每个单词的内部码(种别编码,属性值)。建议从文件中读取要分析的符号串。
2.2词法分析过程考虑
该过程根据输入单词的第一个有效字符(有时还需读第二个字符),判断单词种别,产生种别编码。对于标识符和常数,需分别与标识符表和常数表中已登记的元素相比较,如表中已有该元素,则记录其在表中的位置,如未出现过,将标识符按顺序填入数组 id 中,将常数存入数组中 ci 中,并记录其在表中的位置。
注:所有识别出的单词都用二元组表示。第一个表示单词的种别编码。例如:关键字的 t=1;标识符的 t=2;常数 t=3;运算符 t=4;界符 t=5。第二个为该单词在各自表中的指针或内部码值(常数表和标识符表是在编译过程中建立起来的。其 i 值是根据它们在源程序中出现的顺序确定的)。
关键字和特殊符号如下(表中数字只是标记,不代表种别编码,种别编码自己定义):
编号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
名字 |
int |
char |