这是什么
这是吉林大学编译原理的课程设计。想必来到这里的看客手头都应该有那本实验书,故背景就不多讲了。
词法分析如何做
一个语言规定好了该语言中都有那些词素,诸如保留字、特殊符号(+
,-
之流)等。在我们做词法分析的时候应该提前了解这些,所幸实验书中给的信息已经十分详尽。
在书中有一个词法分析的状态机,列出了SNL语言所能识别的所有词素。故重点在于实现该状态机。状态机的实现书中给了两种方法,一种是状态转换表,一种使用if
、while
循环来处理,在这里我们选择后者实现。
这里以标识符为例,
当遇到字母时应前往右边这个状态,之后遇到无论是字母或数字都是绕一圈再回来,直到遇到其它标识符。故可按如下方法处理
if(ischar(lookhead)){
string str;//用于存放id
get_next_char(&lookhead)
while(ischar(lookhead)||isnum(lookhead)){