



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 语法分析程序设计二姓名: 胡俊波 学号: 6100411222 专业班级: 航天111班 一、实验目的通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中算符优先分析方法,并加深对语法制导翻译原理的理解。二、实验内容设计一个文法的算符优先分析程序,判断特定表达式的正确性,并结合语法制导翻译原理,构造相应语义规则,将语法分析所识别的正确的表达式翻译计算出结果。三、实验要求1、给出文法如下: S-#E# E-T|E+T; T-F|T*F; F-i|(E);2、计算机中表示上述优先关系,优先关系的机内存放方式有两种1)直接存放,2)为优先关系建立优先函数,这里由学生自己选择一种方式;四、实验环境PC微机DOS操作系统或 Windows 操作系统Turbo C 程序集成环境或 Visual C+ 程序集成环境五、实验步骤1、分析文法中终结符号的优先关系;根据文法可以构造算符优先表如下:+*()i#+*( )i#2、利用算符优先分析的算法编写分析程序;本实验程序还是在实验二的程序框架上稍作修改,只是将表达式判断算法做了修改:程序流程图程序清单:/ 算符优先关系表private static char table=, , , , , , , , , , =, , , , , , , , , , , , , , , , , , = ;/ 判断表达式正确否private static boolean judge(String expr) char array = expr.toCharArray();int k = 0;/ 用一个数组链表做分析栈ArrayList stack = new ArrayList();/ 表达式以;结尾stack.add(;);/ 栈顶字符和输入串当前字符Character currentChar = ;Character charInStack = ;Character Q = ;int index = 0, j;while (!currentChar.equals(;) charInStack = stack.get(k);currentChar = arrayindex+;/ 把下一个输入符号读进来if (isVT(charInStack)j = k;elsej = k - 1;while (judgeRelation(stack.get(j), currentChar) = ) do Q = stack.get(j);if (isVT(stack.get(j - 1) j -= 1; else j -= 2; while (judgeRelation(stack.get(j), Q) != 0) char ch1 = stack.get(j + 1);char ch2 = stack.get(k);if (ch1 != ch2) if(ch1 = N| ch2=N|judgeRelation(ch1,ch2) != =)return false;/ 把stackj+1.stackk规约for (int i = stack.size() - 1; i = j + 1; i-) stack.remove(i);k = j + 1;stack.add(k, N);if (judgeRelation(stack.get(j), currentChar) = ) k = k + 1;stack.add(k, currentChar); else if (judgeRelation(stack.get(j), currentChar) = =) if (judgeRelation(stack.get(j), ;) = =) break;/ 接受 else k = k + 1;stack.add(k, currentChar); else / 错误return false;return true;3、测试程序Scanner scan = new Scanner(in);Scanner scan1 = new Scanner(in1);while (scan.hasNext() String expr = scan.nextLine();String line = scan1.nextLine();try out.write(line + + judge(expr).getBytes();out.write(n.getBytes(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();scan.close();六、测试数据 输入数据: 输出数据:七、实验总结本实验用另外一种方式(自下而上分析法)对表达式做语法分析,都能达到同样的结果,实验二中构造了预测分析表在适当时候拿文法产生式的右部替换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025现代版购销合同范本
- 2025员工劳动合同标准范本示例
- 2025室内墙面涂料合同范本
- 高中地理第三章同步教学设计:以畜牧业为主的农业地域类型
- 玉米病虫草害防治知到课后答案智慧树章节测试答案2025年春黑龙江农业工程职业学院
- 2024年重庆新华出版集团招聘真题
- 2024年四川巴中骨科医院招聘真题
- 2025某地购物中心租赁及咨询服务合同
- 商务中国风结构
- 2024年连云港市灌云县教育局所属学校招聘教师真题
- 中国帕金森病治疗指南
- 软件设计说明书概要+详细
- 未带有效居民身份证考生承诺书
- 国际市场营销(第三版)-教学课件
- 弱电机房验收标准
- 《数据的收集与整理》说课稿课件
- 脚手架或模板支架立杆底地基承载力计算
- 超导材料应用举例PPT课件
- 2020年超星尔雅重说中国近代史通识课期末考试答案
- 急性肺动脉栓塞诊断及介入治疗经验分享PPT课件
- 初中数学知识框架
评论
0/150
提交评论