• 大小: 51KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-12
  • 语言: Java
  • 标签: java  LL1  

资源简介

编译原理课程设计,开发的一款基于java的语法分析器,用到LL1文法

资源截图

代码片段和文件信息

package hjzgg.analysistable;

import hjzgg.first.First;
import hjzgg.follow.Follow;
import hjzgg.tablenode.TableNode;
import hjzgg.treenode.TreeNode;

import java.util.ArrayList;
import java.util.linkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;

public class AnalysisTable {
private final int noFinalCharacterCount = 100;
private MapstringToInt = new TreeMap();//分析表行 列 字母映射到数字
private MaptableRow = new TreeMap();//分析表 行列 数字 映射到字母
private MaptableCol = new TreeMap();
private String[][] table = new String[noFinalCharacterCount][];//分析表
private SetterminalCharacters = new TreeSet();//终结符集合
private Map> first = null;
private Map> follow = null;
private Map mp = null;
private int nodeCntRow = 0 nodeCntCol=0;

public static final int treeNodeCnt = 200;//树最多节点的个数
private int cntTreeNode = 0;
private ArrayList usedProduction = null;//预测分析中所用到的产生式
private int fatherNode;//treeGraphic搜素是的开始节点
private TreeNode[] treeGraphic = new TreeNode[treeNodeCnt];
private String[] usedProductionString = null;
private String[] inputString = null;
private String[] analysisStack = null;
private String[] synchString = null;

public String[] getSynchString(){
return synchString;
}
public String[] getAnalysisStack(){
return analysisStack;
}
public String[] getInputString(){
return inputString;
}
public String[] getUsedProductionString(){
return usedProductionString;
}

public Map getStringToInt(){
return stringToInt;
}
public Set getTerminalCharacters(){
return terminalCharacters;
}

public int getFatherNode(){
return fatherNode;
}

public TreeNode[] getTreeGraphic(){
return treeGraphic;
}

public AnalysisTable(Map> first
Map> follow Map mp) {
super();
this.first = first;
this.follow = follow;
this.mp = mp;
init();
}

private void init(){
for(String leftNode : mp.keySet()){
stringToInt.put(leftNode ++nodeCntRow);
tableRow.put(nodeCntRow leftNode);
String[] rightNodes = mp.get(leftNode);
for(int i=0; i for(int j=0; j if(!mp.containsKey(““+rightNodes[i].charAt(j)) && rightNodes[i].charAt(j)!=‘\‘‘ && rightNodes[i].charAt(j)!=‘$‘){//每一个终结符
if(!stringToInt.containsKey(““+rightNodes[i].charAt(j))){
stringToInt.put(““+rightNodes[i].charAt(j) ++nodeCntCol);
terminalCharacters.add(rightNodes[i].charAt(j));
tableCol.put(nodeCntCol ““+rightNodes[i].charAt(j));
}
}
}
}
stringToInt.put(“#“ ++nodeCntCol);
tableCol.put(node

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\analysistable\
     文件       12316  2015-04-28 23:07  加入同步符号后的语法分析器\hjzgg\analysistable\AnalysisTable.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\analysistableframe\
     文件       12657  2015-04-28 22:36  加入同步符号后的语法分析器\hjzgg\analysistableframe\AnalysisTableframe.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\filter\
     文件         836  2015-04-24 15:31  加入同步符号后的语法分析器\hjzgg\filter\MyFilter.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\first\
     文件        2504  2015-04-24 12:52  加入同步符号后的语法分析器\hjzgg\first\First.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\follow\
     文件        4996  2015-04-26 18:44  加入同步符号后的语法分析器\hjzgg\follow\Follow.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\grammatical\
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\grammatical\analysis\
     文件        3101  2015-04-17 15:02  加入同步符号后的语法分析器\hjzgg\grammatical\analysis\MainGrammaticalAnalysis.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\tablenode\
     文件         225  2015-04-24 13:03  加入同步符号后的语法分析器\hjzgg\tablenode\TableNode.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\treegraphic\
     文件        5805  2015-04-24 12:47  加入同步符号后的语法分析器\hjzgg\treegraphic\TreeGraphic.java
     目录           0  2015-04-28 23:11  加入同步符号后的语法分析器\hjzgg\treenode\
     文件         593  2015-04-28 21:51  加入同步符号后的语法分析器\hjzgg\treenode\TreeNode.java
     文件          40  2015-04-26 12:06  加入同步符号后的语法分析器\文本4.4.txt
     文件          66  2015-04-24 19:13  加入同步符号后的语法分析器\文法.txt
     文件          32  2015-04-26 10:31  加入同步符号后的语法分析器\文法4.1.txt
     文件          68  2015-04-26 10:23  加入同步符号后的语法分析器\文法4.2.txt
     文件          24  2015-04-26 11:00  加入同步符号后的语法分析器\文法4.3.1.txt
     文件          25  2015-04-26 11:03  加入同步符号后的语法分析器\文法4.3.2.txt
     文件          11  2015-04-26 12:14  加入同步符号后的语法分析器\文法4.4-语法.txt
     文件       35132  2015-04-28 23:08  加入同步符号后的语法分析器\简单语法分析器.jar
     文件          11  2015-04-25 22:42  加入同步符号后的语法分析器\语法.txt
     文件           7  2015-04-28 22:38  加入同步符号后的语法分析器\错误语法1.txt
............此处省略1个文件信息

评论

共有 条评论