编译原理LL(1)文法分析器实验
本程序是基于已构建好的某一个语法的预测分析表来对用户的输入字符串进行分析,判断输入的字符串是否属于该文法的句子。
基本实现思想:接收用户输入的字符串(字符串以“#”表示结束)后,对用做分析栈的一维数组和存放分析表的二维数组进行初始化。然后取出分析栈的栈顶字符,判断是否为终结符,若为终结符则判断是否为“#”且与当前输入符号一样,若是则语法分析结束,输入的字符串为文法的一个句子,否则出错若不为“#”且与当前输入符号一样则将栈顶符号出栈,当前输入符号从输入字符串中除去,进入下一个字符的分析。若不为“#”且不与当前输入符号一样,则出错。
若栈顶符号为非终结符时,查看预测分析表,看栈顶符号和当前输入符号是否构成产生式,若产生式的右部为ε,则将栈顶符号出栈,取出栈顶符号进入下一个字符的分析。若不为ε,将产生式的右部逆序的入栈,取出栈顶符号进入下一步分析。
程序流程图:
本程序中使用以下文法作对用户输入的字符串进行分析:
E→TE’
E’→+TE’|ε
T→FT’
T’→*FT’|ε
F→i|(E)
该文法的预测分析表为:
1、显示预测分析表,提示用户输入字符串
2、输入的字符串为正确的句子:
3、输入的字符串中包含了不属于终结符集的字符
4、输入的字符串不是该文法能推导出来的句子
程序代码:
package ;
import java.io.*;
public class LL {
String Vn[] = { E, E, T, T, F }; // 非终结符集
String Vt[] = { i, +, *, (, ), # }; // 终结符集
String P[][] = new String[5][6]; // 预测分析表
String fenxi[] ; // 分析栈
int count = 1; // 步骤
int count1 = 1;//’分析栈指针
int count2 = 0, count3 = 0;//预测分析表指针
String inputString = ; // 输入的字符串
boolean flag;
public void setCount(int count, int count1, int count2, int count3){
this.count = count;
this.count1 = count1;
this.count2 = count2;
this.count3 = count3;
flag = false;
}
public void setFenxi() { // 初始化分析栈
fenxi = new String[20];
fenxi[0] = #;
fenxi[1] = E;
}
public void setP() { // 初始化预测分析表
for (int i = 0; i 5; i++) {
for (int j = 0; j 6; j++) {
P[i][j] = error;
}
}
P[0][0] = -TE;
P[0][3] = -TE;
P[1][1] = -+TE;
P[1][4] = -ε;
P[1][5] = -ε;
P[2][0] = -FT;
P[2][3] = -FT;
P[3][1] = -ε;
P[3][2] = -*FT;
P[3][4] = -ε;
P[3][5] = -ε;
P[4][0] = -i;
P[4][3] = -(E);
// 打印出预测分析表
System.out.println( 已构建好的预测分析表);
System.out.println(----------------------------------------------------------------------);
for (int i=0; i6; i++) {
System.out.print( +Vt[i]);
}
System.out.println();
System.out.println(----------------------------------------------------------------------);
for (int i=0; i5; i++) {
System.out.print( +Vn[i]+ );
for (int j=0; j6; j++) {
int l = 0;
if
您可能关注的文档
- 毕业论文论动漫角色造型设计在动画中的重要性.doc
- 毕业论文设计基于JPEG压缩编码的数据压缩算法的与实现.doc
- 毕业论文基于嵌入式控制器的机器人控制软件设计.docx
- 毕业设计——jsp的汽车租赁管理系统.doc
- 毕业设计基于Web的汽车租赁管理系统.doc
- 毕业设计基于单片机的数字化语音与存储系统.doc
- 毕业设计论文基于Android平台下家庭理财软件设计与开发.doc
- 毕业设计论文基于cs架构的JAVA网络聊天系统的设计与实现.doc
- 毕业设计论文基于ETM+数据的福州市地表温度反演.doc
- 毕业设计论文基于单片机的温度控制系统的软件设计.doc
- 2026年农林街道退管工作辅助人员招聘备考题库及参考答案详解1套.docx
- 2026年兰州市安宁区人民医院公开招聘编外医务工作人员2名备考题库及完整答案详解1套.docx
- 2026年关于屏山县兴纺建设发展有限公司及其下属子公司第六次公开招聘5名工作员的备考题库附答案详解.docx
- 2026年八里湖新区关于面向社会公开招聘交通劝导员及服务协调员的备考题库及1套参考答案详解.docx
- 2026年关于公开选聘田东县人大常委会计划和预决算审查咨询专家的备考题库及参考答案详解.docx
- 2026年共青团中央所属单位招聘66人备考题库及参考答案详解.docx
- 大理州地区奶牛生殖道乳酸菌的分离鉴定及益生特性评价.docx
- 和田部分地区和田黑鸡3种球虫分子检测与鉴定.docx
- Beclin1在牦牛子宫内膜炎中的应用及作用机制研究.docx
- 甘肃、宁夏部分地区奶牛乳房炎病原分离鉴定.docx
最近下载
- 雕塑维护方案养护.docx VIP
- 四川省成都市树德实验中学2024-2025学年七年级上学期期末考试道德与法治试题.docx VIP
- 对照不同光质补光对转色期葡萄品质和成分影响的初步探究.docx VIP
- 金属切削原理与刀具 配套课件.ppt
- T∕JNBDA 0009-2025 生殖医学高质量数据集建设规范.pdf VIP
- 上海高考:地理高频考点汇总.doc VIP
- 卫生部手术分级目录(2025年1月份修订).doc VIP
- DB11T 1087-2025公共建筑装饰装修工程质量验收标准.docx VIP
- 小学快乐体育教学活动的研究与实践课题研究报告.docx VIP
- 02S515 排水检查井图集建筑工程图集.docx VIP
原创力文档

文档评论(0)