山东科技大学学生课程设计
五、总结
经过努力,终于完成了本次实验,在实验中遇到了诸多问题,以及一些
小的细节的实现,实验开始之前,先温习了C++迭代器部分,觉得使用这部分内容来实现本次的作业很适合,然后开始写需求分析,整理思路以及代码的书写。经过不断地调试,代码部分总算完成,但是和理想中的结果还有很大的差距。分析之后,对代码整体上进行了调整,并参考资料,完成了本次的作业。通过本次作业,不仅学到了新的知识,而且对以往的知识进行了回顾,并在编码上提高了一个新的阶段。对今后的学习和工作都有很大的帮助。
18
山东科技大学学生课程设计
语法分析之 LL1分析法实现
一、设计目的
根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。本次实验的目的主要是加深对预测分析LL(1)分析法的理解。
二、设计要求
程序输入/输出示例:
对下列文法,用LL(1)分析法对任意输入的符号串进行分析: (1)E->TG (2)G->+TG|—TG (3)G->ε (4)T->FS (5)S->*FS|/FS (6)S->ε (7)F->(E) (8)F->i 输出的格式如下:
(1)输入一以#结束的符号串(包括+—*/()i#): (2)输出过程如下:
19
山东科技大学学生课程设计
步骤 分析栈 剩余输入串 所用产生式 1 E i+i*i# E->TG
(3)输入符号串为非法符号串(或者为合法符号串) 注意:
1.表达式中允许使用运算符(+-*/)、分割符(括号)、字符i,结束符#; 2.如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好); 3.测试用的表达式可以事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;
三、设计说明 1. 需求分析:
a) 输入及其范围
输入为文法,表达式中允许使用运算符(+-*/)、分割符(括号)、字
符i,结束符#。
b) 输出形式
步骤 分析栈 剩余输入串 所用产生式 1 E i+i*i# E->TG
c) 程序功能
根据输入的文法进行分析,利用LL(1)控制程序根据显示栈栈顶内容、
20
山东科技大学学生课程设计
向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程
d) 测试数据
输入字符串i+i*i#作为测试。
2. 概要设计
a)数据类型的定义
char Stack[50];/*分析栈*/
char Left[20];/*剩余输入串*/
char arrZhongjie[20]={'i','+','-','*','/','(',')','#'};
char arrNozhongjie[20]={'E','G','T','S','F'}; b) 主程序流程
21
相关推荐: