• 大小: 23KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-07-01
  • 语言: Java
  • 标签: LL(1)  

资源简介

通过Java完成LL(1)语法分析器。 (1)通过文件扫描,识别出终结符与非终结符; (2)求解first集与follow集; (3)根据first集与follow集构建预测分析表; (4)写总控程序; (5)进行字符串匹配。

资源截图

代码片段和文件信息

/*
 * 建立预分析表
 */
public class BuildTable {
      public  void buildForeTable() {
        staticData.predictionAnalisis=new String[staticData.nfinalSign.length()][staticData.finalSign.length()];
     //构建分析表
     for (int i = 0; i < staticData.predictionAnalisis.length; i++) {
     for (int j = 0; j < staticData.predictionAnalisis[i].length; j++) {
String temp=““+staticData.finalSign.charAt(j);
if(staticData.firstSet[i].contains(temp)){//若相等则将对应的产生式添加到表中
//字符集的位置
 int index=staticData.firstSet[i].indexOf(temp);
 staticData.predictionAnalisis[i][j]=staticData.firstProductType[i][index];
}else if(staticData.firstSet[i].contains(““+“@“)&&staticData.followSet[i].contains(temp)){
staticData.predictionAnalisis[i][j]=“@“;
}else {
staticData.predictionAnalisis[i][j]=“n“;
}
}
}
     /*
      * 将构建的预测分析表输出
      */
     System.out.print(“★  “);
     for (int i = 0; i < staticData.finalSign.length(); i++) {
System.out.printf(“%c\t“staticData.finalSign.charAt(i));
}
     System.out.println();
     int i=0;
     for (String[] strings : staticData.predictionAnalisis) {
     System.out.print(staticData.nfinalSign.charAt(i++)+“ “);
for (String string : strings) {
System.out.printf(“%s\t“string+“ “);
}
System.out.println();
}
     System.out.println(“非终结符:“+staticData.nfinalSign);
     System.out.println(“终结符:“+staticData.finalSign);
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         301  2018-06-02 21:55  LL(1)\.classpath
     文件         381  2018-06-02 21:55  LL(1)\.project
     目录           0  2018-06-02 22:01  LL(1)\.settings\
     文件          88  2018-06-02 22:02  LL(1)\.settings\org.eclipse.core.resources.prefs
     文件         598  2018-06-02 21:55  LL(1)\.settings\org.eclipse.jdt.core.prefs
     目录           0  2018-09-18 20:06  LL(1)\bin\
     文件        2163  2018-09-18 20:06  LL(1)\bin\BuildTable.class
     文件        3404  2018-09-18 20:06  LL(1)\bin\FirstSet.class
     文件        3018  2018-09-18 20:06  LL(1)\bin\FollowSet.class
     目录           0  2018-09-18 20:06  LL(1)\bin\grammerRules\
     文件          25  2018-05-22 13:18  LL(1)\bin\grammerRules\grammerRules1
     文件          23  2018-05-22 13:15  LL(1)\bin\grammerRules\grammerRules2
     文件          28  2018-05-22 13:16  LL(1)\bin\grammerRules\grammerRules3
     文件          28  2018-05-22 13:17  LL(1)\bin\grammerRules\grammerRules4
     文件          42  2018-06-01 18:11  LL(1)\bin\grammerRules\grammerRules5
     文件        2107  2018-09-18 20:07  LL(1)\bin\Main.class
     文件         581  2018-09-18 20:06  LL(1)\bin\staticData.class
     文件        5036  2018-09-18 20:06  LL(1)\bin\TakeSign.class
     文件        2367  2018-09-18 20:06  LL(1)\bin\TotalControl.class
     目录           0  2018-06-03 11:10  LL(1)\src\
     文件        1567  2018-06-03 16:04  LL(1)\src\BuildTable.java
     文件        4169  2018-06-03 12:33  LL(1)\src\FirstSet.java
     文件        4640  2018-06-03 11:08  LL(1)\src\FollowSet.java
     目录           0  2018-06-03 23:51  LL(1)\src\grammerRules\
     文件          25  2018-05-22 13:18  LL(1)\src\grammerRules\grammerRules1
     文件          23  2018-05-22 13:15  LL(1)\src\grammerRules\grammerRules2
     文件          28  2018-05-22 13:16  LL(1)\src\grammerRules\grammerRules3
     文件          28  2018-05-22 13:17  LL(1)\src\grammerRules\grammerRules4
     文件          42  2018-06-01 18:11  LL(1)\src\grammerRules\grammerRules5
     文件        1730  2018-09-18 20:07  LL(1)\src\Main.java
     文件         482  2018-06-03 09:12  LL(1)\src\staticData.java
............此处省略2个文件信息

评论

共有 条评论