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

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

?? psvxml.pas

?? PIC 單片機 PAS SOURCE CODE SAMPLES
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************}
{               RichEdit Syntax HighLight               }
{                     version 3.0                       }
{ Author:                                               }
{ Ajay Tandon                                           }
{ drajaytandon@hotmail.com                              }
{                                                       }
{*******************************************************}
{-------------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/

Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
the specific language governing rights and limitations under the License.

The Original Code is: SynHighlighterXML.pas, released 2000-11-20.
The Original Code is based on the SynHighlighterHTML.pas file from the
mwEdit component suite by Martin Waldenburg and other developers, the Initial
Author of this file is Jeff Rafter.
All Rights Reserved.

Contributors to the SynEdit and mwEdit projects are listed in the
Contributors.txt file.

Alternatively, the contents of this file may be used under the terms of the
GNU General Public License Version 2 or later (the "GPL"), in which case
the provisions of the GPL are applicable instead of those above.
If you wish to allow use of your version of this file only under the terms
of the GPL and not to allow others to use your version of this file
under the MPL, indicate your decision by deleting the provisions above and
replace them with the notice and other provisions required by the GPL.
If you do not delete the provisions above, a recipient may use your version
of this file under either the MPL or the GPL.

$Id: SynHighlighterXML.pas,v 1.0 2000/11/20 00:00:00 mghie Exp $

You may retrieve the latest version of this file at the SynEdit home page,
located at http://SynEdit.SourceForge.net

History:
-------------------------------------------------------------------------------
2000-11-30 Removed mHashTable and MakeIdentTable per Michael Hieke

Known Issues:
-------------------------------------------------------------------------------}
//Nothing is really constrained (properly) to valid name chars
//Entity Refs are not constrained to valid name chars
//Support for "Combining Chars and Extender Chars" in names are lacking
//The internal DTD is not parsed (and not handled correctly)

{
@abstract(Provides an XML highlighter for SynEdit)
@author(Jeff Rafter-- Phil 4:13, based on SynHighlighterHTML by Hideo Koiso, converted to SynEdit by Michael Hieke)
@created(2000-11-17)
@lastmod(2000-11-17)
The SynHighlighterXML unit provides SynEdit with an XML highlighter.

}
unit psvXML;

interface


uses
  SysUtils, Windows, Messages, Classes, Controls, Graphics, psvRichSyntax;

type

  TtkTokenKind = (
    tkNull,
    tkElement,
    tkAttribute,
    tkText,
    tkCDATA,
    tkEntityRef,
    tkProcessingInstruction,
    tkComment,
    tkQuoteAttrValue,
    tkAposAttrValue,
    tkQuoteEntityRef,
    tkAposEntityRef,
    tkSymbol,
    tkSpace,
    tkEqual,
    tknsAttribute,
    tknsQuoteAttrValue,
    tknsAposAttrValue,
    tknsQuoteEntityRef,
    tknsAposEntityRef,
    tknsEqual,

    //These are unused at the moment
    tkDocType
    {tkDocTypeElement,
    tkDocTypeAttribute,
    tkDocTypeQuoteAttrValue,
    tkDocTypeAposAttrValue,
    tkDocTypeQuoteEntityRef,
    tkDocTypeAposEntityRef,
    tkDocTypeEqual}
  );

  TRangeState = (
    rsElement,
    rsEqual,
    rsAttribute,
    rsQuoteAttrValue,
    rsAposAttrValue,
    rsQuoteEntityRef,
    rsAPosEntityRef,
    rsText,
    rsCDATA,
    rsEntityRef,
    rsProcessingInstruction,
    rsComment,
    rsnsEqual,
    rsnsQuoteAttrValue,
    rsnsAposAttrValue,
    rsnsQuoteEntityRef,
    rsnsAPosEntityRef,

    //These are unused at the moment
    rsDocType
    {rsDocTypeElement,
    rsDocTypeAttribute,
    rsDocTypeQuoteAttrValue,
    rsDocTypeAposAttrValue,
    rsDocTypeQuoteEntityRef,
    rsDocTypeAposEntityRef,
    rsDocTypeEqual}
  );

  TProcTableProc = procedure of object;

  TpsvXMLRTF = class(TpsvRTFSyntax)
  private
    fRange: TRangeState;
    fLine: PChar;
    Run: Longint;
    fTokenPos: Integer;
    fTokenID: TtkTokenKind;
    fLineNumber: Integer;
    fProcTable: array[#0..#255] of TProcTableProc;
    procedure NullProc;
    procedure CarriageReturnProc;
    procedure LineFeedProc;
    procedure SpaceProc;
    procedure LessThanProc;
    procedure GreaterThanProc;
    procedure CommentProc;
    procedure ProcessingInstructionProc;
    procedure DocTypeProc;
    procedure CDATAProc;
    procedure TextProc;
    procedure ElementProc;
    procedure AttributeProc;
    procedure QAttributeValueProc;
    procedure AAttributeValueProc;
    procedure EqualProc;
    procedure IdentProc;
    procedure MakeMethodTables;
    function NextTokenIs(T: String): Boolean;
    procedure EntityRefProc;
    procedure QEntityRefProc;
    procedure AEntityRefProc;
  protected
    function GetEol: Boolean; override;
    function GetRange: Pointer;
    function GetTokenID: TtkTokenKind;
    procedure SetLine(NewValue: string; LineNumber:Integer); override;
    function GetToken: string; override;
    function GetTokenAttribute: integer; override;
    function GetTokenKind: integer;
    function GetTokenPos: Integer;
    procedure Next; override;
    procedure SetRange(Value: Pointer);
    procedure ReSetRange;
    procedure PrepareToken(var AToken : string); override;
    function  PrepareOutput(Attr: integer; AToken : string): string; override;
  public
    constructor Create;  override;
    procedure SetupDefaultColors; override;
  end;

implementation

const
  //The following constants can be added to SynEditStrConst

  SYNS_FilterXML                =  'XML Document (*.xml,*.xsd,*.xsl,*.xslt)|*.xml;*.xsd;*.xsl;*.xslt';
  SYNS_LangXML                  =  'XML Document';

  NameChars : set of char = ['0'..'9', 'a'..'z', 'A'..'Z', '_', '.', ':', '-'];

constructor TpsvXMLRTF.Create;
begin
  inherited Create;
  inherited Create;
  MakeMethodTables;
  CreateColorTable([clGreen,    //1
                    clMaroon,   //2
                    clBlack,    //3
                    clBlue,     //4
                    clBlack,    //5
                    clGreen,    //6
                    clBlue,     //7
                    clBlack,    //8
                    clRed,      //9
                    clBlack,    //10
                    clBlack]);  //11
  fRange := rsText;
end;

procedure TpsvXMLRTF.MakeMethodTables;
var
  i: Char;
begin
  for i:= #0 To #255 do begin
    case i of
    #0:
      begin
        fProcTable[i] := NullProc;
      end;
    #10:
      begin
        fProcTable[i] := LineFeedProc;
      end;
    #13:
      begin
        fProcTable[i] := CarriageReturnProc;
      end;
    #1..#9, #11, #12, #14..#32:
      begin
        fProcTable[i] := SpaceProc;
      end;
    '<':
      begin
        fProcTable[i] := LessThanProc;
      end;
    '>':
      begin
        fProcTable[i] := GreaterThanProc;
      end;
    else
      fProcTable[i] := IdentProc;
    end;
  end;
end;

procedure TpsvXMLRTF.SetLine(NewValue: string; LineNumber:Integer);
begin
  fLine := PChar(NewValue);
  Run := 0;
  fLineNumber := LineNumber;
  Next;
end;

procedure TpsvXMLRTF.NullProc;
begin
  fTokenID := tkNull;
end;

procedure TpsvXMLRTF.CarriageReturnProc;
begin
  fTokenID := tkSpace;
  Inc(Run);
  if fLine[Run] = #10 then Inc(Run);
end;

procedure TpsvXMLRTF.LineFeedProc;
begin
  fTokenID := tkSpace;
  Inc(Run);
end;

procedure TpsvXMLRTF.SpaceProc;
begin
  Inc(Run);
  fTokenID := tkSpace;
  while fLine[Run] <= #32 do begin
    if fLine[Run] in [#0, #9, #10, #13] then break;
    Inc(Run);
  end;
end;

procedure TpsvXMLRTF.LessThanProc;
begin
  Inc(Run);
  if (fLine[Run] = '/') then
    Inc(Run);

  if (fLine[Run] = '!') then
  begin
    if NextTokenIs('--') then begin
      fTokenID := tkSymbol;
      fRange := rsComment;
      Inc(Run, 3);
    end else if NextTokenIs('DOCTYPE') then begin
      fTokenID := tkDocType;
      fRange := rsDocType;
      Inc(Run, 7);
    end else if NextTokenIs('[CDATA[') then begin
      fTokenID := tkCDATA;
      fRange := rsCDATA;
      Inc(Run, 7);
    end else begin
      fTokenID := tkSymbol;
      fRange := rsElement;
      Inc(Run);
    end;
  end else if fLine[Run]= '?' then begin
    fTokenID := tkProcessingInstruction;
    fRange := rsProcessingInstruction;
    Inc(Run);
  end else begin
    fTokenID := tkSymbol;
    fRange := rsElement;
  end;
end;

procedure TpsvXMLRTF.GreaterThanProc;
begin
  fTokenId := tkSymbol;
  fRange:= rsText;
  Inc(Run);
end;

procedure TpsvXMLRTF.CommentProc;
begin
  if (fLine[Run] = '-') and (fLine[Run + 1] = '-') and (fLine[Run + 2] = '>')
  then begin
    fTokenID := tkSymbol;
    fRange:= rsText;
    Inc(Run, 3);
    Exit;
  end;

  fTokenID := tkComment;

  if (fLine[Run] In [#0, #10, #13]) then begin
    fProcTable[fLine[Run]];
    Exit;
  end;

  while not (fLine[Run] in [#0, #10, #13]) do begin
    if (fLine[Run] = '-') and (fLine[Run + 1] = '-') and (fLine[Run + 2] = '>')
    then begin
      fRange := rsComment;
      break;
    end;
    Inc(Run);
  end;
end;

procedure TpsvXMLRTF.ProcessingInstructionProc;
begin
  fTokenID := tkProcessingInstruction;
  if (fLine[Run] In [#0, #10, #13]) then begin
    fProcTable[fLine[Run]];
    Exit;
  end;

  while not (fLine[Run] in [#0, #10, #13]) do begin
    if (fLine[Run] = '>') and (fLine[Run - 1] = '?')
    then begin
      fRange := rsText;
      Inc(Run);
      break;
    end;
    Inc(Run);
  end;
end;

procedure TpsvXMLRTF.DocTypeProc;
begin
  fTokenID := tkDocType;
  fRange := rsDocType;

  if (fLine[Run] In [#0, #10, #13]) then begin
    fProcTable[fLine[Run]];
    Exit;
  end;

  while not (fLine[Run] in [#0, #10, #13]) do begin
    if (fLine[Run - 1] = ']') and (fLine[Run] = '>')then begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲情趣在线观看| 中文字幕精品—区二区四季| 亚洲午夜在线视频| 欧美日韩久久久一区| 亚洲国产精品久久艾草纯爱| 欧美日韩一级视频| 另类欧美日韩国产在线| 欧美成人性战久久| 成人性生交大片免费看在线播放| 久久精品亚洲国产奇米99| 国产成人免费av在线| 亚洲欧美日韩小说| 日韩一区二区三区在线观看| 国产一区二区精品久久99| 国产精品美女久久久久av爽李琼| 色天天综合色天天久久| 欧美aa在线视频| 欧美国产综合一区二区| 欧美天天综合网| 久久国内精品自在自线400部| 日本一区二区在线不卡| 欧美日韩一区在线| 成人午夜视频福利| 亚洲福利视频三区| 欧美激情一区二区| 欧美精品久久99久久在免费线| 国产麻豆9l精品三级站| 亚洲一区二区三区影院| 欧美精品一区二区在线播放| 色婷婷av一区二区三区软件| 精品在线一区二区| 亚洲午夜成aⅴ人片| 久久久久99精品一区| 欧美日韩国产综合一区二区 | 欧美一区二区精品| 不卡在线观看av| 免费成人在线网站| 亚洲一二三区视频在线观看| 国产亚洲精品免费| 日韩欧美国产一区二区在线播放| 91免费观看视频| 国产乱子轮精品视频| 亚洲一区电影777| 国产精品高潮久久久久无| 欧美一区二区视频在线观看2022| 91色.com| av在线这里只有精品| 激情都市一区二区| 日韩福利视频导航| 亚洲男人都懂的| 国产精品麻豆久久久| 久久夜色精品国产噜噜av| 精品视频资源站| 色哟哟一区二区在线观看| 国产91色综合久久免费分享| 久久国产尿小便嘘嘘尿| 日欧美一区二区| 亚洲电影视频在线| 亚洲一区二区三区在线| 中文字幕在线播放不卡一区| 国产色综合久久| 久久久不卡网国产精品一区| 欧美一二三区精品| 欧美一区二区观看视频| 717成人午夜免费福利电影| 欧美亚洲一区二区在线观看| 91浏览器入口在线观看| av电影在线观看一区| 国产不卡一区视频| 粉嫩一区二区三区性色av| 国产成人在线影院| 成人精品免费视频| 白白色 亚洲乱淫| 成人免费不卡视频| 91蜜桃在线观看| 91久久精品国产91性色tv| 91免费视频观看| 91国模大尺度私拍在线视频| 91久久久免费一区二区| 欧美三级电影在线看| 欧美久久久影院| 日韩一区二区在线观看视频 | 久久日一线二线三线suv| 久久婷婷成人综合色| 久久精品视频免费观看| 国产精品视频免费看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产成人在线看| 成人一区在线观看| 欧美亚洲一区三区| 日韩一区二区三区在线| 久久久精品综合| 中文一区二区在线观看| 国产精品久久久久久福利一牛影视| 中文字幕五月欧美| 天堂资源在线中文精品| 捆绑变态av一区二区三区| 国产成人午夜高潮毛片| 一本色道久久加勒比精品 | 色天使久久综合网天天| 欧美影视一区二区三区| 日韩片之四级片| 国产欧美一区二区在线| 一卡二卡三卡日韩欧美| 青青国产91久久久久久 | 亚洲人快播电影网| 日本在线播放一区二区三区| 极品少妇一区二区三区精品视频| 成人成人成人在线视频| 色猫猫国产区一区二在线视频| 欧美日韩另类一区| 国产日韩精品一区二区三区| 一区二区三区在线视频免费观看| 亚洲成人福利片| 国产999精品久久久久久| 欧美日韩精品一区二区三区蜜桃| 2023国产一二三区日本精品2022| 中文字幕亚洲电影| 狠狠色丁香九九婷婷综合五月| 91麻豆蜜桃一区二区三区| 91精品国产黑色紧身裤美女| 国产精品拍天天在线| 五月天婷婷综合| 从欧美一区二区三区| 欧美一区二区精品在线| 一个色在线综合| 国产伦理精品不卡| 欧美精品日日鲁夜夜添| 亚洲色图在线看| 国产精品69久久久久水密桃| 欧美精品在欧美一区二区少妇| 国产精品天干天干在观线| 美国十次综合导航| 精品视频一区三区九区| 国产精品理论片在线观看| 久久综合综合久久综合| 欧美三级电影一区| 亚洲日本va午夜在线影院| 国产激情91久久精品导航| 欧美一区二区三区喷汁尤物| 一区二区三区视频在线看| 国产一区二区精品在线观看| 日韩一区二区在线看片| 肉肉av福利一精品导航| 91豆麻精品91久久久久久| 国产精品的网站| 国产v综合v亚洲欧| 久久奇米777| 国产在线播放一区三区四| 91精品国产福利| 午夜精品久久久久| 欧美日韩精品一区二区| 尤物在线观看一区| 色婷婷精品大在线视频| 中文字幕一区在线观看| 成人福利视频网站| 亚洲国产成人午夜在线一区| 国产成人精品午夜视频免费| 久久午夜电影网| 国产美女娇喘av呻吟久久| 精品欧美一区二区在线观看| 麻豆成人综合网| 精品国产露脸精彩对白| 久久精品72免费观看| 精品噜噜噜噜久久久久久久久试看 | 午夜日韩在线电影| 欧美精选午夜久久久乱码6080| 午夜精品久久一牛影视| 在线观看视频91| 亚洲国产成人高清精品| 欧美另类变人与禽xxxxx| 视频一区中文字幕国产| 欧美一区二区在线免费观看| 免播放器亚洲一区| 久久只精品国产| 国产suv精品一区二区6| 国产精品美女久久久久aⅴ | 日本vs亚洲vs韩国一区三区 | 性做久久久久久免费观看| 欧美日韩高清在线| 麻豆91在线观看| 国产日韩欧美一区二区三区综合 | 久久精品国产一区二区| 日韩久久久久久| 丁香激情综合国产| 又紧又大又爽精品一区二区| 欧美精品vⅰdeose4hd| 久久99精品久久久久久久久久久久| 日韩色视频在线观看| 国产精品一区二区黑丝| 亚洲欧洲日产国产综合网| 欧美色精品在线视频| 免费观看在线色综合| 国产视频一区二区三区在线观看| 暴力调教一区二区三区| 午夜精品aaa| 亚洲国产精品二十页| 欧美在线色视频| 国产原创一区二区三区| 亚洲精品福利视频网站|