简单程序语言理论与编译技术·5 上下文无关语言/语法分析

本文是记录专业课“程序语言理论与编译技术”的部分笔记。

LECTURE 5(上下文无关语言/语法分析)

1、上下文无关文法的生成式是A->α形式的,大部分程序语言都是上下文无关语言。这里的自动机是下推自动机,简称PDA。
2、下推自动机的数学定义如图,唯一的区别就是栈和状态迁移,是非确定性的。


运行时,每一台机器有自己的输入和栈,与NFA不一样的是不同步。
3、A top-down parser based on PDA:从S开始按照文法G推导,看看能否推出所需判断的程序α,可以参考语法树。
算法设计思路:栈存储,自动机分裂,先推最左边的非终结符,左侧符号在上面便于匹配输入,$标识栈底以及输入结束。
具体下推自动机示例如图:


这里简写了部分步骤,如ε, ε->$S实际上是ε, ε->$和ε, ε->S;ε, S->1S0实际上是ε, S->1、ε, ε->S和ε, ε->0。
具体运行示例如图:


问题是时间和空间都是指数复杂度。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值