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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? slprecint.java

?? compiler constructor using the recursive deceiding way
?? JAVA
字號:
/************************************************************
 * This is a recursive descent interpreter for the SLP      *
 * language. This parser uses the SLP lexical analyser      *
 * produced by JavaCC. Before implementing the parser,      *
 * the grammar of the language was converted into the       *
 * following form to allow predictive parsing:              *
 *                                                          *
 * Stm -> id := Exp Stm'                                    *
 *      | print ( ExpList ) Stm'                            *
 * Stm' -> ; Stm                                            *
 *       | (empty string)                                   *
 * Exp -> id Exp'                                           *
 *      | num Exp'                                          *
 *      | ( Stm , Exp ) Exp'                                *
 * Exp' -> Binop Exp                                        *
 *       | (empty string)                                   *
 * ExpList -> Exp ExpList'                                  *
 * ExpList' -> , ExpList                                    *
 *           | (empty string)                               *
 * Binop -> +                                               *
 *        | -                                               *
 *        | *                                               *
 *        | /                                               *
 *                                                          *
 ************************************************************/

public class SLPRecInt implements SLPTokeniserConstants {

  public static Token t;

  public static Table Stm(Table tab) {
    String id;
    IntAndTable it;
    IntListAndTable ilt;

    if (t.kind == ID) {
      id = t.image;
      t = SLPTokeniser.getNextToken();
      if (t.kind == ASSIGN) {
        t = SLPTokeniser.getNextToken();
        it = Exp(tab);
        if (tab == null)
          tab = new Table(id,it.i,tab);
        else
          tab = tab.update(tab,id,it.i);
        
      }
      else
        error(":=");
    }
    else if (t.kind == PRINT) {
           t = SLPTokeniser.getNextToken();
           if (t.kind == LBR) {
             t = SLPTokeniser.getNextToken();
             ilt = ExpList(tab);
             if (t.kind == RBR) {
               t = SLPTokeniser.getNextToken();
               ilt.il.print();
               tab = ilt.t;
             }
             else 
               error(")");
           }
           else
             error("(");
         }
         else
           error("identifier or print");
    return Stm_Prime(tab);
  }

  public static Table Stm_Prime(Table tab) {
    if (t.kind == SEMIC) {
      t = SLPTokeniser.getNextToken();
      return Stm(tab);
    }
    else
      return tab;
  }

  public static IntAndTable Exp(Table tab) {
    IntAndTable it=null;

    if (t.kind == ID) {
      it = new IntAndTable(tab.lookup(tab,t.image),tab);
      t = SLPTokeniser.getNextToken();
    }
    else if (t.kind == NUM) {
      it = new IntAndTable(Integer.parseInt(t.image),tab);
      t = SLPTokeniser.getNextToken();
    }
    else if (t.kind == LBR) {
           t = SLPTokeniser.getNextToken();
           tab = Stm(tab);
           if (t.kind == COMMA) {
             t = SLPTokeniser.getNextToken();
             it = Exp(tab);
             if (t.kind == RBR) {
               t = SLPTokeniser.getNextToken();
             }
             else
               error(")");
           }
           else
             error(",");
         }
         else
           error("identifier, number or (");
    return Exp_Prime(it);
  }

  public static IntAndTable Exp_Prime(IntAndTable it1) {
    IntAndTable it2;

    switch(t.kind) {
      case PLUS_SIGN: 
        Binop();
        it2 = Exp(it1.t);
        return new IntAndTable(it1.i+it2.i,it2.t);
      case MINUS_SIGN: 
        Binop();
        it2 = Exp(it1.t);
        return new IntAndTable(it1.i-it2.i,it2.t);
      case MULT_SIGN: 
        Binop();
        it2 = Exp(it1.t);
        return new IntAndTable(it1.i*it2.i,it2.t);
      case DIV_SIGN: 
        Binop();
        it2 = Exp(it1.t);
        return new IntAndTable(it1.i/it2.i,it2.t);
      default:
        return it1;
    }
  }

  public static IntListAndTable ExpList(Table tab) {
    IntAndTable it;
    IntListAndTable ilt;

    it = Exp(tab);
    ilt = ExpList_Prime(it.t);
    return new IntListAndTable(new IntList(it.i,ilt.il),it.t);
  }
 
  public static IntListAndTable ExpList_Prime(Table tab) {
    if (t.kind == COMMA) {
      t = SLPTokeniser.getNextToken();
      return ExpList(tab);
    }
    else
      return new IntListAndTable(null,tab);
  }

  public static void Binop() {
    t = SLPTokeniser.getNextToken();
  }

  /*
   * The error routine prints out the line number of the error,
   * along with the encountered lexeme. The String argument 
   * indicates which tokens were expected in the input.
   */

  public static void error(String msg) {
    System.out.print("Syntax error at line " + t.beginLine);
    System.out.println(": encountered " + t.image + " when " + msg + " expected");
    System.exit(0);
 }

  public static void main(String args[]) {

    SLPTokeniser tokeniser;

    /* 
     * Firstly, decide if we're taking input from standard input
     * or from a file whose name was given as an argument...
     * (This piece of code is fairly standard)
     */
    
    if (args.length == 0) {
      System.out.println("Reading from standard input . . .");
      tokeniser = new SLPTokeniser(System.in);
    } else if (args.length == 1) {
      try {
        tokeniser = new SLPTokeniser(new java.io.FileInputStream(args[0]));
      } catch (java.io.FileNotFoundException e) {
        System.err.println("File " + args[0] + " not found.");
        return;
      }
    } else {
      System.out.println("SLP Recursive Descent Interpreter:  Usage is one of:");
      System.out.println("         java SLPRecInt < inputfile");
      System.out.println("OR");
      System.out.println("         java SLPRecInt inputfile");
      return;
    }
    t = SLPTokeniser.getNextToken();
    Table tab = Stm(null);
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产亚洲高清剧情介绍| 亚洲一区二区三区四区中文字幕| 色欧美日韩亚洲| 日韩av一二三| 亚洲欧洲日韩av| 日韩精品中文字幕一区| 99久久婷婷国产综合精品电影 | 亚洲国产成人va在线观看天堂 | 亚洲精品中文在线观看| 精品毛片乱码1区2区3区| 一本一本大道香蕉久在线精品| 久久99久久久久| 亚洲成av人片一区二区| 国产精品网站在线观看| 欧美成人一区二区三区| 色噜噜夜夜夜综合网| 成人激情小说网站| 精品综合久久久久久8888| 亚洲成a人v欧美综合天堂下载 | 欧美无砖专区一中文字| 美女脱光内衣内裤视频久久影院| 亚洲三级小视频| 久久久久国产精品麻豆ai换脸| 欧美一区二区视频观看视频 | 欧美亚洲禁片免费| 成人av动漫网站| 国产在线精品一区二区夜色| 亚洲午夜私人影院| 有坂深雪av一区二区精品| 国产精品传媒视频| 国产精品你懂的| 国产精品美女久久久久久久久 | 91黄色免费版| 色综合久久中文综合久久牛| aaa国产一区| 99精品黄色片免费大全| 成人sese在线| 成人h精品动漫一区二区三区| 国产成人精品www牛牛影视| 国产精品中文字幕一区二区三区| 久久电影国产免费久久电影| 麻豆中文一区二区| 精品一区二区免费看| 久久成人久久爱| 国产精品主播直播| 不卡的av电影| 91网上在线视频| 在线视频国内一区二区| 欧美午夜精品免费| 在线综合亚洲欧美在线视频| 欧美浪妇xxxx高跟鞋交| 91精品国产综合久久久久| 91精品国产色综合久久不卡电影| 欧美日韩精品二区第二页| 在线播放亚洲一区| 91精品一区二区三区在线观看| 欧美精品三级日韩久久| 91麻豆精品国产91久久久更新时间 | 最新不卡av在线| 亚洲视频一区二区免费在线观看| 亚洲欧美日韩系列| 亚洲mv在线观看| 日本一道高清亚洲日美韩| 六月丁香婷婷色狠狠久久| 国产老女人精品毛片久久| 成人午夜激情在线| 欧美亚洲动漫精品| 日韩欧美激情四射| 欧美国产精品一区二区三区| 亚洲视频一区二区在线观看| 日韩精品久久久久久| 国产最新精品免费| 91毛片在线观看| 欧美日韩高清一区| 国产亚洲精品aa午夜观看| 一区二区三区在线不卡| 日本成人在线电影网| 国产成人午夜精品影院观看视频| 欧美国产精品专区| 亚洲成人自拍偷拍| 国产一区二区三区香蕉| 色综合久久66| 欧美r级在线观看| 樱桃视频在线观看一区| 久久99精品久久只有精品| 成人高清免费观看| 91精品国产综合久久婷婷香蕉 | 中文字幕人成不卡一区| 午夜精品福利一区二区三区av | 中文字幕精品在线不卡| 亚洲网友自拍偷拍| 国产成人精品网址| 欧美电影在线免费观看| 国产精品视频在线看| 日韩不卡一二三区| 99国产精品久久久久久久久久久| 欧美一区二区三区在线电影| 中文字幕一区视频| 国模大尺度一区二区三区| 欧美日韩一级视频| 国产精品传媒在线| 国产真实精品久久二三区| 在线观看av一区二区| 国产色一区二区| 精品一区二区三区在线观看国产 | 2021国产精品久久精品| 亚洲一级二级三级| 丁香婷婷综合色啪| 日韩欧美一卡二卡| 亚洲国产精品欧美一二99| 成人深夜福利app| 26uuu亚洲婷婷狠狠天堂| 日韩国产高清在线| 欧美伊人久久久久久久久影院 | 黑人巨大精品欧美黑白配亚洲| 欧美亚洲日本国产| 亚洲女同女同女同女同女同69| 国产一区视频网站| 精品久久国产97色综合| 爽爽淫人综合网网站| 日本久久电影网| 中文字幕在线一区免费| 成人av午夜电影| 国产亚洲精品资源在线26u| 精品亚洲成av人在线观看| 欧美区视频在线观看| 亚洲国产综合视频在线观看| 欧美中文字幕一区二区三区 | 91精品国产综合久久久蜜臀粉嫩 | 欧美亚洲综合色| 一区二区三区在线看| 一本色道久久综合狠狠躁的推荐| 国产精品国产成人国产三级| 成人看片黄a免费看在线| 久久久久久夜精品精品免费| 韩国av一区二区三区四区| 日本中文字幕一区二区视频| 欧美三级日韩三级| 亚洲va韩国va欧美va精品| 欧美日本精品一区二区三区| 午夜久久久久久电影| 欧美日韩电影在线| 日本一道高清亚洲日美韩| 日韩女同互慰一区二区| 国产在线一区二区| 国产欧美一区二区精品仙草咪| 国产激情视频一区二区三区欧美| 久久久亚洲国产美女国产盗摄| 国产成a人亚洲精| 国产精品久久久久久久久图文区| av网站免费线看精品| 亚洲乱码国产乱码精品精可以看 | 91精品欧美一区二区三区综合在| 天天爽夜夜爽夜夜爽精品视频| 欧美肥胖老妇做爰| 麻豆精品久久久| 久久久久久久综合| 99久久精品一区| 亚洲va欧美va国产va天堂影院| 日韩一级高清毛片| 国产麻豆精品视频| 亚洲色图欧美激情| 91精品国产综合久久精品图片| 韩国成人福利片在线播放| 1区2区3区欧美| 宅男噜噜噜66一区二区66| 韩国精品在线观看| 亚洲精品第1页| 欧美一卡二卡在线| 高清不卡一二三区| 亚洲一区免费观看| 久久综合精品国产一区二区三区| 成人久久久精品乱码一区二区三区| 亚洲综合清纯丝袜自拍| 欧美一卡二卡在线| av激情综合网| 免费看欧美女人艹b| 国产精品久久久久久久久动漫 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产成人无遮挡在线视频| 亚洲免费资源在线播放| 欧美一级午夜免费电影| 成人黄动漫网站免费app| 亚洲在线中文字幕| 久久精品亚洲麻豆av一区二区 | 亚洲成a天堂v人片| 国产欧美日韩在线看| 欧美日韩亚洲国产综合| 国产精品99久久久久久有的能看| 又紧又大又爽精品一区二区| 久久婷婷综合激情| 欧美三级在线视频| 丁香亚洲综合激情啪啪综合| 日韩国产欧美在线观看| 亚洲柠檬福利资源导航| 久久久噜噜噜久久人人看| 6080亚洲精品一区二区| 99久久精品免费| 激情小说亚洲一区| 视频一区视频二区中文|