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

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

?? cs2_utl.pas

?? Delphi script parser
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit CS2_UTL; {Cajscript 2.0 Utilities (Parser, Pascal:TList, TStringlist)}
{$I CS2_DEF.INC}
interface

type
  TCs2TokenId = (
  {Errors}
    CSTI_SyntaxError,
    CSTI_CommentEOFError,
    CSTI_CharError,
    CSTI_StringError,
  {Tokens}
    CSTI_EOF,
    CSTI_Whitespace,
    CSTI_Comment,
    CSTI_Identifier,
    CSTI_SemiColon,
    CSTI_Comma,
    CSTI_Period,
    CSTI_Colon,
    CSTI_OpenRound,
    CSTI_CloseRound,
    CSTI_OpenBlock,
    CSTI_CloseBlock,
    CSTI_Assignment,
    CSTI_Equal,
    CSTI_NotEqual,
    CSTI_Greater,
    CSTI_GreaterEqual,
    CSTI_Less,
    CSTI_LessEqual,
    CSTI_Plus,
    CSTI_Minus,
    CSTI_Divide,
    CSTI_Multiply,
    CSTI_Integer,
    CSTI_Real,
    CSTI_String,
    CSTI_Char,
    CSTI_HexInt,
  {Identifiers}
    CSTII_and,
    CSTII_begin,
    CSTII_case,
    CSTII_const,
    CSTII_div,
    CSTII_do,
    CSTII_downto,
    CSTII_else
    ,
    CSTII_end,
    CSTII_for,
    CSTII_function,
    CSTII_if,
    CSTII_in,
    CSTII_mod,
    CSTII_not,
    CSTII_of,
    CSTII_or,
    CSTII_procedure,
    CSTII_program,
    CSTII_repeat,
    CSTII_set,
    CSTII_shl,
    CSTII_shr,
    CSTII_string,
    CSTII_then,
    CSTII_to,
    CSTII_type,
    CSTII_until,
    CSTII_uses,
    CSTII_var,
    CSTII_while,
    CSTII_with,
    CSTII_xor
    );
  PCs2PascalParser = ^TCs2PascalParser;
  TCs2PascalParser = record
    CurrTokenId: TCs2Tokenid;
    CurrTokenLen: LongInt;
    CurrTokenPos: LongInt;
    Text: PChar;
  end;

procedure NextNoJunk(data: PCs2PascalParser);
{Go to the next nojunk token}
function GetToken(data: PCs2PascalParser): string;
{Return the token}
procedure ParseToken(data: PCs2PascalParser);
{Parse at active position}

type
  PIfListItem = ^TIfListItem;
  TIfListItem = record
    Next: PIfListItem;
    Prev: PIfListItem;
    Ptr: Pointer;
  end;
  TIfList = object
  Private
    FCount: LongInt;
    RootItem: PIfListItem;
    CurrItem: PIfListItem;
    currItemIdx: Longint;
  Public
    function Count: LongInt;
    function GetItem(Nr: LongInt): Pointer;
    procedure SetItem(Nr: LongInt; P: Pointer);
    procedure Add(P: Pointer);
    procedure Remove(P: Pointer);
    procedure Delete(Nr: Longint);
    procedure Clear;
    constructor Create;
    destructor Destroy;
  end;

  TIfStringList = object
  Private
    List: TIfList;
  Public
    function Count: LongInt;
    function GetItem(Nr: LongInt): string;
    procedure SetItem(Nr: LongInt; const s: string);
    procedure Add(const P: string);
    procedure Delete(NR: LongInt);
    procedure Clear;
    constructor Create;
    destructor Destroy;
  end;

function FastUpperCase(const s: string): string;
{Fast uppercase}

function Fw(const S: string): string;
{
First word
}
procedure Rs(var S: string);
{
  Remove space left (TrimLeft)
}
implementation

function Fw(const S: string): string;
{
First word
}
begin
  if Pos(' ', s) > 0 then
    Fw := Copy(S, 1, Pos(' ', s) - 1)
  else

    Fw := S;
end;

procedure Rs(var S: string);
{
  Remove space left (TrimLeft)
}
begin
  while (Length(s) > 0) do begin
    if s[1] = ' ' then
      Delete(S, 1, 1)
    else
      Break;
  end;
end;


constructor TIfList.Create;
begin
  FCount := 0;
  RootItem := nil;
  CurrItem := nil;
  curritemidx := -1;
end;

procedure TIfList.Add(P: Pointer);
var
  w: PIfListItem;
begin
  if RootItem = nil then
  begin
    new(rootitem);
    rootitem^.prev := nil;
    rootitem^.next := nil;
    rootitem^.Ptr := p;
    CurrItem := rootitem;
    curritemidx := 0;
    inc(fcount);
  end else
  begin
    while assigned(CurrItem^.next) do begin
      inc(CurrItemIdx);
      curritem := curritem^.next;
    end;
    new(w);
    curritem^.next := w;
    w^.Next := nil;
    w^.prev := curritem;
    w^.Ptr := p;
    inc(fcount);
  end;
end;

procedure TIfList.Delete(Nr: Longint);
begin
  if not Assigned(RootItem) or (nr >= fCount) then
    Exit;
  if nr < curritemidx then
  begin
    CurrItem := RootItem;
    CurrItemIdx := 0;
  end;
  while curritemidx < nr do begin
    CurrItem := CurrItem^.Next;
    Inc(CurrItemIdx);
  end;
  if assigned(curritem^.prev) then
  begin
    curritem^.prev^.next := curritem^.next;
    if assigned(CurrItem^.next) then
      curritem^.next^.prev := currItem^.prev;
  end
  else

  begin
    rootitem := curritem^.next;
    if assigned(curritem^.next) then
      curritem^.next^.prev := nil;
  end;
  dispose(curritem);
  currItemIdx := 0;
  CurrItem := rootitem;
  dec(fcount);
end;

procedure TIfList.Remove(P: Pointer);
begin
  CurrItem := rootitem;
  while assigned(curritem) do
  begin
    if curritem^.Ptr = p then
    begin
      if assigned(curritem^.prev) then
      begin
        curritem^.prev^.next := curritem^.next;
        if assigned(CurrItem^.next) then
          curritem^.next^.prev := currItem^.prev;
      end
      else

      begin
        rootitem := curritem^.next;
        if assigned(curritem^.next) then
          curritem^.next^.prev := nil;
      end;
      dispose(curritem);
      dec(fcount);
      break;
    end;
    curritem := curritem^.next;
  end;
  currItemIdx := 0;
  CurrItem := rootitem;
end;

procedure TIfList.Clear;
begin
  curritem := rootitem;
  while assigned(curritem) do begin
    if assigned(curritem^.next) then
    begin
      curritem := curritem^.next;
      dispose(curritem^.prev);
    end else
    begin
      dispose(curritem);
      curritem := nil;
    end;
  end;
  rootitem := nil;
  curritem := nil;
  curritemidx := -1;
  fcount := 0;
end;

destructor TIfList.Destroy;
begin
  clear;
end;

procedure TIfList.SetItem(Nr: LongInt; P: Pointer);
begin
  if not Assigned(RootItem) or (nr >= fCount) then
    Exit;
  if nr < curritemidx then
  begin
    CurrItem := RootItem;
    CurrItemIdx := 0;
  end;
  while curritemidx < nr do begin
    CurrItem := CurrItem^.Next;
    Inc(CurrItemIdx);
  end;
  CurrItem^.Ptr := p;
end;

function TifList.GetItem(Nr: LongInt): Pointer;
begin
  getitem := nil;
  if not Assigned(RootItem) or (nr >= fCount) then
    Exit;
  if nr < curritemidx then
  begin
    CurrItem := RootItem;
    CurrItemIdx := 0;
  end;
  while curritemidx < nr do begin
    CurrItem := CurrItem^.Next;
    Inc(CurrItemIdx);
  end;
  getitem := CurrItem^.Ptr;
end;

function TifList.Count: LongInt;
begin
  count := Fcount;
end;


function TIfStringList.Count: LongInt;
begin
  count := List.count;
end;
{$IFDEF SS}
type TsmallStr = record
    Size: Byte;
    Str: array[1..255] of Char;
  end;

function TifStringList.GetItem(Nr: LongInt): string;
var S: ^TSMALLSTR;
  tel: Byte;
begin
  getitem := '';
  s := List.GetItem(Nr);
  if s = nilthen
    Exit;
  GetItem[0] := Chr(S^.Size);
  for tel := 1 to S^.Size do
    GetItem[tel] := S^.Str[tel];
end;

procedure TifStringList.SetItem(Nr: LongInt; const s: string);
var
  p: ^TSMALLSTR;
  tel: LongInt;
begin
  p := List.GetItem(Nr);
  if p = nilthen
    Exit;
  FreeMem(p, p^.Size + 1);
  GetMem(p, Length(s) + 1);
  p^.Size := Length(s);
  for tel := 1 to p^.Size do
    p^.Str[tel] := s[tel];
  List.SetItem(Nr, p);
end;

procedure TifStringList.Add(const P: string);
var S: ^TSMALLSTR;
  tel: Byte;
begin
  GetMem(S, 1 + Length(P));
  s^.Size := Length(p);
  for tel := 1 to s^.Size do
    s^.Str[tel] := p[tel];
  List.Add(S);
end;

procedure TifStringList.Delete(NR: LongInt);
var P: ^TSMALLSTR;
begin
  p := list.getitem(nr);
  list.Remove(P);
  dispose(p);
end;

{$else
}
type pStr = ^string;

function TifStringList.GetItem(Nr: LongInt): string;
var
  S: PStr;
begin
  s := List.GetItem(Nr);
  if s = nil then
    Result := ''
  else

    Result := s^;
end;

procedure TifStringList.SetItem(Nr: LongInt; const s: string);
var
  p: PStr;
begin
  p := List.GetItem(Nr);
  if p = nil
    then
    Exit;
  p^ := s;
end;

procedure TifStringList.Add(const P: string);
var
  w: PStr;
begin
  new(w);
  w^ := p;
  List.Add(w);
end;

procedure TifStringList.Delete(NR: LongInt);
var
  W: PStr;
begin
  W := list.getitem(nr);
  if assigned(w) then
  begin
    dispose(w);
    list.Delete(Nr);
  end;
end;
{$ENDIF}

procedure TifStringList.Clear;
begin
  while List.Count > 0 do Delete(0);
end;

constructor TifStringList.Create;
begin
  List.Create;
end;

destructor TifStringList.Destroy;
var I: LongInt;
begin
  for I := 0 to list.count - 1 do
    Delete(I);
  List.Destroy;
end;

const chartab: array[Char] of Char = (
{Char tab is used for making a string in uppercase. This way is much faster}
    #0, #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #13, #14, #15, #16,
    #17, #18, #19, #20, #21, #22, #23, #24, #25, #26, #27, #28, #29, #30, #31,
    #32, #33, #34, #35, #36, #37, #38, #39, #40, #41, #42, #43, #44, #45, #46,
    #47, #48, #49, #50, #51, #52, #53, #54, #55, #56, #57, #58, #59, #60, #61,
    #62, #63, #64, #65, #66, #67, #68, #69, #70, #71, #72, #73, #74, #75, #76,
    #77, #78, #79, #80, #81, #82, #83, #84, #85, #86, #87, #88, #89, #90, #91,
    #92, #93, #94, #95, #96, #65, #66, #67, #68, #69, #70, #71, #72, #73, #74,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区在线观看视频| 日韩限制级电影在线观看| 岛国一区二区三区| 激情另类小说区图片区视频区| 日本成人在线视频网站| 三级欧美在线一区| 日韩国产欧美一区二区三区| 99re热视频精品| 成年人午夜久久久| 色综合天天综合狠狠| www.爱久久.com| 一道本成人在线| 欧美最新大片在线看| 欧美日韩一区高清| 欧美一卡2卡三卡4卡5免费| 精品日韩在线观看| 久久久久久久久久久久电影| 久久久高清一区二区三区| 国产精品沙发午睡系列990531| 国产精品国产三级国产aⅴ中文| 国产精品久久久久久久久晋中 | 亚洲成人激情综合网| 亚洲一二三四在线| 日本大胆欧美人术艺术动态| 国产又黄又大久久| www.综合网.com| 欧美理论在线播放| 精品va天堂亚洲国产| 中文字幕在线免费不卡| 亚洲一区二区三区中文字幕 | 波多野结衣亚洲一区| 99re亚洲国产精品| 欧美一区二区三区免费| 久久久蜜桃精品| 亚洲欧美国产77777| 青青草国产成人99久久| 国产成人在线看| 欧美最猛性xxxxx直播| 日韩欧美一区二区在线视频| 久久精品欧美日韩| 亚洲综合久久久| 久久精品免费观看| 99re亚洲国产精品| 日韩亚洲欧美一区| 中文字幕亚洲一区二区va在线| 亚洲一区二区欧美激情| 免费在线一区观看| 成人ar影院免费观看视频| 欧美日韩三级一区二区| 国产女人水真多18毛片18精品视频| 一区二区三区.www| 国产麻豆视频精品| 欧美婷婷六月丁香综合色| 26uuu亚洲婷婷狠狠天堂| 亚洲免费观看视频| 国内精品嫩模私拍在线| 在线一区二区视频| 国产午夜久久久久| 日韩精品色哟哟| 色综合天天狠狠| 久久影院午夜论| 色婷婷av一区二区三区之一色屋| 这里只有精品99re| 亚洲三级小视频| 国内外精品视频| 欧美日韩一区二区三区在线看 | 一区二区三区美女视频| 经典三级在线一区| 欧美最猛性xxxxx直播| 国产精品成人在线观看| 国内精品久久久久影院薰衣草| 91啪亚洲精品| 国产欧美综合在线观看第十页| 蜜桃久久久久久久| 欧美日韩三级一区| 亚洲欧美另类小说| 99久久精品免费精品国产| 亚洲精品在线电影| 日本va欧美va欧美va精品| 在线视频中文字幕一区二区| 日本一区二区视频在线| 激情五月婷婷综合| 7777女厕盗摄久久久| 亚洲已满18点击进入久久| 成人一级片网址| 久久综合久久综合亚洲| 日本不卡一区二区| 欧美艳星brazzers| 亚洲色图在线看| 91丝袜呻吟高潮美腿白嫩在线观看| 日本一区二区在线不卡| 韩国成人精品a∨在线观看| 日韩精品一区二区三区在线观看 | 欧美国产成人精品| 国产麻豆9l精品三级站| 精品少妇一区二区三区在线播放| 日韩 欧美一区二区三区| 欧美日韩精品一区二区| 亚洲h在线观看| 欧美日韩情趣电影| 无码av免费一区二区三区试看 | 久久久www成人免费毛片麻豆 | 国产一区91精品张津瑜| 精品免费一区二区三区| 久久99精品网久久| www激情久久| 国内精品久久久久影院色| 久久婷婷色综合| 国产美女在线观看一区| 国产亚洲短视频| 高清日韩电视剧大全免费| 国产免费久久精品| 91亚洲大成网污www| 有坂深雪av一区二区精品| 色哟哟精品一区| 色综合久久综合| 亚洲国产精品人人做人人爽| 欧美日韩在线观看一区二区| 日韩主播视频在线| 日韩精品一区二区三区视频在线观看| 久久精品国产在热久久| 久久影院视频免费| av日韩在线网站| 亚洲一二三区视频在线观看| 欧美电影在哪看比较好| 美日韩黄色大片| 久久久99久久精品欧美| 成人黄页在线观看| 亚洲福利一二三区| 欧美va亚洲va| 91在线无精精品入口| 亚洲综合成人在线| 欧美一区二区美女| 国产一区二区中文字幕| 亚洲欧美综合网| 欧美猛男男办公室激情| 精品一区二区在线播放| 中文字幕人成不卡一区| 精品视频在线免费看| 久久99精品国产麻豆不卡| 国产欧美日产一区| 欧美亚洲一区二区在线观看| 日本成人在线网站| 中文字幕一区二区不卡| 欧美美女bb生活片| 国产suv一区二区三区88区| 一区二区三区四区五区视频在线观看| 91.麻豆视频| av亚洲精华国产精华精| 日韩电影在线观看一区| 中文字幕欧美国产| 欧美嫩在线观看| 播五月开心婷婷综合| 人人精品人人爱| 日韩伦理电影网| 日韩一级片网址| 在线亚洲免费视频| 国产一区二区不卡老阿姨| 亚洲国产精品久久久久婷婷884| 精品久久一区二区三区| 色婷婷香蕉在线一区二区| 国产在线精品免费av| 亚洲小说欧美激情另类| 日本一区二区免费在线| 91精品国产综合久久精品图片| 成人小视频免费在线观看| 美脚の诱脚舐め脚责91 | 一区二区国产视频| 久久久亚洲精品一区二区三区| 欧美日韩国产高清一区二区| 国产成人午夜99999| 爽爽淫人综合网网站| 亚洲激情五月婷婷| 国产亚洲自拍一区| 欧美一区二区三区系列电影| 色悠悠久久综合| 成人精品在线视频观看| 久久爱另类一区二区小说| 亚洲大尺度视频在线观看| 亚洲欧美国产77777| 国产目拍亚洲精品99久久精品| 日韩一区二区三区视频在线 | 欧美激情一区二区| 欧美大肚乱孕交hd孕妇| 欧美肥妇bbw| 欧美午夜理伦三级在线观看| 亚洲欧洲国产日韩| 久久久久久免费毛片精品| 欧美一区午夜精品| 欧美日韩一级视频| 91精彩视频在线| 91视频免费看| 97精品久久久午夜一区二区三区 | 欧美精品一区二区在线播放| 欧美日韩国产精选| 欧美日本一区二区在线观看| 欧美三电影在线| 欧美午夜理伦三级在线观看| 91久久一区二区| 日本道免费精品一区二区三区|