资源简介
能够根据用户给定的任意文法,采用LL分析方法测试句式是否符合给定的语法规范。
改写文法为等价的LL(1)文法,消除左递归,消除左因子,求每个非终结符的First集合和Follow集合,构造预测分析表,输入测试句式,给出判定结果,并说明判定依据。
参见博客代码介绍,功能全面。

代码片段和文件信息
package ch02;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.linkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
public class Function {
public static List inputqueue=new ArrayList(); //存放输入文法的非终结符顺序
public static StringBuilder grammar = new StringBuilder(); //存放文法
public static List oldListItems = new ArrayList<>(); //存放文法的产生式
public static Set MarkSet=new HashSet(); //用来存放已经消除了左递归的式子的左侧
public static List newList = new ArrayList<>(); //存放消除左递归后的文法
public static List clearLeftList = new ArrayList<>(); //消除左因子后的文法
public static List oneFirstList = new ArrayList<>(); //存放每一个非终结符的FIRST集
public static List oneFollowList = new ArrayList<>(); //存放每一个非终结符的FOLLOW集
public static Stack analyzeStatck = new Stack();//符号栈
public static Set setLeftString = new linkedHashSet<>(); //用来记录一个式子是否存在左因子
public static Set marksetfollow=new HashSet();
public static String action1 = ““;
public static String action2 = ““;
//从指定文件中读取文法
public static String readGrammarFile(String path) throws IOException {
File file = new File(path);
@SuppressWarnings(“resource“)
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String readline;
while ((readline = bufferedReader.readLine()) != null) {
grammar.append(readline + “\n“);
inputqueue.add(readline.charAt(0)+““);
}
return grammar.toString();
}
//获得文法的产生式
public static List getGrammar(String scanner) {
List oldList = new ArrayList<>();
String[] grammarItems = scanner.split(“ |\n“);
for (int i = 0; i < grammarItems.length; i++) {
oldList.add(grammarItems[i]);
}
return oldList;
}
//获得每一条产生式
public static List getGrammarItems(String scanner) {
List oldList = new ArrayList<>();
String[] grammarItems = scanner.split(“ |\n“);
for (int i = 0; i < grammarItems.length; i++) {
oldList.add(grammarItems[i]);
int index = grammarItems[i].indexOf(“-“);//第一次出现
String str = grammarItems[i].substring(0 index);
String[] items = grammarItems[i].split(“>|\\|“);
// 添加每一条产生式
for (int k = 1; k < items.length; k++)
oldListItems.add(str + “-->“ + items[k]);
}
return oldListItems;
}
//判断非终结符集合中是否包含了某一个非终结符
public static boolean isContain(List vn String str) {
for (int i = 0; i < vn.size(); i++) {
if (vn.get(i).equals(str)) {
return true;
}
}
return false;
}
//获得所有非终结符(文件读入的文法为String)
public static List getVN(String grammarItems) {
List vn = new ArrayList<>();
String[] string = grammarItems.split(“\n“);
for (int i = 0; i < string.
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-05-30 22:25 ch02\
文件 301 2019-05-10 22:17 ch02\.classpath
文件 380 2019-05-10 22:17 ch02\.project
目录 0 2019-05-30 20:31 ch02\.settings\
文件 598 2019-05-10 22:17 ch02\.settings\org.eclipse.jdt.core.prefs
文件 71 2019-05-12 22:18 ch02\111.txt
文件 30 2019-05-13 15:52 ch02\222.txt
文件 41 2019-05-13 20:07 ch02\333.txt
文件 30 2019-05-13 20:09 ch02\444.txt
文件 22 2019-05-28 17:26 ch02\555.txt
目录 0 2019-05-30 20:47 ch02\bin\
目录 0 2019-05-30 20:47 ch02\bin\ch02\
文件 38 2019-05-11 22:06 ch02\bin\ch02\data.txt
文件 17302 2019-05-13 11:55 ch02\bin\ch02\data1.txt
文件 24272 2019-05-30 22:16 ch02\bin\ch02\Function.class
文件 5701 2019-05-30 22:19 ch02\bin\ch02\MainTest.class
目录 0 2019-05-30 20:31 ch02\src\
目录 0 2019-05-30 22:25 ch02\src\ch02\
文件 27783 2019-05-30 22:16 ch02\src\ch02\Function.java
文件 4698 2019-05-30 22:19 ch02\src\ch02\MainTest.java
- 上一篇:电力系统课程设计
- 下一篇:工资管理系统数据库系统设计
相关资源
- Modbus协议官方文档中、英文全
- S7-300全套模块接线图
- Visio大全模具(含Cisco、IBM等常用拓扑
- 软考数据库系统工程师复习资料(完
- UML建模大全
- 2018全国大学生计算机博弈大赛 棋谱
- Visio图标-最新最全的网络通信图标库
- 由浅入深,蓝牙4.0/BLE协议栈开发攻略
- 位移传感器应用全面解析
- Python全栈学习笔记面向对象大作业:
- 全国4级地址库,京东数据
- 数学建模实验报告(八个全)
- [免费]安全加密软件U盘加密,文件加
- silicon lab公司的收音IC SI47XX全套开发工
- HOOK小工具(进程、窗口、全局)
- 挑战杯全国大学生课外学术科技作品
- 4 1视图建模教程实例大全
- OpenGL文档,api大全,可直接查询函数
- proteus_24C08—有注释(proteus里面使用的
- 教务管理系统需求分析(全集)
- 2003-2013全国电赛历年真题
- 莱卡 全站仪数据格式转换程序,有源
- 2007年全国大学生电子设计竞赛一等奖
- 360安全卫士系统诊断工具CheckTool
- 电子商务安全导论课件ppt(1-12章)
- 通信类大公司华为中兴公司面试题目
- U盘量产工具 全世界最简单教程
- 8251 全双工异步通信
- cisco的ISO全套 总共3.85G 绝对精品
- 网络信息安全技术 论文
评论
共有 条评论