1、实验目的与内容
实验目的是分析SysY语言的词法规范, 列出词法单元,SysY语言是一种类C语言。
输入:从文件中读取SysY语言的源代码,just like the following:
![](https://raw.githubusercontent.com/DavidZyy/PicBed/master/img/QQTuPian20210619143711.png)
输出:词法分析结果,如下所示:
![](https://raw.githubusercontent.com/DavidZyy/PicBed/master/img/QQTuPian20210619144406.png)
2、程序总体设计思路和框架
3、主要数据结构和流程描述
创建了三个“set”类型的容器,分别用来存放保留字(reserved word),运算符(operator)和分隔符(separator)。方便查询。
//保留字
string reserved_keywords[] = {"const", "int", "void", "if", "while", "break", "return", "continue", "main"};
set<string> reserved_keywords_set(reserved_keywords, reserved_keywords + 9);
//运算符
string operational_characters[] = {"+", "-", "*", "/", "%", "==", "!=", "<", ">", "<=", ">=", "!", "&&", "||", "[", "]", "++", "--", "=", "><"};
set<string> operational_characters_set(operational_characters, operational_characters + 20);
//分隔符
string separators[] = {";", "{", "}", "(", ")"};
set<string> separators_set(separators, separators +5);
4、测试结果与说明
见1,发现程序运行结果正确,成功识别出了注释,以及错误的标识符。
5、实验收获与反思
处理好关于文件的读入和输出,注意*strtok( )*函数的使用,其他无。
附录
参考资料
[2] 《编译器设计原理》,西安电子科技大学出版社,谌志群,王荣波,黄孝喜