1.实验内容
1、让计算机接受一个文法,示例如(仅供参考):
G[S]为:
S→AB S→bC
A→ε A→b
B→ε B→aD
C→AD C→b
D→aS D→c
2、 编程实现对上述文法是否是LL(1)文法的判断,是则给出肯定回答,否则给出否定回答。
3、判别是否是LL(1)文法
2.实验设计分析
2.1 实验设计思路
根据实验指导书和书本上的相关知识,实现算法。
2.2 实验算法
(1)输入文法,用字典存储
(2)递归求first集合
(3)递归求follow集合
(4)求每个产生式的select集合,用字典存储
(5)对有相同左结果select集合求交集判断是否是LL(1)文法,没交集是否则是否
2.3 实验流程
①预习实验,实验前阅读实验指导书和阅读书本。
②通过书本了解判断LL(1)文法的原理。首先在纸上模拟文法的判断过程。
③上机实现模拟过程。
④调试程序,知道能得到预期的结果。
2.4 实验的基本技术设计方案
①python的基础语法。
②简单算法即回溯。
③编译原理的理论知识。
④运用了python里的一些存储结构。
2.5 数据结构
G={}
Firstset=set([])
Followset=set([])
Selectset={}
2.6 实验输入输出
2.7 实验设计语言
Python
3.实验主要源代码及分析说明
资源链接:https://download.csdn.net/download/qq_35685675/10409095