当前位置:文档之家› 编译原理语法分析器实验报告

编译原理语法分析器实验报告

编译原理语法分析器实验报告
班级:
学号:
姓名:
实验名称语法分析器
一、实验目的
1、根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。

2、本次实验的目的主要是加深对自上而下分析法的理解。

二、实验内容
[问题描述]
递归下降分析法:
0.定义部分:定义常量、变量、数据结构。

1.初始化:从文件将输入符号串输入到字符缓冲区中。

2.利用递归下降分析法分析,对每个非终结符编写函数,在主函数中调用文法开始符号的函数。

LL(1)分析法:
模块结构:
1、定义部分:定义常量、变量、数据结构。

2、初始化:设立LL(1)分析表、初始化变量空间(包括堆栈、结构体等);
3、运行程序:让程序分析一个text文件,判断输入的字符串是否符合文法定义的规则;
4、利用LL(1)分析算法进行表达式处理:根据LL(1)分析表对表达式
符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示简
单的错误提示。

[基本要求]
1. 对数据输入读取
2. 格式化输出分析结果
2.简单的程序实现词法分析
public static void main(String args[]) {
LL l = new LL();
l.setP();
String input = "";
boolean flag = true;
while (flag) {
try {
InputStreamReader isr = new
InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.println();
System.out.print("请输入字符串(输入exit退出):");
input = br.readLine();
} catch (Exception e) {
e.printStackTrace();
}
if(input.equals("exit")){
flag = false;
}else{
l.setInputString(input);
l.setCount(1, 1, 0, 0);
l.setFenxi();
System.out.println();
System.out.println("分析过程");
System.out.println("----------------------------------------------------------------------");
System.out.println(" 步骤| 分析栈
| 剩余输入串| 所用产生式");
System.out.println("----------------------------------------------------------------------");
boolean b = l.judge();
System.out.println("----------------------------------------------------------------------");
if(b){
System.out.println("您输入的字符串"+input+"是该文法的一个句子");
}else{
System.out.println("您输入的字符串"+input+"有词法错误!");
}
}
}
}
//实现各函数并且加注释三、编程并上机调试运行运行结果如下图:
四、实验小结
通过这次实验,我对语法分析有了更深刻的了解,对它的形成有了更清楚得认识。

本次实验我主要是基于试验资料上的程序流程图和程序框架完成的。

由一个简单一些的产生式得出程序的各个分函数。

同时,感谢老师的细心与耐心指导。

相关主题