资源简介
实验目的:
1. 了解 LL(1)语法分析是如何根据语法规则逐一分析词法分析所得到的单词,检查语法错误,即掌握语法分析过程。
2. 掌握LL(1)文法判别调剂和 LL(1)语法分析器的设计与调试。
实验内容:
针对任意的文法,编写相应的左递归消除、左公共因子提取程序,求解相应的FIRST、FOLLOW集,构造预测分析表,并编写LL(1)语法分析程序,并给出测试句子的分析过程。(注:左递归消除和左公共因子如果在实验三里做了,可以直接拿过来用)
判断LL(1)文法部分:
1. 输入:文法
2. 处理:左递归消除、左公共因子提取,FIRST、FOLLOW等集合构造,判断LL(1)
3. 输出:是LL(1)的情况输出预测分析表,否则判断不是LL(1)
LL(1)分析程序部分:
1. 输入:诸如对应文法的符号串,以$结束。
2. 处理:基于分析表进行 LL(1)语法分析,判断其是否符合文法。
3. 输出:串是否合法。
三、实验要求
1. 构建合适的数据结构来表示文法符号和文法规则。
2. 设计恰当的数据结构存储预测分析表。(ε可用#代替)
3. 任选 C/C++/Java 或其他高级语言中的一种作为编程语言,要求所编程序结构清晰。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#define MAXS 100
using namespace std;
int cntNode;
struct Node {
char left;
string right;
};
struct FF { //First集与Follow集
char A;
string First;
string Follow;
};
struct Select {
Node wenFa;//文法
string sel;//对应的select集
};
Node b[MAXS];
typedef vector VNode;
typedef vector VFF;
typedef vector
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 42 2018-01-01 22:39 grammer2.txt
文件 16331 2018-01-05 10:00 main.cpp
文件 33 2018-01-02 11:12 grammer1.txt
- 上一篇:用java编写的局域网通信源代码
- 下一篇:C语言词法分析器(Java版.带界面)
评论
共有 条评论