一、实验名称
词法分析器
二、实验目的及要求
1. 通过实验对编译系统的基本理论、编译程序的基本结构有更为深入的理解和掌握;
2. 掌握编译程序设计的基本方法和步骤;
3. 能够设计实现编译系统的重要环节词法分析,同时增强编写和调试程序的能力。
4.单词的分类
可将标识符(变量名、函数名、数组名等)各归一类;
将常数归为一类;
保留字和分隔符则采用一词一类。
5.符号表的建立
可事先建立一关键字表,以备在识别关键字时进行查询。变量名表及常数表则在词法分析过程中建立。
6.单词串的输出形式
所输出的每一单词,均按形如(CLASS, VALUE)的二元式编码。对于变量标识符和常数,CLASS 字段为响应的类别码,VALUE 字段则是该标识符、常数在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串,其最大长度为四个字符,常数表登记项中则存放该整数的二进制形式)。对于保留字和分隔号,由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE 字段则为“空”。不过,为便于查看由词法分析程序所输出的单词串,也可以在CLASS字段上直接放置单词符号串本身。
7.数据获取
本设计中默认.D:/Source.txt读取源文件。在D盘中放置T.txt,用来存放单词分类表。
三、单词分类表
1.关键字表
种别码 |
单词符号 |
种别码 |
单词符号 |
0 |
if |
10 |
this |
1 |
else |
11 |
static |
2 |
while |
12 |
public |
3 |
throw |
13 |
private |
4 |
this |
14 |
default |
5 |
int |
15 |
switch |
6 |
String |
16 |
catch |
7 |
char |
17 |
void |
8 |
double |