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

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

?? resourcestatement.java

?? 外國人寫的c#語法解析器
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
            controlElement.addContent(dataElement);
            do
            {
              node = node.getNextSibling();
              processEntryWithEvaluation(node, "data-element", dataElement);
            }
            while (node != null);
          }
        }
      }
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "cursor" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertCursorEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "cursor");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
    }    

    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.FILE_NAME)
      {
        String filename = currentNode.getFirstChild().getText();
        if (filename.startsWith("\""))
          filename = filename.substring(1, filename.length() - 1);
        resourceElement.setAttribute("file-name", filename);
      }
      else
      {
        // Must be raw data, e.g. single literals (string, character, integer etc.) or
        // a collection of hex numbers enclosed by single quotes.
        convertRawDataToXML(currentNode, resourceElement);
      }
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "designinfo" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertDesignInfoEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "design-info");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
      
      // The design info consists of a list of blocks for a certain control/dialog etc.
      // where each block itself consists of a list of design info values.
      while (currentNode != null)
      {
        // currentNode must always be of type DESIGN_INFO_CONTROL_BLOCK. The parser takes care for this.
        AST blockNode = currentNode.getFirstChild();
        
        // Add the block identification.
        Element blockElement = processEntryWithEvaluation(blockNode, "control-block", resourceElement);
        
        // Next is the resource entry class.
        blockNode = blockNode.getNextSibling();
        blockElement.setAttribute("class", blockNode.getText());
        
        blockNode = blockNode.getNextSibling();
        AST entryNode = blockNode.getFirstChild();
        while (entryNode != null)
        {
          Element entryElement = new Element("entry");
          entryElement.setAttribute("name", entryNode.getText());
          blockElement.addContent(entryElement);
          entryNode = entryNode.getNextSibling();
          Object value = evaluate(entryNode.getText(), entryNode.getLine(), entryNode.getColumn());
          if (value != null)
            entryElement.setAttribute("value", value.toString());
          
          entryNode = entryNode.getNextSibling();
        }
        
        currentNode = currentNode.getNextSibling();
      }
    }    
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "dialog" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertDialogEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "dialog");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
    }    
    
    // Four fix expressions come now, giving left, top, width and height coordinates.
    processEntryWithEvaluation(currentNode, "left", resourceElement);
    currentNode = currentNode.getNextSibling();
    processEntryWithEvaluation(currentNode, "top", resourceElement);
    currentNode = currentNode.getNextSibling();
    processEntryWithEvaluation(currentNode, "width", resourceElement);
    currentNode = currentNode.getNextSibling();
    processEntryWithEvaluation(currentNode, "height", resourceElement);
    currentNode = currentNode.getNextSibling();
    
    // There might also be an optional set of common resource info.
    currentNode = convertCommonDialogInfo(currentNode, resourceElement);
    
    // Now there can be two ways how definition continues, generic controls or concrete controls.
    // The chain is finished when we encounter the common trailing (which starts with an expression).
    while (currentNode != null && currentNode.getType() != RCParserTokenTypes.EXPR)
    {
      if (currentNode.getType() == RCParserTokenTypes.CONCRETE_CONTROL)
        convertConcreteControl(currentNode.getFirstChild(), resourceElement);
      else
        convertGenericControl(currentNode.getFirstChild(), resourceElement);
      currentNode = currentNode.getNextSibling();
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "dialogex" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertDialogExEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "dialogex");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }

      // Four fix expressions come now, giving left, top, width and height coordinates.
      processEntryWithEvaluation(currentNode.getFirstChild(), "left", resourceElement);
      currentNode = currentNode.getNextSibling();
      processEntryWithEvaluation(currentNode.getFirstChild(), "top", resourceElement);
      currentNode = currentNode.getNextSibling();
      processEntryWithEvaluation(currentNode.getFirstChild(), "width", resourceElement);
      currentNode = currentNode.getNextSibling();
      processEntryWithEvaluation(currentNode.getFirstChild(), "height", resourceElement);
      
      // There might be an optional help id value.
      currentNode = currentNode.getNextSibling();
      if (currentNode != null && currentNode.getType() == RCParserTokenTypes.EXPR)
      {
        processEntryWithEvaluation(currentNode.getFirstChild(), "help-id", resourceElement);
        currentNode = currentNode.getNextSibling();
      }
      
      // There might also be an optional set of common resource info.
      currentNode = convertCommonDialogInfo(currentNode, resourceElement);
      
      // Now there can be two ways how definition continues, generic controls or concrete controls.
      // The chain is finished when we encounter the common trailing (which starts with an expression).
      while (currentNode != null && currentNode.getType() != RCParserTokenTypes.EXPR)
      {
        if (currentNode.getType() == RCParserTokenTypes.CONCRETE_CONTROL)
          convertConcreteControl(currentNode.getFirstChild(), resourceElement);
        else
          convertGenericControl(currentNode.getFirstChild(), resourceElement);
        currentNode = currentNode.getNextSibling();
      }
    }    
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "dlginit" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertDlgInitEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "dlginit");
    
    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
      
      // DLGINIT values are organized in chunks each beginning with an identifier.
      // One or more values follow this identifier.
      while (currentNode != null)
      {
        String symbol = currentNode.getText();
        Element dataElement = new Element("data");
        resourceElement.addContent(dataElement);
        dataElement.setAttribute("name", symbol);
        currentNode = currentNode.getNextSibling();
        while (currentNode != null)
        {
          // An identifier indicates the start of a new set of values.
          if (currentNode.getType() == RCParserTokenTypes.IDENTIFIER)
            break;
          
          processEntryWithEvaluation(currentNode, "entry", dataElement);
          currentNode = currentNode.getNextSibling(); 
        }
      }
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a list of expressions (addressed by node) to XML subelements of <b>element</b>. The
   * method loops through all siblings of the given node until there aren't anymore.
   * 
   * @param node The node to convert.
   * @param element The target node to add the converted elements to.
   */
  private void convertExpressionList(AST node, Element element)
  {
    AST currentNode = node;
    while (currentNode != null)
    {
      Element valueElement = new Element("entry");
      element.addContent(valueElement);
      Object value = null;
      if (currentNode.getType() == RCParserTokenTypes.EXPR)
        value = evaluate(currentNode);
      else
      {
        String expression = currentNode.getText();
        value = evaluate(expression, currentNode.getLine(), currentNode.getColumn());
        valueElement.setAttribute("expression", expression);
      }
      if (value != null)
        valueElement.setAttribute("value", value.toString());
      else
        valueElement.setAttribute("value", convertExpressionToText(currentNode.getFirstChild()));
      currentNode = currentNode.getNextSibling();
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * In the case an expression cannot be evaluated (e.g. because a macro cannot be resolved)
   * it is useful to print out at least the expression in text form. This method converts an AST
   * expression tree into plain text.
   * 
   * @param node
   * @return
   */
  private String convertExpressionToText(AST node)
  {
    if (node == null)
      return "";
    else
    {
      StringBuffer buffer = new StringBuffer();
      
      AST left = node.getFirstChild();
      AST right = null;
      if (left != null)
        right = left.getNextSibling();
      if (left != null)
      {
        String leftString = convertExpressionToText(left);
        buffer.append(leftString);
        buffer.append(" ");
      }
      buffer.append(node.getText());
      if (right != null)
      {
        buffer.append(" ");
        buffer.append(convertExpressionToText(right));
      }
      
      return buffer.toString();
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "font" entry to XML.
   * 
   * @param sourceNode The node containing the AST data to convert.
   * @param resourceElement The entry to which the new nodes must be added.
   */
  private void convertFontEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "font");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }

      // Must be a file name node.
      String filename = currentNode.getText();
      if (filename.startsWith("\""))
        filename = filename.substring(1, filename.length());
      resourceElement.setAttribute("file-name", filename);
    }    
  }

  //------------------------------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区三区| 久久色.com| 色狠狠桃花综合| 色综合久久九月婷婷色综合| 成人激情午夜影院| 99免费精品在线| 色哦色哦哦色天天综合| 日本电影亚洲天堂一区| 欧美日韩中文精品| 91精品在线免费观看| 日韩欧美精品在线视频| 欧美xingq一区二区| 国产欧美日韩另类视频免费观看| 欧美国产国产综合| 亚洲免费色视频| 免费看精品久久片| 国产一区福利在线| 97久久精品人人澡人人爽| 在线这里只有精品| 91精品国产一区二区人妖| 精品国产自在久精品国产| 中文字幕免费一区| 亚洲福利视频一区| 久久不见久久见免费视频7| 高清beeg欧美| 欧美自拍丝袜亚洲| 欧美精品一区二区三区四区| 国产精品久久久久影院色老大| 一级特黄大欧美久久久| 青椒成人免费视频| 99精品欧美一区| 日韩午夜在线播放| 亚洲欧美一区二区在线观看| 午夜不卡av在线| 成人做爰69片免费看网站| 欧美美女黄视频| 中文字幕精品一区二区精品绿巨人 | 日日噜噜夜夜狠狠视频欧美人| 丝袜亚洲另类欧美| 成人免费毛片高清视频| 欧美日韩精品系列| 国产精品久久久久影院老司| 男女男精品视频| 99精品欧美一区二区三区小说| 欧美一区二区三区性视频| 欧美综合久久久| 一区二区三区在线播放| 亚洲高清免费视频| 丰满放荡岳乱妇91ww| 在线观看91视频| 国产精品乱码人人做人人爱 | 亚洲欧洲国产日韩| 秋霞电影网一区二区| 91麻豆免费在线观看| 久久精品人人做| 蜜桃av一区二区三区电影| 91蜜桃在线观看| 国产精品进线69影院| 久久99国产精品尤物| 欧洲一区在线电影| 亚洲视频1区2区| 成人免费看片app下载| 精品国产亚洲一区二区三区在线观看| 伊人色综合久久天天| 97久久超碰国产精品电影| 国产精品白丝在线| 国产成人aaa| 日本一区二区三区四区在线视频| 狠狠色伊人亚洲综合成人| 日韩亚洲欧美在线| 另类中文字幕网| 欧美mv和日韩mv的网站| 奇米亚洲午夜久久精品| 91精品国产色综合久久| 亚洲高清在线视频| 91精品国产福利在线观看| 亚洲成人精品一区二区| 欧美在线你懂的| 无吗不卡中文字幕| 日韩久久免费av| 激情文学综合网| 欧美经典一区二区| 成人黄页在线观看| 亚洲欧美色一区| 欧美色男人天堂| 日韩激情视频在线观看| 欧美一区二区啪啪| 国产精品1区2区3区| 国产精品久久久久久久久免费相片| 成人激情免费网站| 亚洲国产精品尤物yw在线观看| 欧美日韩免费观看一区二区三区| 污片在线观看一区二区| 欧美一区二区久久| 成人小视频免费观看| 亚洲手机成人高清视频| 精品视频一区 二区 三区| 麻豆免费精品视频| 欧美高清在线精品一区| 欧美亚洲国产一区二区三区 | 国产精品一区在线| 亚洲精品中文在线影院| 欧美日韩极品在线观看一区| 美女诱惑一区二区| 国产精品福利一区| 欧美一区二区三区在线看| 国产风韵犹存在线视精品| 亚洲人吸女人奶水| 日韩午夜电影在线观看| 成人激情文学综合网| 日日骚欧美日韩| 国产精品蜜臀av| 精品免费国产二区三区| 91一区在线观看| 久久精品国产亚洲高清剧情介绍| 国产精品欧美一区喷水| 制服丝袜中文字幕亚洲| 成人激情小说乱人伦| 美女脱光内衣内裤视频久久影院| 国产精品久久久久一区二区三区| 欧美日韩mp4| 91亚洲资源网| 国产一区二区精品在线观看| 亚洲一区二区成人在线观看| 国产亚洲女人久久久久毛片| 欧美亚洲动漫精品| 大尺度一区二区| 国产一区二区三区免费看| 亚洲成人激情综合网| 亚洲视频一二区| 国产欧美一区二区三区在线看蜜臀| 欧美精品v日韩精品v韩国精品v| 波多野结衣中文字幕一区| 久久精品国产99| 五月天精品一区二区三区| 亚洲精品国产视频| 国产精品美女久久久久aⅴ国产馆| 精品日韩av一区二区| 欧美一区二区三区在线电影| 欧美日韩一级片网站| 91亚洲午夜精品久久久久久| 成人午夜短视频| 国产999精品久久| 国产九九视频一区二区三区| 日韩精品电影在线| 日韩精品电影一区亚洲| 日韩激情视频网站| 美女被吸乳得到大胸91| 免费观看30秒视频久久| 日本91福利区| 蜜桃精品视频在线观看| 日产国产欧美视频一区精品| 午夜av电影一区| 亚洲一区二区不卡免费| 五月婷婷另类国产| 麻豆国产欧美日韩综合精品二区 | 粉嫩高潮美女一区二区三区| 国产麻豆成人精品| 国产成人午夜视频| 国产91丝袜在线播放0| 99re在线视频这里只有精品| 97久久超碰精品国产| 欧美影片第一页| 日韩一本二本av| 国产午夜一区二区三区| 国产精品每日更新在线播放网址| ...av二区三区久久精品| 亚洲日本一区二区| 天堂资源在线中文精品| 日本美女一区二区| 国产精品一区二区果冻传媒| 成人h动漫精品| 欧美性欧美巨大黑白大战| 6080日韩午夜伦伦午夜伦| 精品少妇一区二区三区在线播放 | 丝袜亚洲另类欧美综合| 麻豆成人av在线| 成人性生交大片免费看中文网站 | 五月天欧美精品| 国产精品一二三四区| 99久久精品免费观看| 欧美日韩国产经典色站一区二区三区| 91精品国产综合久久蜜臀| 精品国产乱码久久久久久1区2区 | 日韩精品资源二区在线| 欧美激情综合在线| 亚洲香肠在线观看| 国内精品国产三级国产a久久| av一区二区三区| 91精品国产手机| 国产精品久久久久久久浪潮网站| 亚洲国产欧美日韩另类综合| 美女精品一区二区| 在线看日韩精品电影| 精品成人a区在线观看| 亚洲制服丝袜一区| 成人午夜视频福利| 日韩欧美自拍偷拍| 亚洲男人天堂一区| 粉嫩高潮美女一区二区三区|