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

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

?? grammar.java

?? 有關編譯器的編譯器.
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
    }    if(previousContainsEmpty)    {      result.setEmpty();    }    else    {      result.clearEmpty();    }    return result;  }  static SymbolSet[] FOLLOW;  static void computeFollow()  {    // Get terminals, nonterminals and productions    Symbol[] terminals = Symbol.terminals();    Symbol[] nonterminals = Symbol.nonterminals();    Production[] productions = Production.productions();    // Initialize FOLLOW(A) to {}    FOLLOW = new SymbolSet[nonterminals.length];    for(int i = 0; i < nonterminals.length; i++)    {      FOLLOW[i] = new SymbolSet();    }    // Place eof in FOLLOW(S) where S is the start symbol.    FOLLOW[startSymbol].setTerminal(eof);    // If there is a production A->xBy, then everything in FIRST(y) except    // for empty is placed in FOLLOW(B).    for(int i = 0; i < productions.length; i++)    {      Symbol[] rightside = productions[i].rightside();      for(int j = 0; j < rightside.length; j++)      {        if(!rightside[j].terminal)        {          SymbolSet set            = FIRST(rightside, j + 1);          set.clearEmpty();          FOLLOW[rightside[j].index].or(set                                       );        }      }    }    // If there is a production A->xB, or a production A->xBy where FIRST(y)    // contains empty, then everything in FOLLOW(A) is in FOLLOW(B).    boolean changed;    do    {      changed = false;      for(int i = 0; i < productions.length; i++)      {        Symbol[] rightside = productions[i].rightside();        for(int j = 0; j < rightside.length; j++)        {          if(!rightside[j].terminal)          {            SymbolSet before =              (SymbolSet) FOLLOW[rightside[j].index].clone();            if(FIRST(rightside, j + 1).getEmpty())            {              FOLLOW[rightside[j].index].              or(FOLLOW[productions[i].leftside]);            }            if(!before.equals(FOLLOW[rightside[j].index]))            {              changed = true;            }          }        }      }    }    while(changed);  }  static SymbolSet FOLLOW(int nonterminal)  {    return FOLLOW[nonterminal];  }  static LR0ItemSet CLOSURE(LR0Item item)  {    LR0ItemSet result = (LR0ItemSet) fastLr0Closure.get(item);    if(result != null)    {      return result;    }    result = new LR0ItemSet();    result.set(item);    LR0ItemSet newItems = result;    boolean modified;    do    {      modified = false;      LR0Item[] items = newItems.items();      newItems = new LR0ItemSet();      for(int i = 0; i < items.length; i++)      {        Production production = Production.production(items[i].production);        Symbol[] rightside = production.rightside();        if(items[i].position < rightside.length)        {          Symbol symbol = rightside[items[i].position];          if(!symbol.terminal)          {            Production[] alternatives =              Production.alternatives(symbol.index);            for(int j = 0; j < alternatives.length; j++)            {              LR0Item newItem = new LR0Item(alternatives[j].index, 0);              if(!result.get(newItem))              {                result.set(newItem);                newItems.set(newItem);                modified = true;              }            }          }        }      }    }    while(modified);    fastLr0Closure.put(item, result);    return result;  }  //    private static final SplayTreeMap fastLr0SetClosure = new SplayTreeMap();  static LR0ItemSet CLOSURE(LR0ItemSet set                             )  {    LR0ItemSet result =      /*        (LR0ItemSet) fastLr0SetClosure.get(set);                if(result != null)        {        return result;        }                result =*/      new LR0ItemSet();    LR0Item[] setItems = set.items();    for(int i = 0; i < setItems.length; i++)    {      LR0Item[] items = CLOSURE(setItems[i]).items();      for(int j = 0; j < items.length; j++)      {        result.set(items[j]);      }    }    // fastLr0SetClosure.put(set, result);    return result;  }  static LR1ItemSet CLOSURE(LR1Item item)  {    LR1ItemSet result = (LR1ItemSet) fastLr1Closure.get(item);    if(result != null)    {      return result;    }    result = new LR1ItemSet();    result.set(item);    LR1ItemSet newItems = result;    boolean modified;    do    {      modified = false;      LR1Item[] items = newItems.items();      newItems = new LR1ItemSet();      for(int i = 0; i < items.length; i++)      {        Production production = Production.production(items[i].lr0Item.production);        Symbol[] rightside = production.rightside();        if(items[i].lr0Item.position < rightside.length)        {          Symbol symbol = rightside[items[i].lr0Item.position];          if(!symbol.terminal)          {            Vector tailVector = new Vector(0);            for(int k = items[i].lr0Item.position + 1; k < rightside.length; k++)            {              tailVector.addElement(rightside[k]);            }            tailVector.addElement(Symbol.symbol(items[i].terminal, true));            Symbol[] tail = new Symbol[tailVector.size()];            tailVector.copyInto(tail);            Symbol[] symbols = FIRST(tail).getSymbols();            Production[] alternatives =              Production.alternatives(symbol.index);            for(int k = 0; k < symbols.length; k++)            {              if(symbols[k].terminal)              {                for(int j = 0; j < alternatives.length; j++)                {                  LR1Item newItem = new LR1Item(                                      new LR0Item(alternatives[j].index, 0),                                      symbols[k].index);                  if(!result.get(newItem))                  {                    result.set(newItem);                    newItems.set(newItem);                    modified = true;                  }                }              }            }          }        }      }    }    while(modified);    fastLr1Closure.put(item, result);    return result;  }  // private static final SplayTreeMap fastLr1SetClosure = new SplayTreeMap();  static LR1ItemSet CLOSURE(LR1ItemSet set                             )  {    LR1ItemSet result =      /*        (LR1ItemSet) fastLr1SetClosure.get(set);                if(result != null)        {        return result;        }                result =*/      new LR1ItemSet();    LR1Item[] setItems = set.items();    for(int i = 0; i < setItems.length; i++)    {      LR1Item[] items = CLOSURE(new LR1Item(setItems[i].lr0Item, dummy)).items();      for(int j = 0; j < items.length; j++)      {        result.set(new LR1Item(items[j].lr0Item,                               items[j].terminal == dummy ? setItems[i].terminal : items[j].terminal));      }    }    //        fastLr1SetClosure.put(set, result);    return result;  }  static LR0ItemSet GOTO(LR0ItemSet set                           , Symbol symbol)  {    LR0ItemSet initialset = set                              ;    set      = CLOSURE(set               );    LR0ItemSet result = new LR0ItemSet();    // return all items A->xS.y such that A->x.Sy is in set. (S=symbol)    LR0Item[] items = set.items();    for(int i = 0; i < items.length; i++)    {      Production production = Production.production(items[i].production);      Symbol[] rightside = production.rightside();      if(items[i].position < rightside.length)      {        if(symbol.equals(rightside[items[i].position]))        {          result.set(new LR0Item(items[i].production,                                 items[i].position + 1));        }      }    }    return result;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人丝袜高跟foot| 在线观看av不卡| 一区二区三区免费在线观看| 欧美美女一区二区在线观看| 国产v综合v亚洲欧| 日韩av中文字幕一区二区三区| 中文字幕乱码久久午夜不卡| 欧美一区二区三区在线视频 | 夜夜嗨av一区二区三区四季av| 日韩一区二区在线观看| 色欧美日韩亚洲| 懂色av一区二区在线播放| 丝袜亚洲另类欧美综合| 亚洲欧美日韩在线| 国产日韩在线不卡| 日韩一区国产二区欧美三区| 欧洲av在线精品| 91在线播放网址| 国产jizzjizz一区二区| 看国产成人h片视频| 亚洲国产精品麻豆| 亚洲精品成人精品456| 国产精品免费视频网站| 国产欧美日韩视频一区二区| 精品久久一区二区三区| 日韩亚洲欧美在线观看| 欧美精品tushy高清| 欧美性一级生活| 在线精品视频一区二区| 97se亚洲国产综合在线| 成人天堂资源www在线| 国产精品资源在线| 精品系列免费在线观看| 美日韩一区二区三区| 日本不卡在线视频| 午夜激情综合网| 亚洲3atv精品一区二区三区| 午夜精品久久久久影视| 亚洲国产日韩一级| 亚洲成人在线免费| 亚洲国产一区视频| 午夜精品国产更新| 日韩激情中文字幕| 日韩高清不卡一区二区| 日本美女一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 蜜桃久久精品一区二区| 精品在线你懂的| 国产乱理伦片在线观看夜一区| 韩国av一区二区三区| 国产自产v一区二区三区c| 国产精品99久久不卡二区| 岛国一区二区在线观看| 99麻豆久久久国产精品免费| 色成人在线视频| 欧美日韩亚洲综合| 日韩一二三区不卡| 久久久无码精品亚洲日韩按摩| 欧美国产一区二区在线观看| 国产精品久久久久久亚洲伦| 亚洲精品成a人| 午夜国产精品一区| 韩国av一区二区| 99久久久精品| 91麻豆精品国产无毒不卡在线观看| 日韩欧美在线一区二区三区| 久久九九久精品国产免费直播| 国产精品久久久久久久第一福利| 日韩一区欧美一区| 亚洲电影一级黄| 紧缚奴在线一区二区三区| 国产**成人网毛片九色| 在线免费观看成人短视频| 538在线一区二区精品国产| 久久亚洲一级片| 亚洲精品视频一区| 蜜桃视频一区二区| 91在线小视频| 日韩一区二区三区高清免费看看 | 日韩欧美在线一区二区三区| 国产欧美一区二区精品忘忧草| 亚洲精品亚洲人成人网在线播放| 免费高清在线一区| 91在线视频免费观看| 日韩午夜在线播放| 亚洲免费观看高清| 看国产成人h片视频| 一本久久a久久精品亚洲| 欧美一区二区视频在线观看2020| 国产精品美日韩| 奇米影视7777精品一区二区| 成人短视频下载| 日韩欧美成人一区二区| 亚洲欧洲日韩av| 久草热8精品视频在线观看| 色综合久久66| 久久久国产精品不卡| 天天色图综合网| 99视频超级精品| 久久久99精品免费观看不卡| 亚洲va国产va欧美va观看| 成人一区二区视频| 日韩免费在线观看| 亚洲韩国一区二区三区| 波多野结衣视频一区| 精品久久久久久久久久久久包黑料| 亚洲精品久久久蜜桃| 国产精品亚洲一区二区三区在线 | 国产91精品一区二区麻豆亚洲| 在线视频亚洲一区| 久久精品一区二区| 卡一卡二国产精品| 欧美精品自拍偷拍动漫精品| 中文字幕一区免费在线观看| 国产最新精品精品你懂的| 在线成人免费视频| 一个色综合av| 91免费在线视频观看| 国产偷v国产偷v亚洲高清| 麻豆精品精品国产自在97香蕉| 欧美视频精品在线观看| 日韩美女久久久| 成人免费精品视频| 国产三级三级三级精品8ⅰ区| 美女视频网站久久| 91精品久久久久久久久99蜜臂| 一区二区三区四区蜜桃| 99re这里只有精品首页| 亚洲成人激情社区| 色av成人天堂桃色av| 亚洲免费观看高清完整版在线| 99国产麻豆精品| ●精品国产综合乱码久久久久| 成人看片黄a免费看在线| 国产视频不卡一区| 成人妖精视频yjsp地址| 欧美国产精品一区| 成人免费毛片app| 最好看的中文字幕久久| 99久久国产综合精品色伊| 中文乱码免费一区二区| 成人毛片在线观看| 亚洲视频一区二区在线观看| 97久久精品人人做人人爽| 国产精品久久久久四虎| 91日韩一区二区三区| 亚洲伊人伊色伊影伊综合网| 欧美日本在线一区| 天堂蜜桃一区二区三区| 欧美一级理论性理论a| 另类欧美日韩国产在线| 久久夜色精品一区| 成人av资源在线观看| 亚洲美女视频在线| 欧美日韩中字一区| 日韩国产欧美在线观看| 精品捆绑美女sm三区| 福利一区二区在线| 亚洲男同性视频| 欧美日韩国产片| 裸体在线国模精品偷拍| 国产精品免费视频观看| 欧美性高清videossexo| 麻豆精品久久久| 欧美激情在线观看视频免费| 色狠狠桃花综合| 蜜臀99久久精品久久久久久软件| 国产午夜精品福利| 在线免费观看不卡av| 精品在线亚洲视频| 亚洲情趣在线观看| 777xxx欧美| 国产成人午夜精品影院观看视频| 亚洲色图丝袜美腿| 欧美一区二区三区免费大片| 国产精品综合二区| 一区二区三区免费看视频| 欧美一级理论性理论a| 成人av电影免费在线播放| 亚洲成av人片在线| 亚洲国产精品v| 欧美日韩小视频| 国产成人在线免费| 首页综合国产亚洲丝袜| 欧美国产日本视频| 欧美乱熟臀69xxxxxx| 福利一区二区在线观看| 视频精品一区二区| 国产精品青草久久| 91精选在线观看| 99精品一区二区| 久久99国产乱子伦精品免费| 亚洲日本护士毛茸茸| 精品欧美一区二区久久| 在线亚洲一区观看| 成人激情动漫在线观看| 久久精品国产在热久久| 亚洲自拍另类综合| 欧美精彩视频一区二区三区| 91精品在线免费观看|