实验二--语法分析程序的设计-(7页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《实验二--语法分析程序的设计-(7页).doc》由会员分享,可在线阅读,更多相关《实验二--语法分析程序的设计-(7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-实验二-语法分析程序的设计-第 7 页实验二 语法分析程序的设计姓名: 学号: 专业班级一、实验目的通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中预测分析方法。二、实验内容设计一个文法的预测分析程序,判断特定表达式的正确性。三、实验要求1、 给出文法如下:GE E-T|E+T; T-F|T*F; F-i|(E);2、 根据该文法构造相应的LL(1)文法及LL(1)分析表,并为该文法设计预测分析程序,利用C语言或C+语言或Java语言实现;3、 利用预测分析程序完成下列功能:1) 手工将测试的表达式写入文本文件,
2、每个表达式写一行,用“;”表示结束;2) 读入文本文件中的表达式;3) 调用实验一中的词法分析程序搜索单词;4) 把单词送入预测分析程序,判断表达式是否正确(是否是给出文法的语言),若错误,应给出错误信息;5) 完成上述功能,有余力的同学可以进一步完成通过程序实现对非LL(1)文法到LL(1)文法的自动转换(见实验二附加资料1)。四、实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境或 Visual C+ 程序集成环境五、实验步骤1、 分析文法,将给出的文法转化为LL(1)文法;2、 学习预测分析程序的结构,设计合理的预测分析程序;3、 编写测试程序,包括表
3、达式的读入和结果的输出;4、 测试程序运行效果,测试数据可以参考下列给出的数据。六、测试数据 输入数据:编辑一个文本文文件expression.txt,在文件中输入如下内容:10;1+2;(1+2)*3+(5+6*7);(1+2)*3+4;1+2+3+(*4+5);(a+b)*(c+d);(ab3+de4)*5)+1;正确结果:(1)10;输出:正确(2)1+2;输出:正确(3)(1+2)*3+(5+6*7);输出:正确(4)(1+2)*3+4输出:错误(5)1+2+3+(*4+5)输出:错误(6)(a+b)*(c+d)输出:正确(7)(ab3+de4)*5)+1输出:错误七、源代码impor
4、t java.util.*;import java.io.*;public class test2 static String key_word = main, if, then, while, do, int,else ;static String cal_word = +, -, *, /, , , , (, * 给定文法GE: E-T|E+T; T-F|T*F; F-i|(E);static String gram = E-TA, A-+TA, A-, T-FB, B-*FB,B-, F-P, F-(E) ;static String followE = ), # ;static Str
5、ing followEA = ), # ;static String followT = +, ), # ;static String followTB = +, ), # ;static String followF = *, +, ), # ;static String firstE = i, ( ;static String firstEA = +, ;static String firstT = i, ( ;static String firstTB = *, ;static String firstF = i, ( ;static String list = , i, +, *, (
6、, ), # , E, TA, null, null, TA, null, null , A, null, +TA, null, null, , , T, FB, null, null, FB, null, null , B, null, , *FB, null, , , F, i, null, null, (E), null, null ;public static void scan(String infile,String outfile, Stack word, Stack expression)throws Exception java.io.File file = new java
7、.io.File(infile);Scanner input = new Scanner(file);java.io.PrintWriter output = new PrintWriter(outfile);int count = 0;wordcount.push(#);while (input.hasNext() String tmp = input.next();int i = 0;while (i tmp.length() if (tmp.charAt(i) = 1) /检查十进制数字String num = ;while (tmp.charAt(i) = 0) num += tmp.
8、charAt(i);i+;if (i = tmp.length()break;output.println();wordcount.push(i);expressioncount.push(num);if (i + 2 tmp.length()/ 检查十六进制数字if (tmp.charAt(i) = 0 & tmp.charAt(i + 1) = x) i += 2;String num = ;while (tmp.charAt(i) = 0) | (tmp.charAt(i) = a) num += tmp.charAt(i);i+;if (i = tmp.length()break;ou
9、tput.println();wordcount.push(i);expressioncount.push(num);if (i + 1 tmp.length()/ 检查八进制数字if (tmp.charAt(i) = 0) i+;String num = ;while (tmp.charAt(i) = 0) num += tmp.charAt(i);i+;if (i = tmp.length()break;output.println();wordcount.push(i);expressioncount.push(num);/ 检查关键字和变量if (i tmp.length() if (
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 语法分析 程序 设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内