山东科技大学编译原理课程设计

发布时间 : 星期三 文章山东科技大学编译原理课程设计更新完毕开始阅读

山东科技大学学生课程设计

五、总结

经过努力,终于完成了本次实验,在实验中遇到了诸多问题,以及一些

小的细节的实现,实验开始之前,先温习了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

联系合同范文客服:xxxxx#qq.com(#替换为@)