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

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

?? constructnfa.java

?? 有關(guān)編譯器的編譯器.
?? JAVA
字號:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * This file is part of SableCC.                             * * See the file "LICENSE" for copyright information and the  * * terms and conditions for copying, distribution and        * * modification of SableCC.                                  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */package org.sablecc.sablecc;import java.util.*;import org.sablecc.sablecc.analysis.*;import org.sablecc.sablecc.node.*;public class ConstructNFA extends DepthFirstAdapter{  private ResolveIds ids;  private String stateName;  private int i;  ConstructNFA(ResolveIds ids, String stateName)  {    this.ids = ids;    this.stateName = stateName;  }  public void outStart(Start node)  {    setOut(node, getOut(node.getPGrammar()));    // free memory    if(getOut(node.getPGrammar()) != null)      setOut(node.getPGrammar(), null);  }  public void outAGrammar(AGrammar node)  {    setOut(node, getOut(node.getTokens()));    // free memory    if(getOut(node.getTokens()) != null)      setOut(node.getTokens(), null);  }  public void outAHelperDef(AHelperDef node)  {    setOut(node, getOut(node.getRegExp()));    // free memory    if(getOut(node.getRegExp()) != null)      setOut(node.getRegExp(), null);  }  public void outATokens(ATokens node)  {    ATokenDef[] tokenDefs = (ATokenDef[]) node.getTokenDefs().toArray(new ATokenDef[0]);    NFA result = null;    for(int i = tokenDefs.length - 1; i >= 0 ; i--)    {      NFA nfa = (NFA) getOut(tokenDefs[i]);      if(nfa != null)      {        if(result == null)        {          result = nfa;        }        else        {          result = nfa.merge(result);        }        // free memory        if(getOut(tokenDefs[i]) != null)          setOut(tokenDefs[i], null);      }    }    if(result != null)      setOut(node, result);  }  public void outATokenDef(ATokenDef node)  {    Set set      = (Set) getOut(node.getStateList());    Object o1 = getOut(node.getRegExp());    if((set        == null) || (set.size() == 0) || set.contains(stateName))    {      //System.out.print("*");      NFA n1 = (o1 instanceof NFA) ? (NFA) o1 : new NFA((CharSet) o1);      String name = (String) ids.names.get(node);      n1.states[n1.states.length - 1].accept = name;      setOut(node, n1);    }    else    {      //System.out.print("-");    }    // free memory    if(getOut(node.getStateList()) != null)      setOut(node.getStateList(), null);    if(getOut(node.getRegExp()) != null)      setOut(node.getRegExp(), null);  }  public void outAStateList(AStateList node)  {    Set set      = new TreeSet();    AStateListTail[] stateListTails = (AStateListTail[]) node.getStateLists().toArray(new AStateListTail[0]);    for(int i = stateListTails.length - 1; i >= 0 ; i--)    {      String str = stateListTails[i].getId().getText().toUpperCase();      set.add(str);    }    set.add(node.getId().getText().toUpperCase());    setOut(node, set            );  }  public void outARegExp(ARegExp node)  {    ARegExpTail[] regExpTails = (ARegExpTail[]) node.getConcats().toArray(new ARegExpTail[0]);    NFA result = null;    for(int i = regExpTails.length - 1; i >= 0 ; i--)    {      Object o = getOut(regExpTails[i]);      NFA nfa = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);      if(result == null)      {        result = nfa;      }      else      {        result = nfa.alternate(result);      }      // free memory      if(getOut(regExpTails[i]) != null)        setOut(regExpTails[i], null);    }    if(result != null)    {      Object o = getOut(node.getConcat());      NFA nfa = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);      setOut(node, nfa.alternate(result));    }    else    {      setOut(node, getOut(node.getConcat()));    }    // free memory    if(getOut(node.getConcat()) != null)      setOut(node.getConcat(), null);  }  public void outARegExpTail(ARegExpTail node)  {    setOut(node, getOut(node.getConcat()));    // free memory    if(getOut(node.getConcat()) != null)      setOut(node.getConcat(), null);  }  public void outAConcat(AConcat node)  {    AUnExp[] unExps = (AUnExp[]) node.getUnExps().toArray(new AUnExp[0]);    if(unExps.length == 0)    {      setOut(node, new NFA());    }    else if(unExps.length == 1)    {      setOut(node, getOut(unExps[0]));      // free memory      if(getOut(unExps[0]) != null)        setOut(unExps[0], null);    }    else    {      NFA result = null;      for(int i = unExps.length - 1; i >= 0 ; i--)      {        Object o = getOut(unExps[i]);        NFA nfa = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);        if(result == null)        {          result = nfa;        }        else        {          result = nfa.concatenate(result);        }        // free memory        if(getOut(unExps[i]) != null)          setOut(unExps[i], null);      }      setOut(node, result);    }  }  public void outAUnExp(AUnExp node)  {    Object o = getOut(node.getBasic());    char c = ' ';    if(node.getUnOp() != null)      c = ((Character) getOut(node.getUnOp())).charValue();    switch(c)    {    case '*':      {        NFA n = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);        setOut(node, n.zeroOrMore());      }      break;    case '?':      {        NFA n = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);        setOut(node, n.zeroOrOne());      }      break;    case '+':      {        NFA n = (o instanceof NFA) ? (NFA) o : new NFA((CharSet) o);        setOut(node, n.oneOrMore());      }      break;    default:      {        setOut(node, o);      }      break;    }    // free memory    if(getOut(node.getBasic()) != null)      setOut(node.getBasic(), null);    if(getOut(node.getUnOp()) != null)      setOut(node.getUnOp(), null);  }  public void outACharBasic(ACharBasic node)  {    char c = ((Character) getOut(node.getChar())).charValue();    setOut(node, new CharSet(c));    // free memory    if(getOut(node.getChar()) != null)      setOut(node.getChar(), null);  }  public void outASetBasic(ASetBasic node)  {    setOut(node, getOut(node.getSet()));    // free memory    if(getOut(node.getSet()) != null)      setOut(node.getSet(), null);  }  public void outAStringBasic(AStringBasic node)  {    String s = node.getString().getText();    s = s.substring(1, s.length() -1);    setOut(node, new NFA(s));  }  public void outAIdBasic(AIdBasic node)  {    Object o = getOut((Node) ids.helpers.get(node.getId().getText()));    if(o instanceof NFA)    {      setOut(node, ((NFA) o).clone());    }    else    {      setOut(node, ((CharSet) o).clone());    }  }  public void outARegExpBasic(ARegExpBasic node)  {    setOut(node, getOut(node.getRegExp()));    // free memory    if(getOut(node.getRegExp()) != null)      setOut(node.getRegExp(), null);  }  public void outACharChar(ACharChar node)  {    setOut(node, new Character(node.getChar().getText().charAt(1)));  }  public void outADecChar(ADecChar node)  {    setOut(node, new Character((char) Integer.parseInt(node.getDecChar().getText())));  }  public void outAHexChar(AHexChar node)  {    setOut(node, new Character((char)                               Integer.parseInt(node.getHexChar().getText().substring(2), 16)));  }  public void outAOperationSet(AOperationSet node)  {    try    {      CharSet cs1 = (CharSet) getOut(node.getLeft());      CharSet cs2 = (CharSet) getOut(node.getRight());      char binop = ((Character) getOut(node.getBinOp())).charValue();      switch(binop)      {      case '+':        {          setOut(node, cs1.union(cs2));        }        break;      case '-':        {          setOut(node, cs1.diff(cs2));        }        break;      }    }    catch(Exception e)    {      throw new RuntimeException(node + " is invalid.");    }    // free memory    if(getOut(node.getLeft()) != null)      setOut(node.getLeft(), null);    if(getOut(node.getBinOp()) != null)      setOut(node.getBinOp(), null);    if(getOut(node.getRight()) != null)      setOut(node.getRight(), null);  }  public void outAIntervalSet(AIntervalSet node)  {    char c1 = ((Character) getOut(node.getLeft())).charValue();    char c2 = ((Character) getOut(node.getRight())).charValue();    if(c1 > c2)    {      throw new RuntimeException(node + " is invalid.");    }    setOut(node, new CharSet(c1, c2));    // free memory    if(getOut(node.getLeft()) != null)      setOut(node.getLeft(), null);    if(getOut(node.getRight()) != null)      setOut(node.getRight(), null);  }  public void outAStarUnOp(AStarUnOp node)  {    setOut(node, new Character('*'));  }  public void outAQMarkUnOp(AQMarkUnOp node)  {    setOut(node, new Character('?'));  }  public void outAPlusUnOp(APlusUnOp node)  {    setOut(node, new Character('+'));  }  public void outAPlusBinOp(APlusBinOp node)  {    setOut(node, new Character('+'));  }  public void outAMinusBinOp(AMinusBinOp node)  {    setOut(node, new Character('-'));  }  public Object getOut(Node node)  {    if(node == null)    {      return null;    }    return super.getOut(node);  }  public void setOut(Node node, Object out)  {    if(node == null)    {      throw new NullPointerException();    }    super.setOut(node, out);  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图在线视频| 一区二区在线观看不卡| 日本道色综合久久| 六月婷婷色综合| 亚洲人成伊人成综合网小说| 日韩久久免费av| 91麻豆产精品久久久久久| 麻豆国产精品777777在线| 亚洲色图20p| 久久综合久久综合九色| 欧美午夜精品一区二区三区 | 日韩**一区毛片| 国产精品国产三级国产专播品爱网 | 国产日韩精品久久久| 色婷婷国产精品综合在线观看| 精一区二区三区| 亚洲 欧美综合在线网络| 中国色在线观看另类| 亚洲精品一线二线三线| 欧美裸体一区二区三区| 91免费看`日韩一区二区| 国产精品系列在线播放| 美腿丝袜亚洲综合| 午夜精品福利一区二区三区蜜桃| 亚洲天堂久久久久久久| 国产免费成人在线视频| 久久奇米777| 日韩视频中午一区| 欧美一区二区三区免费大片 | 国产麻豆精品久久一二三| 日韩精品亚洲专区| 亚洲成人你懂的| 伊人色综合久久天天人手人婷| 国产精品久久看| 国产拍揄自揄精品视频麻豆| 久久久青草青青国产亚洲免观| 日韩欧美一区二区免费| 日韩一级免费观看| 欧美一级日韩不卡播放免费| 在线不卡欧美精品一区二区三区| 欧美天天综合网| 欧美日韩中文字幕一区二区| 欧美系列日韩一区| 欧美日韩国产片| 777xxx欧美| 日韩欧美中文字幕制服| 欧美成人性福生活免费看| 日韩美女视频在线| 久久久久久久久99精品| 欧美国产成人精品| 国产精品毛片无遮挡高清| 国产精品电影一区二区三区| 亚洲精选在线视频| 午夜天堂影视香蕉久久| 蜜臀av性久久久久av蜜臀妖精| 蜜臀av一区二区在线观看| 国产在线播放一区三区四| 成人一区在线观看| 91麻豆精品在线观看| 欧美在线观看18| 日韩一区二区三区在线| 久久精品日产第一区二区三区高清版| 久久久久久综合| 国产精品久久久久久久久搜平片| 亚洲精品视频自拍| 日韩精彩视频在线观看| 国模套图日韩精品一区二区| 成人免费不卡视频| 色婷婷综合激情| 欧美一二三区在线| 国产欧美综合色| 一区二区三区在线影院| 日本成人超碰在线观看| 国产麻豆精品视频| 在线看国产一区二区| 日韩欧美不卡一区| 欧美激情一区二区在线| 亚洲在线中文字幕| 黄网站免费久久| 99精品国产视频| 日韩写真欧美这视频| 国产精品久久影院| 三级一区在线视频先锋 | 亚洲人成电影网站色mp4| 亚洲国产精品欧美一二99| 美女国产一区二区三区| 99久久伊人精品| 欧美一区日韩一区| 国产精品久久久久久久久动漫 | 国产网站一区二区| 亚洲综合丁香婷婷六月香| 国产综合久久久久久久久久久久| 91网站最新地址| 欧美电视剧免费观看| 亚洲精品欧美激情| 国产麻豆精品久久一二三| 欧美日韩不卡在线| 国产精品福利在线播放| 国产一区二区日韩精品| 欧美日韩的一区二区| 亚洲欧洲精品一区二区精品久久久| 日韩av不卡在线观看| 日本精品视频一区二区| 国产调教视频一区| 香蕉久久夜色精品国产使用方法 | 欧美国产激情二区三区| 日韩av午夜在线观看| 色综合视频在线观看| 欧美变态tickling挠脚心| 一二三区精品福利视频| 大白屁股一区二区视频| 欧美成人一区二区| 日韩综合在线视频| 在线看国产一区二区| 国产精品对白交换视频| 国产精品一区二区三区四区| 91精品国产一区二区人妖| 亚洲男女一区二区三区| 不卡一区二区在线| 国产日韩影视精品| 激情久久五月天| 日韩欧美在线观看一区二区三区| 亚洲国产va精品久久久不卡综合| 99久久亚洲一区二区三区青草| 欧美国产禁国产网站cc| 国产成人精品一区二区三区四区| 精品少妇一区二区三区视频免付费| 午夜久久久影院| 欧美日韩高清影院| 五月天久久比比资源色| 欧美日韩中文字幕一区二区| 夜夜嗨av一区二区三区网页 | 看片的网站亚洲| 在线不卡欧美精品一区二区三区| 五月婷婷激情综合网| 欧美日韩高清影院| 午夜影视日本亚洲欧洲精品| 欧美日韩成人在线| 日韩成人一级大片| 日韩免费一区二区三区在线播放| 日韩电影在线一区| 日韩欧美亚洲国产精品字幕久久久| 日韩高清不卡在线| 中文字幕av不卡| 色综合网站在线| 欧美日韩国产成人在线91| 亚洲成a人v欧美综合天堂下载| 欧美日韩中文另类| 热久久国产精品| 久久亚洲精华国产精华液| 国产高清成人在线| 欧美国产精品v| 色www精品视频在线观看| 亚洲第一福利一区| 日韩小视频在线观看专区| 国产一区亚洲一区| 国产精品视频一区二区三区不卡| 99这里只有久久精品视频| 亚洲已满18点击进入久久| 538在线一区二区精品国产| 麻豆国产精品一区二区三区| 国产清纯白嫩初高生在线观看91| av在线免费不卡| 性做久久久久久免费观看欧美| 欧美一区二区在线播放| 国产精品影视网| 亚洲乱码中文字幕| 日韩一区二区在线看| 岛国精品在线播放| 亚洲一区二区三区免费视频| 日韩美女在线视频| 99国内精品久久| 日韩在线a电影| 国产免费成人在线视频| 欧美揉bbbbb揉bbbbb| 九九九久久久精品| 亚洲欧美国产77777| 日韩视频123| 99精品视频一区二区| 午夜欧美2019年伦理| 欧美国产激情一区二区三区蜜月| 欧美调教femdomvk| 国产成人午夜高潮毛片| 亚洲高清免费一级二级三级| 久久久国产一区二区三区四区小说| 日本高清无吗v一区| 看国产成人h片视频| 依依成人综合视频| 久久人人超碰精品| 69堂成人精品免费视频| 成人永久aaa| 久久国产成人午夜av影院| 亚洲蜜臀av乱码久久精品蜜桃| 日韩欧美久久久| 一本大道久久a久久精品综合 | 成人精品高清在线| 日韩av网站免费在线| 一片黄亚洲嫩模| 亚洲国产精品高清| 日韩欧美专区在线|