亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 復件 parser.java

?? 形式文法分析JAVA工具包本JAVA Applets程序提供對LL(1),LL(2)和LR(1)文法分析處理,用戶可以輸入任何滿足條件的形式文法,通幫過系統
?? JAVA
字號:
/*   
   This module contains the recursive descent  
   parser that does not use variables.  
*/  
   
// Exception class for parser errors.  
class ParserException extends Exception {  
  String errStr; // describes the error 
 
  public ParserException(String str) { 
    errStr = str; 
  }   
  
  public String toString() {  
    return errStr; 
  }  
}  
  
class Parser {  
  // These are the token types. 
  final int NONE = 0; 
  final int DELIMITER = 1; 
  final int VARIABLE = 2; 
  final int NUMBER = 3; 
 
  // These are the types of syntax errors. 
  final int SYNTAX = 0; 
  final int UNBALPARENS = 1; 
  final int NOEXP = 2; 
  final int DIVBYZERO = 3; 
 
  // This token indicates end-of-expression. 
  final String EOE = "\0"; 
 
  private String exp;   // refers to expression string  
  private int expIdx;   // current index into the expression  
  private String token; // holds current token  
  private int tokType;  // holds token's type  
  
  // Parser entry point.  
  public double evaluate(String expstr) throws ParserException 
  {  
    double result;  
    exp = expstr;  
    expIdx = 0;   
   
    getToken();  
    if(token.equals(EOE))  
      handleErr(NOEXP); // no expression present  
 
    // Parse and evaluate the expression. 
    result = evalExp2();  
  
    if(!token.equals(EOE)) // last token must be EOE  
      handleErr(SYNTAX);  
  
    return result;  
  }  
    
  // Add or subtract two terms.  
  private double evalExp2() throws ParserException 
  {  
    char op;  
    double result; 
    double partialResult;  
 
    result = evalExp3();  
 
    while((op = token.charAt(0)) == '+' || op == '-') {  
      getToken();  
      partialResult = evalExp3();  
      switch(op) {  
        case '-':  
          result = result - partialResult;  
          break;  
        case '+':  
          result = result + partialResult;  
          break;  
      }  
    }  
    return result; 
  }  
    
  // Multiply or divide two factors.  
  private double evalExp3() throws ParserException 
  {  
    char op;  
    double result; 
    double partialResult;  
    
    result = evalExp4();  
 
    while((op = token.charAt(0)) == '*' ||  
           op == '/' || op == '%') {  
      getToken();  
      partialResult = evalExp4();  
      switch(op) {  
        case '*':  
          result = result * partialResult;  
          break;  
        case '/':  
          if(partialResult == 0.0)  
            handleErr(DIVBYZERO);  
          result = result / partialResult;  
          break;  
        case '%':  
          if(partialResult == 0.0)  
            handleErr(DIVBYZERO);  
          result = result % partialResult;  
          break;  
      }  
    }  
    return result; 
  }  
    
  // Process an exponent.  
  private double evalExp4() throws ParserException 
  {  
    double result; 
    double partialResult; 
    double ex;  
    int t;  
    
    result = evalExp5();  
 
    if(token.equals("^")) {  
      getToken();  
      partialResult = evalExp4();  
      ex = result;  
      if(partialResult == 0.0) {  
        result = 1.0;  
      } else  
        for(t=(int)partialResult-1; t > 0; t--)  
          result = result * ex;  
    }  
    return result; 
  }  
    
  // Evaluate a unary + or -.  
  private double evalExp5() throws ParserException 
  {  
    double result; 
    String  op;  
 
    op = "";  
    if((tokType == DELIMITER) &&  
        token.equals("+") || token.equals("-")) {  
      op = token;  
      getToken();  
 
    }  
    result = evalExp6();  
 
    if(op.equals("-")) result = -result; 
 
    return result;  
  }  
    
  // Process a parenthesized expression.  
  private double evalExp6() throws ParserException 
  {  
    double result; 
 
    if(token.equals("(")) {  
      getToken();  
      result = evalExp2();  
      if(!token.equals(")"))  
        handleErr(UNBALPARENS);  
      getToken();  
    }  
    else result = atom();  
 
    return result; 
  }  
    
  // Get the value of a number.  
  private double atom() throws ParserException  
  {  
    double result = 0.0; 
 
    switch(tokType) {  
      case NUMBER:  
        try {  
          result = Double.parseDouble(token);  
        } catch (NumberFormatException exc) {  
          handleErr(SYNTAX);  
        }  
        getToken();  
        break; 
      default:  
        handleErr(SYNTAX);  
        break;  
    }  
    return result; 
  }  
    
  // Handle an error.  
  private void handleErr(int error) throws ParserException 
  {  
    String[] err = {  
      "Syntax Error",  
      "Unbalanced Parentheses",  
      "No Expression Present",  
      "Division by Zero"  
    };  
  
    throw new ParserException(err[error]);  
  }  
    
  // Obtain the next token.  
  private void getToken()  
  {  
    tokType = NONE;  
    token = "";  
     
    // Check for end of expression.  
    if(expIdx == exp.length()) { 
      token = EOE; 
      return; 
    } 
    
    // Skip over white space. 
    while(expIdx < exp.length() &&  
      Character.isWhitespace(exp.charAt(expIdx))) ++expIdx;  
  
    // Trailing whitespace ends expression. 
    if(expIdx == exp.length()) { 
      token = EOE; 
      return; 
    } 
  
    if(isDelim(exp.charAt(expIdx))) { // is operator  
      token += exp.charAt(expIdx);  
      expIdx++;  
      tokType = DELIMITER;  
    }  
    else if(Character.isLetter(exp.charAt(expIdx))) { // is variable  
      while(!isDelim(exp.charAt(expIdx))) {  
        token += exp.charAt(expIdx);  
        expIdx++;  
        if(expIdx >= exp.length()) break;  
      }  
      tokType = VARIABLE;  
    }  
    else if(Character.isDigit(exp.charAt(expIdx))) { // is number  
      while(!isDelim(exp.charAt(expIdx))) {  
        token += exp.charAt(expIdx);  
        expIdx++;  
        if(expIdx >= exp.length()) break;  
      }  
      tokType = NUMBER;  
    }  
    else { // unknown character terminates expression 
      token = EOE; 
      return; 
    } 
  }  
    
  // Return true if c is a delimiter.  
  private boolean isDelim(char c)  
  {  
    if((" +-/*%^=()".indexOf(c) != -1))  
      return true;  
    return false;  
  }  
    
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品理论在线观看| 中文字幕国产一区| 欧美精品三级在线观看| 欧美系列在线观看| 色天天综合色天天久久| 一本到不卡精品视频在线观看| 成人av网站大全| 99re热这里只有精品免费视频 | 欧美午夜影院一区| 欧美视频完全免费看| 欧美日韩dvd在线观看| 欧美一区二区三区视频在线| 日韩视频在线一区二区| 亚洲精品在线免费播放| 欧美国产97人人爽人人喊| 亚洲人午夜精品天堂一二香蕉| 亚洲色图另类专区| 三级在线观看一区二区| 国产在线播放一区| 99精品偷自拍| 91精品国产综合久久久久久 | 欧美日韩国产高清一区| 日韩欧美一区二区在线视频| 国产视频一区在线观看| 亚洲免费高清视频在线| 免费三级欧美电影| 成人黄色av电影| 欧美日韩国产另类不卡| 久久视频一区二区| 亚洲在线视频免费观看| 国产精品综合在线视频| 在线视频综合导航| 久久综合资源网| 亚洲国产综合视频在线观看| 国产高清无密码一区二区三区| 欧美亚洲禁片免费| 国产欧美日韩不卡免费| 婷婷丁香激情综合| 不卡电影免费在线播放一区| 日韩久久久精品| 亚洲一区在线观看网站| 国产成人精品亚洲日本在线桃色| 欧美日韩电影一区| 国产精品私人影院| 久久狠狠亚洲综合| 欧美亚洲动漫另类| 欧美国产精品一区| 狠狠色2019综合网| 欧美一区二区三区四区五区| 亚洲欧美另类图片小说| 国产二区国产一区在线观看| 91精品国模一区二区三区| 亚洲欧美日韩一区| 国产成人av一区二区三区在线| 欧美视频一区二区在线观看| 国产精品福利av| 国产一区二区成人久久免费影院| 91精品国产综合久久精品app| 亚洲欧美日韩久久| 成年人国产精品| 欧美国产综合色视频| 久久精品国产精品亚洲红杏| 在线观看不卡一区| 亚洲欧美日本在线| 91蜜桃视频在线| 国产精品国产三级国产aⅴ入口| 国产成人亚洲综合a∨婷婷图片| 欧美videossexotv100| 日本欧美加勒比视频| 7777女厕盗摄久久久| 亚洲高清不卡在线| 3d动漫精品啪啪| 天堂成人国产精品一区| 欧美日韩一区二区三区四区五区 | 色吊一区二区三区| 亚洲黄色av一区| 欧美亚洲日本国产| 图片区小说区区亚洲影院| 欧美精品色综合| 男人操女人的视频在线观看欧美| 91精品福利在线一区二区三区 | 激情丁香综合五月| 久久久久久久久久久久久女国产乱 | 亚洲女同一区二区| 欧美无砖砖区免费| 日韩精品一二三四| 2023国产精品| 91日韩一区二区三区| 亚洲一区二区三区影院| 欧美一区二区在线免费观看| 狠狠网亚洲精品| 自拍偷拍国产亚洲| 在线不卡一区二区| 激情文学综合插| 日韩毛片视频在线看| 欧美日韩免费在线视频| 蜜臀精品一区二区三区在线观看 | 欧美最猛性xxxxx直播| 日韩av成人高清| 国产色产综合色产在线视频| 91国内精品野花午夜精品| 热久久免费视频| 中文无字幕一区二区三区| 色欧美片视频在线观看在线视频| 天堂av在线一区| 欧美国产精品中文字幕| 欧美日韩一区二区电影| 国产一区二区免费看| 一区二区久久久| 国产精品情趣视频| 欧美无乱码久久久免费午夜一区 | 99精品在线免费| 日本成人在线电影网| 久久久蜜桃精品| 在线影视一区二区三区| 国产高清精品在线| 日韩精品一二三四| 一区二区三区资源| 国产日本一区二区| 9191国产精品| 色综合久久九月婷婷色综合| 国内成人免费视频| 水蜜桃久久夜色精品一区的特点| 国产精品麻豆久久久| 精品裸体舞一区二区三区| 欧美色偷偷大香| 97se狠狠狠综合亚洲狠狠| 国产资源在线一区| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲已满18点击进入久久| 国产精品天美传媒沈樵| 精品国产一区二区三区不卡| 欧美日韩mp4| 欧美最猛黑人xxxxx猛交| jiyouzz国产精品久久| 国产丶欧美丶日本不卡视频| 黄色日韩三级电影| 老鸭窝一区二区久久精品| 亚洲一二三四在线观看| 亚洲三级理论片| 综合色天天鬼久久鬼色| 中文字幕视频一区| 国产欧美精品一区二区色综合 | 国产精品99久| 国产一区二区三区四区五区美女 | 日本一区二区三区四区| 2023国产精品自拍| 久久蜜桃一区二区| 26uuu欧美| 国产日产亚洲精品系列| 国产亚洲综合在线| 国产精品久久毛片| 国产精品毛片无遮挡高清| 国产精品嫩草影院com| 国产精品美女一区二区三区| 国产精品久久久久久久久免费樱桃| 国产三级欧美三级日产三级99| 国产欧美日韩在线视频| 欧美激情综合五月色丁香小说| 亚洲国产精品高清| 亚洲欧美另类小说| 午夜视频在线观看一区二区三区| 一区二区三区免费在线观看| 亚洲午夜在线电影| 喷水一区二区三区| 国产精品1区2区3区| 国产传媒久久文化传媒| 色综合久久久久网| 欧美日本在线一区| 精品国产麻豆免费人成网站| 国产欧美日韩精品一区| 亚洲视频在线一区| 日日夜夜精品免费视频| 国产伦精品一区二区三区免费| 国产91在线观看丝袜| 欧美色图第一页| 久久久九九九九| 一区二区三区日本| 九九精品视频在线看| 欧美性感一区二区三区| 日韩亚洲电影在线| 国产精品女主播在线观看| 午夜精品久久久久久| 国产凹凸在线观看一区二区| 欧美又粗又大又爽| 久久伊99综合婷婷久久伊| 一区二区三区欧美日| 国产一区二区三区综合| 欧美色大人视频| 国产三级欧美三级| 日韩精品1区2区3区| 成人一区二区三区中文字幕| 91精品蜜臀在线一区尤物| 国产精品国产三级国产aⅴ中文 | 久久久久久久一区| 夜夜嗨av一区二区三区| 国产精品66部| 日韩视频一区二区| 亚洲一级二级三级| 99re这里只有精品视频首页|