SNL编译器之词法分析器

这是什么

这是吉林大学编译原理的课程设计。想必来到这里的看客手头都应该有那本实验书,故背景就不多讲了。


词法分析如何做

一个语言规定好了该语言中都有那些词素,诸如保留字、特殊符号(+-之流)等。在我们做词法分析的时候应该提前了解这些,所幸实验书中给的信息已经十分详尽。
在书中有一个词法分析的状态机,列出了SNL语言所能识别的所有词素。故重点在于实现该状态机。状态机的实现书中给了两种方法,一种是状态转换表,一种使用ifwhile循环来处理,在这里我们选择后者实现。

这里以标识符为例,
这里写图片描述
当遇到字母时应前往右边这个状态,之后遇到无论是字母或数字都是绕一圈再回来,直到遇到其它标识符。故可按如下方法处理

if(ischar(lookhead)){
     string str;//用于存放id
     get_next_char(&lookhead)
         while(ischar(lookhead)||isnum(lookhead)){
             
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值