⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档 (2).txt

📁 已知课本(华中科技大学版
💻 TXT
字号:
import javax.swing.JOptionPane;
public class Ll1wenfafenxi {
 public static void main(String[] args) {
  long startTime = System.currentTimeMillis();
  Fenxi zifuch = new Fenxi();
  zifuch.Fenxigouzao();
  long endtime = System.currentTimeMillis();
  String out = "%%%%程序总用时间为:" + (endtime - startTime) + "毫秒%%%";
  JOptionPane.showMessageDialog(null, out, "张永发--LL1文法实验",
    JOptionPane.INFORMATION_MESSAGE);
 }
}
class Fenxi {
 String[][] M = { { "0", "0", "0", "A", "A", "0" },
   { "0", "0", "0", "BW", "BW", "0" },
   { "iBW", "0", "ε", "0", "0", "ε" },
   { "0", "0", "0", "CX", "CX", "0" },
   { "ε", "+CX", "ε", "0", "0", "ε" },
   { "0", "0", "0", "(", ")A*", "0" } };/*W,X分别代表A'和B'*/
 String s1 = JOptionPane.showInputDialog(null, "输入待检查的字符串,以#结束", "张永发--LL1文法实验 ",
   JOptionPane.QUESTION_MESSAGE);
 char str[] = s1.toCharArray();
 String Vt = new String("i+*)(#");
 String Str2 = "#S";
 StringBuffer S = new StringBuffer(Str2);
 int j = 0;
 public void Fenxigouzao() {
  char ch = str[j];
  if (Vt.indexOf((int) S.charAt(S.length() - 1)) >= 0) {
   if (S.charAt(S.length() - 1) == ch) {
    if (S.charAt(S.length() - 1) == '#') {
     JOptionPane.showMessageDialog(null, "恭喜!!!结果是匹配的", "张永发--LL1文法实验",
       JOptionPane.INFORMATION_MESSAGE);
     return;
    }
    else {
     S = S.deleteCharAt(S.length() - 1);
     j++;
     Fenxigouzao();
    }
   } else
    JOptionPane.showMessageDialog(null, "SORRY!!这个字符串不匹配", "张永发--LL1文法实验",
      JOptionPane.INFORMATION_MESSAGE);
  } else {//下面这一段可以使用SWITCH
   int m = 0, n = 0;
   if (S.charAt(S.length() - 1) == 'S')
    m = 0;
   else if (S.charAt(S.length() - 1) == 'A')
    m = 1;
   else if (S.charAt(S.length() - 1) == 'W')
    m = 2;
   else if (S.charAt(S.length() - 1) == 'B')
    m = 3;
   else if (S.charAt(S.length() - 1) == 'X')
    m = 4;
   else
    m = 5;
   if (ch == 'i')
    n = 0;
   else if (ch == '+')
    n = 1;
   else if (ch == '*')
    n = 2;
   else if (ch == '(')
    n = 3;
   else if (ch == ')')
    n = 4;
   else
    n = 5;
   if (M[m][n] != "0") {
    S = S.deleteCharAt(S.length() - 1);
    if (M[m][n] != "ε") {
     for (int k = M[m][n].length() - 1; k >= 0; k--) {
      S = S.append(M[m][n].charAt(k));/*用M[m][n]=XXXX替换栈顶*/
     }
    }
    Fenxigouzao();
   } else
    JOptionPane.showMessageDialog(null, "SORRY!!这个字符串不匹配", "张永发--LL1文法实验",
      JOptionPane.INFORMATION_MESSAGE);
  }
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -