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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? resourcestatement.java

?? 外國(guó)人寫(xiě)的c#語(yǔ)法解析器
?? JAVA
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/**
 * Soft Gems Resource parser. Created by Mike Lischke.
 * 
 * The sourceNode code in this file can freely be used for any purpose provided this notice remains 
 * unchanged in the file.
 * 
 * Copyright 2004 by Mike Lischke, www.soft-gems.net, public@soft-gems.net. All rights reserved.
 */

package net.softgems.resourceparser.xml;

import java.util.HashMap;

import net.softgems.resourceparser.RCMainFrame;
import net.softgems.resourceparser.main.RCParserTokenTypes;

import org.jdom.Element;

import antlr.collections.AST;

/**
 * This class converts a resource statement AST to XML.
 */
public class ResourceStatement extends AST2XMLConverter
{

  /** This map allows for a quick lookup of resource types. */
  private HashMap resourceMap = new HashMap();

  //------------------------------------------------------------------------------------------------
  
  /**
   * The constructor of the class.
   * 
   * @param astNode The root node of the subtree we will working on.
   */
  public ResourceStatement(RCMainFrame owner, AST astNode)
  {
    super(owner, astNode);

    resourceMap.put("accelerators", new Integer(RCParserTokenTypes.LITERAL_accelerators));
    resourceMap.put("bitmap", new Integer(RCParserTokenTypes.LITERAL_bitmap));
    resourceMap.put("cursor", new Integer(RCParserTokenTypes.LITERAL_cursor));
    resourceMap.put("dialog", new Integer(RCParserTokenTypes.LITERAL_dialog));
    resourceMap.put("dialogex", new Integer(RCParserTokenTypes.LITERAL_dialogex));
    resourceMap.put("font", new Integer(RCParserTokenTypes.LITERAL_font));
    resourceMap.put("icon", new Integer(RCParserTokenTypes.LITERAL_icon));
    resourceMap.put("menu", new Integer(RCParserTokenTypes.LITERAL_menu));
    resourceMap.put("menuex", new Integer(RCParserTokenTypes.LITERAL_menuex));
    resourceMap.put("messagetable", new Integer(RCParserTokenTypes.LITERAL_messagetable));
    resourceMap.put("rcdata", new Integer(RCParserTokenTypes.LITERAL_rcdata));
    resourceMap.put("versioninfo", new Integer(RCParserTokenTypes.LITERAL_versioninfo));
    resourceMap.put("textinclude", new Integer(RCParserTokenTypes.LITERAL_textinclude));
    resourceMap.put("designinfo", new Integer(RCParserTokenTypes.LITERAL_designinfo));
    resourceMap.put("toolbar", new Integer(RCParserTokenTypes.LITERAL_toolbar));
    resourceMap.put("dlginit", new Integer(RCParserTokenTypes.LITERAL_dlginit));
    resourceMap.put("user defined", new Integer(RCParserTokenTypes.USER_DEFINED));
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "accelerators" 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 convertAcceleratorsEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "accelerators");

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

    // Optional common resource info part.
    if (currentNode != null)
    {
      while (currentNode.getType() == RCParserTokenTypes.COMMON_RESOURCE_INFO)
      {
        convertCommonResourceInfo(currentNode, resourceElement);
        currentNode = currentNode.getNextSibling();
      }
    }

    while (currentNode != null)
    {
      AST acceleratorNode = currentNode.getFirstChild();
      
      Element acceleratorElement = new Element("entry");
      resourceElement.addContent(acceleratorElement);
      processEntryWithEvaluationAsAttribute(acceleratorNode, "key", acceleratorElement);
      acceleratorNode = acceleratorNode.getNextSibling();
      processEntryWithEvaluationAsAttribute(acceleratorNode, "id", acceleratorElement);
      acceleratorNode = acceleratorNode.getNextSibling();
      
      if ((acceleratorNode != null) && (acceleratorNode.getType() == RCParserTokenTypes.ACCELERATOR_TYPE))
      {
        acceleratorElement.setAttribute("type", acceleratorNode.getFirstChild().getText());
        acceleratorNode = acceleratorNode.getNextSibling();
      }

      while (acceleratorNode != null)
      {
        Element extraElement = new Element("option");
        acceleratorElement.addContent(extraElement);
        extraElement.setAttribute("value", acceleratorNode.getFirstChild().getText());
        
        acceleratorNode = acceleratorNode.getNextSibling();
      }
      currentNode = currentNode.getNextSibling();
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a "bitamp" 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 convertBitmapEntry(AST sourceNode, Element resourceElement)
  {
    resourceElement.setAttribute("type", "bitmap");

    AST currentNode = sourceNode.getFirstChild();
    if (currentNode != null)
    {
      if (currentNode.getType() == RCParserTokenTypes.RESOURCE_ATTRIBUTES)
      {
        convertResourceAttributes(resourceElement, currentNode);
        currentNode = currentNode.getNextSibling();
      }
    }
    
    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 set of common dialog resource info (e.g. characteristics, ex-styles etc.) to XML.
   * 
   * @param node The first node in the list to convert.
   * @param element The target element to add the converted stuff to.
   * @return The first node after the common info.
   */
  private AST convertCommonDialogInfo(AST node, Element element)
  {
    AST currentNode = node;
    boolean doBreak = false;
    while (currentNode != null && !doBreak)
    {
      switch (currentNode.getType())
      {
        case RCParserTokenTypes.LITERAL_characteristics:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "characteristics", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_language:
        {
          convertLanguageEntry(currentNode, element);
          break;
        }
        case RCParserTokenTypes.LITERAL_version:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "version", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_caption:
        {
          Element subElement = new Element("caption");
          element.addContent(subElement);
          subElement.setAttribute("value", convertToString(currentNode.getFirstChild()));
          break;
        }
        case RCParserTokenTypes.LITERAL_class:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "class", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_exstyle:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "exstyle", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_menu:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "menu", element);
          break;
        }
        case RCParserTokenTypes.LITERAL_font:
        {
          Element fontElement = new Element("font");
          element.addContent(fontElement);

          AST fontDataNode = currentNode.getFirstChild();
          processEntryWithEvaluation(fontDataNode, "point-size", fontElement);
          
          fontDataNode = fontDataNode.getNextSibling();
          processEntryWithEvaluation(fontDataNode, "type-face", fontElement);
          
          fontDataNode = fontDataNode.getNextSibling();
          if (fontDataNode != null)
          {
            processEntryWithEvaluation(fontDataNode, "weight", fontElement);

            fontDataNode = fontDataNode.getNextSibling();
            processEntryWithEvaluation(fontDataNode, "italic", fontElement);

            fontDataNode = fontDataNode.getNextSibling();
            processEntryWithEvaluation(fontDataNode, "charset", fontElement);
          }
          
          break;
        }
        case RCParserTokenTypes.LITERAL_style:
        {
          processEntryWithEvaluation(currentNode.getFirstChild(), "style", element);
          break;
        }
        default:
        {
          doBreak = true;
        }
      }
      currentNode = currentNode.getNextSibling();
    }
    return currentNode;
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts a common resource info entry to XML.
   * 
   * @param node The entry to convert.
   * @param element The target XML element where to add the converted stuff.
   */
  private void convertCommonResourceInfo(AST node, Element element)
  {
    AST currentNode = node.getFirstChild();
    if (currentNode != null)
    {
      Element infoElement = new Element("common-resource-info");
      element.addContent(infoElement);
      infoElement.setAttribute("name", currentNode.getText());
      if (currentNode.getType() == RCParserTokenTypes.LITERAL_language)
        convertLanguageEntry(currentNode, infoElement);
      else
        convertExpressionList(currentNode.getFirstChild(), infoElement);
    }
  }

  //------------------------------------------------------------------------------------------------
  
  /**
   * Converts the given node, which must be a control node in a dialog, to XML
   * 
   * @param node The node to convert.
   * @param element The target element where to add the result to.
   */
  private void convertConcreteControl(AST node, Element element)
  {
    Element controlElement = new Element("control");
    element.addContent(controlElement);
    controlElement.setAttribute("type", node.getText());
    switch (node.getType())
    {
      case RCParserTokenTypes.LITERAL_ltext:
      case RCParserTokenTypes.LITERAL_rtext:
      case RCParserTokenTypes.LITERAL_ctext:
      case 135: // RCParserTokenTypes.LITERAL_auto3state
      case RCParserTokenTypes.LITERAL_autocheckbox:
      case RCParserTokenTypes.LITERAL_autoradiobutton:
      case RCParserTokenTypes.LITERAL_checkbox:
      case RCParserTokenTypes.LITERAL_pushbox:
      case RCParserTokenTypes.LITERAL_pushbutton:
      case RCParserTokenTypes.LITERAL_defpushbutton:
      case RCParserTokenTypes.LITERAL_radiobutton:
      case 143: // RCParserTokenTypes.LITERAL_state3
      case RCParserTokenTypes.LITERAL_groupbox:
      case RCParserTokenTypes.LITERAL_userbutton:
      case RCParserTokenTypes.LITERAL_icon:
      case RCParserTokenTypes.LITERAL_scrollbar:
      {
        AST child = node.getFirstChild();
        processEntryWithEvaluation(child, "control-text", controlElement);
        child = child.getNextSibling();
        processEntryWithEvaluation(child, "id", controlElement);
        
        break;
      }
      case RCParserTokenTypes.LITERAL_edittext:
      case RCParserTokenTypes.LITERAL_bedit:
      case RCParserTokenTypes.LITERAL_hedit:
      case RCParserTokenTypes.LITERAL_iedit:
      case RCParserTokenTypes.LITERAL_combobox:
      case RCParserTokenTypes.LITERAL_listbox:
      {
        AST child = node.getFirstChild();
        processEntryWithEvaluation(child, "id", controlElement);
        
        break;
      }
    }
    
    // Common control trailing.
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "left", controlElement);
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "top", controlElement);
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "width", controlElement);
    node = node.getNextSibling();
    processEntryWithEvaluation(node, "height", controlElement);
    node = node.getNextSibling();
    if (node != null)
    {
      processEntryWithEvaluation(node, "style", controlElement);
      
      // Everything after this point can only appear in DialogEx resource entries.
      node = node.getNextSibling();
      if (node != null)
      {
        processEntryWithEvaluation(node, "exstyle", controlElement);
        node = node.getNextSibling();
        if (node != null)
        {
          processEntryWithEvaluation(node, "help-id", controlElement);
  
          if (node.getNextSibling() != null)
          {
            Element dataElement = new Element("control-data");

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕+乱码+中文字幕一区| 樱花草国产18久久久久| 精品免费日韩av| 久久精品一区蜜桃臀影院| 国产精品理伦片| 亚洲一区二区黄色| 美女被吸乳得到大胸91| 国产suv一区二区三区88区| 91蜜桃在线观看| 91精品在线观看入口| 国产目拍亚洲精品99久久精品 | 国产乱人伦偷精品视频不卡| www.亚洲免费av| 在线播放中文字幕一区| 欧美韩国日本一区| 在线观看成人免费视频| 欧美一区二区女人| 国产精品美女一区二区三区 | 欧美三级资源在线| 日韩精品中文字幕一区二区三区| 国产嫩草影院久久久久| 亚洲国产精品影院| 国产成人免费视频网站| 欧美日本免费一区二区三区| 国产日韩成人精品| 午夜精品一区二区三区电影天堂| 国产精品亚洲午夜一区二区三区| 欧美性受xxxx黑人xyx性爽| 久久久久久免费网| 午夜精品久久久久久久99水蜜桃| 国产成人福利片| 欧美日韩精品一区二区三区四区 | 国产福利一区二区三区| 欧美日韩综合一区| 中文字幕一区在线| 国产一区二区三区在线观看精品| 在线观看日产精品| 国产欧美日产一区| 蜜臀91精品一区二区三区| 91一区一区三区| 国产日本一区二区| 麻豆久久久久久| 欧美日韩精品一区二区三区四区| 亚洲视频一二三| 国产.欧美.日韩| 337p日本欧洲亚洲大胆色噜噜| 亚洲精品成人在线| 粉嫩aⅴ一区二区三区四区五区 | 精品亚洲porn| 欧美日韩国产色站一区二区三区| 国产精品成人免费在线| 国产一区二区三区av电影 | 国产乱子轮精品视频| 欧美一级生活片| 一区二区不卡在线播放| 99精品视频在线观看免费| 久久久久久久久久看片| 精品一区免费av| 日韩美一区二区三区| 日韩影视精彩在线| 欧美精品第1页| 亚洲成人福利片| 欧美亚日韩国产aⅴ精品中极品| 亚洲色欲色欲www| 91亚洲精品久久久蜜桃网站| 国产精品情趣视频| 处破女av一区二区| 中文字幕欧美区| 成人在线一区二区三区| 国产精品欧美一区二区三区| 国产不卡高清在线观看视频| 国产欧美一区二区三区在线看蜜臀 | 精彩视频一区二区| 精品国产乱码久久久久久图片| 日本不卡免费在线视频| 欧美一级片在线| 奇米色一区二区三区四区| 在线综合亚洲欧美在线视频| 日韩和的一区二区| 7878成人国产在线观看| 日韩av一区二区三区四区| 欧美日韩国产成人在线免费| 爽好久久久欧美精品| 制服丝袜在线91| 久久精品72免费观看| 精品黑人一区二区三区久久| 久草这里只有精品视频| 久久久久99精品国产片| 成人黄色免费短视频| 亚洲欧美日韩中文播放| 91成人国产精品| 视频一区二区欧美| 日韩欧美国产系列| 国产精品99久久久久久似苏梦涵| 国产精品区一区二区三区| www.日韩av| 日韩欧美一区电影| 亚洲精品在线网站| 精品国精品国产| 国产日韩三级在线| 精品久久久三级丝袜| 日韩毛片在线免费观看| 欧美性生活影院| 久久精品国产99| 国产精品国产三级国产普通话99 | 精品国免费一区二区三区| 国产精品综合一区二区三区| 国产精品嫩草久久久久| 欧美在线免费播放| 狠狠色狠狠色综合系列| 国产精品久久久久毛片软件| 日本道免费精品一区二区三区| 青青草一区二区三区| 久久久www免费人成精品| 97精品久久久午夜一区二区三区| 视频精品一区二区| 国产日产欧美一区| 91国偷自产一区二区使用方法| 日韩av电影免费观看高清完整版| 国产日韩欧美电影| 欧美日韩国产综合一区二区三区| 国产乱码精品一区二区三| 亚洲激情中文1区| 国产高清亚洲一区| 国产精品性做久久久久久| 日韩一区二区三区电影| 麻豆国产欧美日韩综合精品二区| 国产精品久线在线观看| 欧美精品乱码久久久久久按摩| 国产一区二区三区免费观看| 一区二区三区欧美视频| 精品乱人伦小说| 在线观看三级视频欧美| 高清shemale亚洲人妖| 午夜欧美在线一二页| 国产精品女同一区二区三区| 在线播放中文一区| 91亚洲男人天堂| 国内精品国产三级国产a久久| 亚洲一区二区在线观看视频| 国产蜜臀av在线一区二区三区| 欧美精品在线视频| 成人av网站免费| 看电视剧不卡顿的网站| 一区二区三区在线免费视频| 久久精品免费在线观看| 欧美精品电影在线播放| 91在线观看高清| 粉嫩13p一区二区三区| 久久国产精品第一页| 亚洲成人激情社区| 亚洲免费观看高清完整版在线观看熊| 国产亚洲成年网址在线观看| 777亚洲妇女| 精品视频在线免费看| 99久久伊人久久99| 国产综合色在线视频区| 秋霞午夜av一区二区三区| 亚洲国产精品综合小说图片区| 中文字幕亚洲不卡| 国产精品久久久久四虎| 日本一区二区视频在线| 久久亚洲一区二区三区四区| 欧美精品亚洲一区二区在线播放| 91久久奴性调教| 色一情一乱一乱一91av| 成人美女视频在线看| 国产主播一区二区三区| 九九视频精品免费| 日本aⅴ亚洲精品中文乱码| 一区二区三区久久久| 亚洲视频综合在线| 最新热久久免费视频| 国产精品久久久久久久久动漫 | 视频一区中文字幕国产| 亚洲激情图片一区| 亚洲视频狠狠干| 亚洲精品成a人| 亚洲精品欧美二区三区中文字幕| **性色生活片久久毛片| 亚洲图片你懂的| 中文字幕综合网| 一区二区国产盗摄色噜噜| 亚洲精品免费播放| 一区二区三区在线影院| 亚洲国产视频直播| 午夜电影一区二区三区| 日韩高清在线一区| 免费在线看一区| 国产呦萝稀缺另类资源| 国产美女精品人人做人人爽| 国产一区二区福利| 国产白丝精品91爽爽久久 | 亚洲人成网站色在线观看| 亚洲欧美一区二区三区久本道91 | 日本精品免费观看高清观看| 91精品91久久久中77777| 欧美亚洲自拍偷拍| 欧美精品色综合| 日韩欧美一卡二卡|