欢迎来到天天文库
浏览记录
ID:8957409
大小:39.50 KB
页数:5页
时间:2018-04-13
《编译原理语法分析实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译原理》课程实验报告课程实验题目:语法分析实验学生所在系部:计算机科学与技术学生所在专业:计算机科学与技术学生所在班级:软件二班学生学号:2009145617_学生姓名:邱玉梅【实验目的】1.掌握EBNF及其在递归下降分析子程序构造中的作用。2.掌握递归下降分析程序的构造方法。【实验内容】文法:E→E+T
2、T,T→T*F
3、F,F→(E)
4、i根据该文法编写递归下降分析程序:1.输入:任意符号串。2.处理:递归调用分析输入串是否合法。3.输出:串是否合法。【实验要求】1. 根据上述文法的产生式规则用EBNF化简之并绘制相应的语法图。2. 任选C/C++/Java中的一种作为编程语言实现递归下降
5、分析。 一、用EBNF化简文法化简结果如下:E→T{+T} F→F{*F} F→i
6、(E)二:程序源代码如下:packagebianyi;/***@(#)diguixiajiang.java**diguixiajiangapplication**@author*@version1.002011/12/26*/importjava.util.Scanner;importjava.util.ArrayList;importjava.util.List;publicclassdiguixiaji
7、ang{staticStrings;staticintip=0;//Scannersca=newScanner(System.in);//s=sca.next();//char[]input=newchar[s.length()];//input=s.toCharArray();staticcharinput[];publicstaticvoidmain(String[]args){//TODO,addyourapplicationcode//System.out.println("HelloWorld!");//charinput[10];//charsym;while(true){Syst
8、em.out.println("请输入算符表达式(以#号结束)");Scannersca=newScanner(System.in);s=sca.next();input=newchar[s.length()];input=s.toCharArray();//charinput[]=s.toCharArray();E();if((input[ip]=='#'))System.out.println("句子结构正确");elseSystem.out.println("无结束标志,分析失败");}}publicstaticvoidE(){T();//char[]input;while(input[
9、ip]=='+'){ip++;//sym=input[ip];//advanceT();}}publicstaticvoidT(){F();//char[]input;while(input[ip]=='*'){ip++;//sym=input[ip];//advanceF();}}publicstaticvoidF(){//char[]input;if(input[ip]=='i'){ip++;//sym=input[ip];//advance}else{if(input[ip]=='('){ip++;//sym=input[ip];//advanceE();if(input[ip]==')
10、'){ip++;//sym=input[ip];//advance}else{System.out.println("分析结果:ERROR不符合文法");System.exit(0);}}else{System.out.println("分析结果:ERROR不符合文法");System.exit(0);}}}}三:实验结果如下:
此文档下载收益归作者所有