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

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

?? synhighlighterinno.pas

?? 源代碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{-------------------------------------------------------------------------------
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: SynHighlighterInno.pas, released 2000-05-01.
The Initial Author of this file is Satya.
Portions created by Satya are Copyright 2000 Satya.
All Rights Reserved.

Contributors to the SynEdit project 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.

$jrsoftware: issrc/Components/SynHighlighterInno.pas,v 1.44 2004/11/07 20:25:58 jr Exp $

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

Known Issues:
-------------------------------------------------------------------------------}
{
@abstract(Provides an Inno script file highlighter for SynEdit)
@author(Satya)
@created(2000-05-01)
@lastmod(2001-01-23)
The SynHighlighterInno unit provides an Inno script file highlighter for SynEdit.
Check out http://www.jrsoftware.org for the free Inno Setup program,
and http://isx.wintax.nl/ for My Inno Setup Extensions.
}
unit SynHighlighterInno;

{$I SynEdit.inc}

interface

uses
  SysUtils, Classes,
  {$IFDEF SYN_CLX}
  Qt, QControls, QGraphics,
  {$ELSE}
  Windows, Messages, Controls, Graphics, Registry,
  {$ENDIF}
  SynEditTypes, SynEditHighlighter, SynHighlighterHashEntries;

type
  TtkTokenKind = (tkComment, tkConstant, tkIdentifier, tkKey, tkKeyOrParameter, //mh 2001-02-07
    tkNull, tkNumber, tkParameter, tkSection, tkSpace, tkString, tkSymbol,
    tkUnknown, tkDirective);

  TProcTableProc = procedure of object;

  TSynInnoSyn = class(TSynCustomHighlighter)
  private
    fLine: PChar;
    fLineNumber: integer;
    fProcTable: array[#0..#255] of TProcTableProc;
    Run: LongInt;
    fStringLen: Integer;
    fToIdent: PChar;
    fTokenPos: Integer;
    fTokenID: TtkTokenKind;
    fConstantAttri: TSynHighlighterAttributes;
    fCommentAttri: TSynHighlighterAttributes;
    fSectionAttri: TSynHighlighterAttributes;
    fParamAttri: TSynHighlighterAttributes;
    fIdentifierAttri: TSynHighlighterAttributes;
    fInvalidAttri: TSynHighlighterAttributes;
    fKeyAttri: TSynHighlighterAttributes;
    fNumberAttri: TSynHighlighterAttributes;
    fSpaceAttri: TSynHighlighterAttributes;
    fStringAttri: TSynHighlighterAttributes;
    fSymbolAttri: TSynHighlighterAttributes;
    fDirectiveAttri: TSynHighlighterAttributes;
    fKeywords: TSynHashEntryList;
    function KeyHash(ToHash: PChar): integer;
    function KeyComp(const aKey: string): Boolean;
    procedure SymbolProc;
    procedure CRProc;
    procedure IdentProc;
    procedure LFProc;
    procedure NullProc;
    procedure NumberProc;
    procedure SectionProc;
    procedure SpaceProc;
    procedure EqualProc;
    procedure ConstantProc;
    procedure SemiColonProc;
    procedure StringProc;
    procedure UnknownProc;

    procedure DoAddKeyword(AKeyword: string; AKind: integer);
    function IdentKind(MayBe: PChar): TtkTokenKind;
    procedure MakeMethodTables;
  protected
    function GetIdentChars: TSynIdentChars; override;
  public
    {$IFNDEF SYN_CPPB_1} class {$ENDIF}
    function GetLanguageName: string; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes;
      override;
    function GetEol: Boolean; override;
    function GetToken: string; override;
    function GetTokenAttribute: TSynHighlighterAttributes; override;
    function GetTokenID: TtkTokenKind;
    function GetTokenKind: integer; override;
    function GetTokenPos: Integer; override;
    procedure Next; override;
    procedure SetLine(NewValue: string; LineNumber:Integer); override;
  published
    property ConstantAttri: TSynHighlighterAttributes read fConstantAttri
      write fConstantAttri;
    property CommentAttri: TSynHighlighterAttributes read fCommentAttri
      write fCommentAttri;
    property DirectiveAttri: TSynHighlighterAttributes read fDirectiveAttri
      write fDirectiveAttri;
    property IdentifierAttri: TSynHighlighterAttributes read fIdentifierAttri
      write fIdentifierAttri;
    property InvalidAttri: TSynHighlighterAttributes read fInvalidAttri
      write fInvalidAttri;
    property KeyAttri: TSynHighlighterAttributes read fKeyAttri write fKeyAttri;
    property NumberAttri: TSynHighlighterAttributes read fNumberAttri
      write fNumberAttri;
    property ParameterAttri: TSynHighlighterAttributes read fParamAttri
      write fParamAttri;
    property SectionAttri: TSynHighlighterAttributes read fSectionAttri
      write fSectionAttri;
    property SpaceAttri: TSynHighlighterAttributes read fSpaceAttri
      write fSpaceAttri;
    property StringAttri: TSynHighlighterAttributes read fStringAttri
      write fStringAttri;
    property SymbolAttri: TSynHighlighterAttributes read fSymbolAttri
      write fSymbolAttri;
  end;

implementation

uses
  SynEditStrConst;

var
  Identifiers: array[#0..#255] of ByteBool;
  mHashTable: array[#0..#255] of Integer;

const
  {Note: new 'Section names' and the new 'Constants' need not be added
         as they are highlighted automatically}

  {Ref:  Keywords and Parameters are updated as they last appeared in
         Inno Setup / ISX version 1.3.26}

{begin}                                                                         //satya 2001-01-23
  Keywords: string =
    'AdminPrivilegesRequired,AfterInstall,AllowCancelDuringInstall,AllowNoIcons,AllowRootDirectory,AllowUNCPath,' +
    'AlwaysRestart,AlwaysShowComponentsList,' +
    'AlwaysShowDirOnReadyPage,AlwaysShowGroupOnReadyPage,' +
    'AlwaysUsePersonalGroup,AppComments,AppContact,AppCopyright,AppendDefaultDirName,' +
    'AppendDefaultGroupName,AppId,AppModifyPath,AppMutex,AppName,AppPublisher,' +
    'AppPublisherURL,AppReadmeFile,AppSupportURL,AppUpdatesURL,AppVerName,AppVersion,' +
    'Attribs,BackColor,BackColor2,BackColorDirection,BackSolid,BeforeInstall,' +
    'ChangesAssociations,ChangesEnvironment,Check,CodeFile,Comment,Components,Compression,CopyMode,'+
    'CreateAppDir,CreateUninstallRegKey,DefaultDirName,DefaultGroupName,' +
    'DefaultUserInfoName,DefaultUserInfoOrg,DefaultUserInfoSerial,' +
    'Description,DestDir,DestName,DirExistsWarning,' +
    'DisableDirPage,DisableFinishedPage,' +
    'DisableProgramGroupPage,DisableReadyMemo,DisableReadyPage,' +
    'DisableStartupPrompt,DiskClusterSize,DiskSliceSize,DiskSpaceMBLabel,' +
    'DiskSpanning,DontMergeDuplicateFiles,EnableDirDoesntExistWarning,Encryption,' +
    'Excludes,ExtraDiskSpaceRequired,Filename,Flags,FlatComponentsList,FontInstall,' +
    'GroupDescription,HotKey,IconFilename,IconIndex,InfoAfterFile,InfoBeforeFile,' +
    'InternalCompressLevel,Key,LanguageDetectionMethod,Languages,' +
    'LicenseFile,MergeDuplicateFiles,MessagesFile,MinVersion,Name,' +
    'OnlyBelowVersion,OutputBaseFilename,OutputManifestFile,OutputDir,' +
    'Parameters,Password,Permissions,PrivilegesRequired,ReserveBytes,' +
    'RestartIfNeededByRun,Root,RunOnceId,Section,SetupIconFile,' +
    'ShowComponentSizes,ShowLanguageDialog,ShowTasksTreeLines,SlicesPerDisk,' +
    'SolidCompression,Source,SourceDir,StatusMsg,Subkey,Tasks, ' +
    'TimeStampRounding,TimeStampsInUTC,TouchDate,TouchTime,Type,Types,' +
    'UninstallDisplayIcon,UninstallDisplayName,UninstallFilesDir,UninstallIconFile,' +
    'UninstallLogMode,UninstallRestartComputer,UninstallStyle,Uninstallable,' +
    'UpdateUninstallLogAppName,UsePreviousAppDir,UsePreviousGroup,' +
    'UsePreviousTasks,UsePreviousSetupType,UsePreviousUserInfo,' +
    'UserInfoPage,UseSetupLdr,ValueData,ValueName,ValueType,' +
    'VersionInfoVersion,VersionInfoCompany,VersionInfoDescription,VersionInfoTextVersion,' +
    'WindowResizable,WindowShowCaption,WindowStartMaximized,' +
    'WindowVisible,WizardImageBackColor,WizardImageFile,WizardImageStretch,WizardSmallImageBackColor,' +
    'WizardSmallImageFile,WizardStyle,WorkingDir';

  Parameters: string =
    'HKCC,HKCR,HKCU,HKLM,HKU,alwaysoverwrite,alwaysskipifsameorolder,append,' +
    'binary,classic,closeonexit,comparetimestamp,confirmoverwrite,' +
    'createkeyifdoesntexist,createonlyiffileexists,createvalueifdoesntexist,' +
    'deleteafterinstall,deletekey,deletevalue,dirifempty,dontcloseonexit,' +
    'dontcopy,dontcreatekey,disablenouninstallwarning,dword,exclusive,expandsz,' +
    'external,files,filesandordirs,fixed,fontisnttruetype,ignoreversion,iscustom,isreadme,' +
    'modern,multisz,new,noerror,none,normal,nowait,onlyifdestfileexists,' +
    'onlyifdoesntexist,onlyifnewer,overwrite,overwritereadonly,postinstall,' +
    'preservestringtype,promptifolder,regserver,regtypelib,restart,restartreplace,' +
    'runhidden,runmaximized,runminimized,sharedfile,shellexec,showcheckbox,' +
    'skipifnotsilent,skipifsilent,silent,skipifdoesntexist,' +
    'skipifsourcedoesntexist,sortfilesbyextension,unchecked,uninsalwaysuninstall,' +
    'uninsclearvalue,uninsdeleteentry,uninsdeletekey,uninsdeletekeyifempty,' +
    'uninsdeletesection,uninsdeletesectionifempty,uninsdeletevalue,' +
    'uninsneveruninstall,useapppaths,verysilent,waituntilidle';
{end}                                                                           //satya 2001-01-23

  KeyOrParameter: string = 'string';                                            //mh 2001-02-07

procedure MakeIdentTable;
var
  c: char;
begin
  FillChar(Identifiers, SizeOf(Identifiers), 0);
  for c := 'a' to 'z' do
    Identifiers[c] := TRUE;
  for c := 'A' to 'Z' do
    Identifiers[c] := TRUE;
  for c := '0' to '9' do
    Identifiers[c] := TRUE;
  Identifiers['_'] := TRUE;

  FillChar(mHashTable, SizeOf(mHashTable), 0);
  mHashTable['_'] := 1;
  for c := 'a' to 'z' do
    mHashTable[c] := 2 + Ord(c) - Ord('a');
  for c := 'A' to 'Z' do
    mHashTable[c] := 2 + Ord(c) - Ord('A');
end;

function TSynInnoSyn.KeyHash(ToHash: PChar): integer;
begin
  Result := 0;
  while Identifiers[ToHash^] do begin
{$IFOPT Q-}
    Result := 7 * Result + mHashTable[ToHash^];
{$ELSE}
    Result := (7 * Result + mHashTable[ToHash^]) and $FFFFFF;
{$ENDIF}
    inc(ToHash);
  end;
  Result := Result and $1FF; // 511
  fStringLen := ToHash - fToIdent;
end;

function TSynInnoSyn.KeyComp(const aKey: string): Boolean;
var
  i: integer;
  pKey1, pKey2: PChar;
begin
  pKey1 := fToIdent;
  // Note: fStringLen is always > 0 !
  pKey2 := pointer(aKey);
  for i := 1 to fStringLen do
  begin
    if mHashTable[pKey1^] <> mHashTable[pKey2^] then
    begin
      Result := FALSE;
      exit;
    end;
    Inc(pKey1);
    Inc(pKey2);
  end;
  Result := TRUE;
end;

function TSynInnoSyn.IdentKind(MayBe: PChar): TtkTokenKind;
var
  Entry: TSynHashEntry;
begin
  fToIdent := MayBe;
  Entry := fKeywords[KeyHash(MayBe)];
  while Assigned(Entry) do begin
    if Entry.KeywordLen > fStringLen then
      break
    else if Entry.KeywordLen = fStringLen then
      if KeyComp(Entry.Keyword) then begin
        Result := TtkTokenKind(Entry.Kind);
        exit;
      end;
    Entry := Entry.Next;
  end;
  Result := tkIdentifier;
end;

procedure TSynInnoSyn.MakeMethodTables;
var
  I: Char;
begin
  for I := #0 to #255 do
    case I of
      #13: fProcTable[I] := CRProc;
      'A'..'Z', 'a'..'z', '_': fProcTable[I] := IdentProc;
      #10: fProcTable[I] := LFProc;
      #0: fProcTable[I] := NullProc;
      '0'..'9': fProcTable[I] := NumberProc;
      #1..#9, #11, #12, #14..#32: fProcTable[I] := SpaceProc;
      #59 {';'}: fProcTable[I] := SemiColonProc;
      #61 {=} : fProcTable[I] := EqualProc;
      #34: fProcTable[I] := StringProc;
      '#', ':', ',', '(', ')': fProcTable[I] := SymbolProc;
      '{': fProcTable[I] := ConstantProc;
      #91 {[} : fProcTable[i] := SectionProc;
    else
      fProcTable[I] := UnknownProc;
    end;
end;

constructor TSynInnoSyn.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fKeywords := TSynHashEntryList.Create;

  fCommentAttri := TSynHighlighterAttributes.Create(SYNS_AttrComment);
  fCommentAttri.Style := [fsItalic];
  fCommentAttri.Foreground := clGray;
  AddAttribute(fCommentAttri);

  fIdentifierAttri := TSynHighlighterAttributes.Create(SYNS_AttrIdentifier);
  AddAttribute(fIdentifierAttri);

  fInvalidAttri := TSynHighlighterAttributes.Create(SYNS_AttrIllegalChar);
  AddAttribute(fInvalidAttri);

  fKeyAttri := TSynHighlighterAttributes.Create(SYNS_AttrReservedWord);
  fKeyAttri.Style := [fsBold];
  fKeyAttri.Foreground := clNavy;
  AddAttribute(fKeyAttri);

  fNumberAttri := TSynHighlighterAttributes.Create(SYNS_AttrNumber);
  fNumberAttri.Foreground := clMaroon;
  AddAttribute(fNumberAttri);

  fSpaceAttri := TSynHighlighterAttributes.Create(SYNS_AttrSpace);
  AddAttribute(fSpaceAttri);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
911精品国产一区二区在线| 国产午夜精品久久久久久免费视| 欧美丰满美乳xxx高潮www| 久久综合久久99| 亚洲国产精品久久一线不卡| 国产精品亚洲一区二区三区妖精| 欧美日精品一区视频| 久久久99久久精品欧美| 亚洲国产日产av| 99精品视频在线观看免费| 精品处破学生在线二十三| 亚洲高清视频的网址| 91亚洲国产成人精品一区二三| 日韩欧美123| 日韩成人一级大片| 欧美蜜桃一区二区三区| 亚洲欧美色一区| www.一区二区| 欧美国产日韩精品免费观看| 国产乱人伦精品一区二区在线观看| 91麻豆精品国产综合久久久久久| 一区二区三区中文在线| av网站免费线看精品| 国产精品久久看| 丰满少妇久久久久久久| 精品成人一区二区三区四区| 韩国一区二区三区| 日韩欧美国产综合| 日韩av一级电影| 欧美一区午夜视频在线观看 | 99久久久久久| 欧美国产日产图区| 成人激情开心网| 欧美国产日本视频| 成人app在线观看| 亚洲欧美另类图片小说| 91色在线porny| 一区二区三区中文在线| 欧美三区在线观看| 婷婷开心激情综合| 欧美一区二区三区在线观看视频| 日韩电影免费一区| 欧美一二三区精品| 国产在线一区二区| 国产色91在线| 91影院在线免费观看| 一区二区三区成人| 欧美日本免费一区二区三区| 久久精品av麻豆的观看方式| 久久久蜜桃精品| a亚洲天堂av| 亚洲妇熟xx妇色黄| 精品久久久久久久久久久院品网| 国产成人综合在线播放| ...中文天堂在线一区| 色老汉av一区二区三区| 婷婷开心激情综合| 久久久久久久电影| 色拍拍在线精品视频8848| 奇米影视在线99精品| 国产亚洲婷婷免费| 一道本成人在线| 激情五月激情综合网| 亚洲色图视频网站| 欧美一级国产精品| 成人av片在线观看| 奇米一区二区三区av| 国产精品毛片大码女人| 欧美日韩另类一区| 成人美女视频在线看| 日韩av一区二区在线影视| 中文欧美字幕免费| 欧美一区二区观看视频| 99久久精品国产一区| 首页亚洲欧美制服丝腿| 国产色爱av资源综合区| 91.com在线观看| av电影天堂一区二区在线观看| 日本美女一区二区| 亚洲日本va在线观看| 久久先锋资源网| 欧美久久久久久久久| 91原创在线视频| 国产成人精品在线看| 蜜桃视频在线一区| 亚洲高清免费视频| 亚洲欧美一区二区不卡| 久久亚洲精精品中文字幕早川悠里 | 成人永久看片免费视频天堂| 香蕉成人伊视频在线观看| 国产精品麻豆视频| 久久综合一区二区| 欧美人体做爰大胆视频| 色综合天天天天做夜夜夜夜做| 精品在线一区二区| 日日噜噜夜夜狠狠视频欧美人 | 日本午夜精品视频在线观看 | 国产自产2019最新不卡| 视频一区国产视频| 亚洲国产中文字幕| 一区二区在线观看视频在线观看| 国产欧美日本一区视频| 久久在线观看免费| 欧美刺激脚交jootjob| 日韩欧美在线123| 欧美日韩精品一区二区三区| 欧美午夜精品一区| 日本精品免费观看高清观看| 成人精品视频一区| 成人动漫在线一区| 粉嫩av一区二区三区粉嫩| 黄色小说综合网站| 国产一区二区导航在线播放| 狂野欧美性猛交blacked| 六月婷婷色综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 天天色综合成人网| 免费在线成人网| 精品一区二区在线视频| 国内精品免费**视频| 国产乱淫av一区二区三区| 国产精品18久久久久久vr| 成人激情视频网站| 99久久婷婷国产综合精品电影| 91在线丨porny丨国产| 91老师片黄在线观看| 欧美综合一区二区| 欧美日韩成人综合在线一区二区| 欧美亚洲一区二区在线| 欧美一级一级性生活免费录像| 精品三级在线观看| 亚洲国产激情av| 亚洲一区在线视频| 麻豆精品一区二区综合av| 韩国女主播一区二区三区| 成人高清视频免费观看| 在线观看www91| 精品国产伦一区二区三区观看体验| 久久免费视频色| 亚洲欧美另类久久久精品2019| 亚洲1区2区3区视频| 国产米奇在线777精品观看| 成人精品免费视频| 欧美精品高清视频| 国产婷婷色一区二区三区| 亚洲欧美日韩小说| 热久久久久久久| 国产·精品毛片| 欧美三级在线播放| 久久久久久久久99精品| 亚洲制服丝袜一区| 黄页视频在线91| 在线观看成人小视频| 久久久久久久久久美女| 亚洲高清不卡在线| 国产成人精品网址| 91精品在线观看入口| 中文字幕国产精品一区二区| 视频在线观看国产精品| av电影在线观看一区| 欧美mv和日韩mv国产网站| 亚洲精品国产高清久久伦理二区| 久久激情综合网| 在线免费亚洲电影| 国产视频在线观看一区二区三区| 亚洲午夜羞羞片| 99久久婷婷国产综合精品| 欧美成人免费网站| 亚洲二区在线观看| 成人av片在线观看| 久久蜜桃av一区二区天堂| 午夜成人免费电影| 99视频在线观看一区三区| 欧美精品一区二区三区在线| 午夜亚洲国产au精品一区二区| 99精品久久久久久| 国产天堂亚洲国产碰碰| 久久精品国产99| 6080午夜不卡| 亚洲国产综合人成综合网站| 99久久综合国产精品| 久久久精品2019中文字幕之3| 午夜精品福利一区二区蜜股av| av午夜一区麻豆| 中文字幕欧美三区| 国产成人一区二区精品非洲| 欧美大肚乱孕交hd孕妇| 蜜臀精品一区二区三区在线观看| 日本高清不卡视频| 亚洲视频一区二区在线观看| 成人理论电影网| 国产精品美女久久久久av爽李琼| 国产二区国产一区在线观看| 精品国产精品一区二区夜夜嗨| 美女视频黄频大全不卡视频在线播放| 欧美日韩视频在线观看一区二区三区| 自拍偷拍国产精品| 91国偷自产一区二区使用方法| 亚洲图片激情小说| 色94色欧美sute亚洲线路二|