4、解析技术:从预测解析到LR解析

解析技术:从预测解析到LR解析

1. 解析基础与文件结束符

在解析过程中,解析器不仅要读取像 + - num 这样的终结符,还需要处理文件结束符。我们用 $ 来表示文件结束。假设 S 是一个文法的开始符号,为了表明 $ 必须跟在一个完整的 S 短语之后,我们会为文法添加一个新的开始符号 S′ 和一个新的产生式 S′ → S$

2. 预测解析

2.1 递归下降解析器示例

某些文法可以使用递归下降这种简单算法进行解析。本质上,每个文法产生式会转化为递归函数的一个子句。以下是为文法 3.11 编写的递归下降解析器示例:

enum token {IF, THEN, ELSE, BEGIN, END, PRINT, SEMI, NUM, EQ};
extern enum token getToken(void);
enum token tok;
void advance() {tok=getToken();}
void eat(enum token t) {if (tok==t) advance(); else error();}
void S(void) {switch(tok) {
    case IF:
        eat(IF); E(); eat(THEN); S();
        eat(EL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值