基于预测分析表法的语法分析程序

1.实验内容

1、定义一个LL(1)文法,示例如(仅供参考)

 G[E]:E →TE'     E'→+TE'|ε

T →FT'      T' → *FT'|ε

F → i|(E)

 

2、构造其预测分析表,如


3、LL(1)文法的预测分析表的模型示意图

 

4、运行结果,示例如下

2.实验设计分析

2.1 实验设计思路

    根据实验指导书和书本上的相关知识,实现算法。

2.2 实验算法

(1)输入文法,用字典存储

(2)递归求first集合

(3)递归求follow集合

(4)求每个产生式的select集合,用字典存储

(5)对有相同左结果select集合求交集判断是否是LL(1)文法,没交集是否则是否

(6)是LL(1)文法开始构造预测分析表

(7)输入字符串,通过文法匹配是否接收整个字符串

2.3 实验流程

①预习实验,实验前阅读实验指导书和阅读书本。

②通过书本了解判断LL(1)文法和匹配字符串的原理。首先在纸上模拟文法的判断过程。

       ③上机实现模拟过程。

       ④调试程序,知道能得到预期的结果。

算法流程图:

2.4 实验的基本技术设计方案

①python的基础语法。

简单算法即回溯。

③编译原理的理论知识。

④运用了python里的一些存储结构。

2.5 数据结构

G={}

Firstset=set([])

Followset=set([])

Selectset={}

nstr = list(input())

tstr = list(input())

2.6 实验输入输出



2.7 实验设计语言

    Python

3.实验主要源代码及分析说明

资源链接: https://download.csdn.net/download/qq_35685675/10409106
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值