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

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

?? csregex.pas

?? Delphi script parser
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
            ch := Ansi_Translate(ch, Size, pos, FPattern, translate);
        end;
      end;
      level := ord(regexp_precedences[ord(op)]); // integer > ord
      if (level > current_level) then begin
        inc(current_level); // before or after the while??
        while current_level < level do begin
          starts[starts_base + current_level] := pattern_offset;
          inc(current_level);
        end;
        starts[starts_base + current_level] := pattern_offset;
      end else
        if level < current_level then begin
          current_level := level;
          while (num_jumps > 0) and
            (future_jumps[num_jumps - 1] >= starts[starts_base + current_level]) do
          begin
            //PUT_ADDR(offset,addr)
            //         offset = future_jumps[num_jumps-1]
            //         addr   = pattern_offset
            disp := pattern_offset - future_jumps[num_jumps - 1] - 2;
            pattern[future_jumps[num_jumps - 1]] := char(disp and 255);
            pattern[future_jumps[num_jumps - 1] + 1] := char((disp shr 8) and 255);
            dec(num_jumps);
          end;
        end;

      case op of
        Rend: ;
        Rnormal:
          begin
            normal_char:
            opcode := Cexact;
            store_opcode_and_arg: //* opcode & ch must be set */
            starts[starts_base + current_level] := pattern_offset;
            pattern := pattern + char(opcode) + ch;
            inc(pattern_offset, 2);
          end;
        Ranychar:
          begin
            opcode := CAnychar;
            store_opcode:
            starts[starts_base + current_level] := pattern_offset;
            pattern := pattern + char(opcode);
            inc(pattern_offset);
          end;
        Rquote:
          raise ERegularExpression.Create(SreAbnormal);
        Rbol:
          begin
            if not beginning_context then
              if regexp_context_indep_ops then
                raise ERegularExpression.Create(SreBadlyPSpe)
              else
                goto normal_char;
            opcode := Cbol;
            goto store_opcode;
          end;
        Reol:
          begin
            if not ((pos > size) or
              (((FStyle and RE_NO_BK_VBAR) = RE_NO_BK_VBAR) and (FPattern[pos] = #124)) or // oct 174
              (((FStyle and RE_NO_BK_VBAR) <> RE_NO_BK_VBAR) and (((pos + 1) < size) and
              (FPattern[pos] = #92) and (FPattern[pos + 1] = #124))) or // oct 92 / 174
              (((FStyle and RE_NO_BK_PARENS) = RE_NO_BK_PARENS) and (FPattern[pos] = ')')) or
              (((FStyle and RE_NO_BK_PARENS) <> RE_NO_BK_PARENS) and (((pos + 1) < size) and
              (FPattern[pos] = #92) and (FPattern[pos + 1] = ')'))) // oct 92
              ) then
              if regexp_context_indep_ops then
                raise ERegularExpression.Create(SreBadlyPSpe)
              else
                goto normal_char;
            opcode := Ceol;
            goto store_opcode;
          end;
        Roptional:
          begin
            if beginning_context then
              if regexp_context_indep_ops then
                raise ERegularExpression.Create(SreBadlyPSpe)
              else
                goto normal_char;
            if starts[starts_base + current_level] <> pattern_offset then
            begin
              pattern := pattern + #0#0#0;
              Inser_Jump(starts[starts_base + current_level], Cfailure_jump,
                pattern_offset + 3, pattern_offset, pattern);
            end;
          end;
        Rstar,
          Rplus:
          begin
            if beginning_context then
              if regexp_context_indep_ops then
                raise ERegularExpression.Create(SreBadlyPSpe)
              else
                goto normal_char;

            if starts[starts_base + current_level] <> pattern_offset then
              //* ignore empty patterns for + and * */
            begin
              Pattern := Pattern + #0#0#0#0#0#0; //#0#0#0; //ALLOC(9);
              Inser_Jump(starts[starts_base + current_level], Cfailure_jump,
                pattern_offset + 6, pattern_offset, pattern);
              Inser_Jump(pattern_offset, Cstar_jump,
                starts[starts_base + current_level], pattern_offset, pattern);
              if op = Rplus then //* jump over initial failure_jump */
              begin
                Pattern := Pattern + #0#0#0;
                Inser_Jump(starts[starts_base + current_level], Cdummy_failure_jump,
                  starts[starts_base + current_level] + 6, pattern_offset, pattern);
              end;
            end;
          end;
        Ror:
          begin
            Pattern := Pattern + #0#0#0#0#0#0; //ALLOC(6);
            Inser_Jump(starts[starts_base + current_level], Cfailure_jump,
              pattern_offset + 6, pattern_offset, pattern);
            if num_jumps >= MAX_NESTING then
              raise ERegularExpression.Create(SreToComplex);
            pattern[pattern_offset] := char(Cjump);
            inc(pattern_offset);
            future_jumps[num_jumps] := pattern_offset;
            inc(num_jumps);
//              pattern := pattern + #0#0;
            inc(pattern_offset, 2);
            starts[starts_base + current_level] := pattern_offset;
          end;
        Ropenpar:
          begin
            starts[starts_base + current_level] := pattern_offset;
            if next_register < RE_NREGS then begin
              regexp_t.uses_registers := True;
              pattern := pattern + char(Cstart_memory) + char(next_register);
              inc(pattern_offset, 2);
              open_registers[num_open_registers] := next_register;
              inc(num_open_registers);
              regexp_t.num_registers := regexp_t.num_registers + 1;
              inc(next_register);
            end;
            inc(paren_depth);
              //PUSH_LEVEL_STARTS;
            if starts_base < ((MAX_NESTING - 1) * NUM_LEVELS) then
              starts_base := starts_base + NUM_LEVELS
            else
              raise ERegularExpression.Create(SreToComplex);

            current_level := 0;
            starts[starts_base + current_level] := pattern_offset;
          end;
        Rclosepar:
          begin
            if paren_depth <= 0 then
              raise ERegularExpression.Create(SreBadlyPPar);
            dec(starts_base, NUM_LEVELS);
            current_level := ord(regexp_precedences[ord(Ropenpar)]); // integer > ord
            dec(paren_depth);
            if paren_depth < num_open_registers then begin
              regexp_t.uses_registers := True;
              dec(num_open_registers);
              pattern := pattern + char(Cend_memory) + char(open_registers[num_open_registers]);
              inc(pattern_offset, 2);
            end;
          end;
        Rmemory:
          begin
            if ch = '0' then
              raise ERegularExpression.Create(SreBadMregN);
            regexp_t.uses_registers := True;
            opcode := Cmatch_memory;
            ch := char(ord(ch) - ord('0'));
            goto store_opcode_and_arg;
          end;
        Rextended_memory:
          begin
            if pos > size then
              raise ERegularExpression.Create(SreEndPrem);
            ch := FPattern[pos];
            inc(pos);
            if (ch < '0') or (ch > '9') then
              raise ERegularExpression.Create(SreBadMregN);
            if pos > size then
              raise ERegularExpression.Create(SreEndPrem);
            a := FPattern[pos];
            inc(pos);
            if (a < '0') or (a > '9') then
              raise ERegularExpression.Create(SreBadMregN);
            ch := char(10 * (ord(a) - ord('0')) + ord(ch) - ord('0'));
            if (ch <= '0') or (ch >= char(RE_NREGS)) then
              raise ERegularExpression.Create(SreBadMregN);
            regexp_t.uses_registers := True;
            opcode := Cmatch_memory;
            goto store_opcode_and_arg;
          end;
        Ropenset:
          begin
            Starts[starts_base + current_level] := pattern_offset; //   SET_LEVEL_START;
//   ALLOC(1+256/8);
            pattern := pattern + char(Cset);
            inc(pattern_offset);
            offset := pattern_offset;
            pattern := pattern + #0#0#0#0#0#0#0#0 + #0#0#0#0#0#0#0#0 +
              #0#0#0#0#0#0#0#0 + #0#0#0#0#0#0#0#0;
            inc(pattern_offset, 32);
            if pos > size then
              raise ERegularExpression.Create(SreEndPrem);
            ch := FPattern[pos];
            inc(pos);
            if translate <> '' then ch := translate[ord(ch)];
            if ch = #94 then // was oct
            begin
              complement := True;
              if pos > size then
                raise ERegularExpression.Create(SreEndPrem);
              ch := FPattern[pos];
              inc(pos);
              if translate <> '' then
                ch := translate[ord(ch)];
            end else
              complement := False;
            prev := -1;
            range := False;
            firstchar := True;
            while (ch <> #93) or firstchar do //was oct
            begin
              Firstchar := False;
              if (regexp_ansi_sequences and (ch = #92)) then // was oct
              begin
                if pos > size then
                  raise ERegularExpression.Create(SreEndPrem);
                ch := FPattern[pos];
                inc(pos);
                Ansi_Translate(ch, size, pos, FPattern, translate);
              end;
              if range then begin
                for i := prev to ord(ch) do
                  pattern[offset + (i div 8)] := char(ord(pattern[offset + (i div 8)]) or (1 shl (i and 7))); // integer > ord
                prev := -1;
                range := False;
              end else
                if (prev <> -1) and (ch = '-') then
                  range := True
                else begin
                  pattern[offset + (ord(ch) div 8)] := char(ord(pattern[offset + (ord(ch) div 8)]) or (1 shl (ord(ch) and 7))); // integer > ord
                  prev := ord(ch);
                end;
              if pos > size then
                raise ERegularExpression.Create(SreEndPrem);
              ch := FPattern[pos];
              inc(pos);
              if translate <> '' then ch := translate[ord(ch)];
//                Ansi_Translate(ch, size, pos, FPattern, translate); stupid translation bug
            end;
            if range then
              pattern[offset + (ord('-') div 8)] := char(ord(pattern[offset + (ord('-') div 8)]) or (1 shl (ord('-') and 7))); // integer > ord
            if (complement) then begin
              for i := 0 to 256 div 8 do
                pattern[offset + i] := char(ord(pattern[offset + i]) xor 255); // integer > ord
            end;
          end;
        Rbegbuf:
          begin
            opcode := Cbegbuf;
            goto store_opcode;
          end;
        Rendbuf:
          begin
            opcode := Cendbuf;
            goto store_opcode;
          end;
        RDigitChar: // RJ 2000-04-01 must 0-9
          begin // RJ
            opcode := Csyntaxspec; // RJ
            ch := Char(SDigit); // RJ
            goto store_opcode_and_arg; // RJ
          end; // RJ
        RNotDigitChar: // RJ 2000-04-01 must not 0-9
          begin // RJ
            opcode := CNotsyntaxspec; // RJ
            ch := Char(SDigit); // RJ
            goto store_opcode_and_arg; // RJ
          end; // RJ
        Rwordchar:
          begin
            opcode := Csyntaxspec;
            ch := char(Sword);
            goto store_opcode_and_arg;
          end;
        Rnotwordchar:
          begin
            opcode := Cnotsyntaxspec;
            ch := char(Sword);
            goto store_opcode_and_arg;
          end;
        Rwordbeg:
          begin
            opcode := Cwordbeg;
            goto store_opcode;
          end;
        Rwordend:
          begin
            opcode := Cwordend;
            goto store_opcode;
          end;
        Rwordbound:
          begin
            opcode := Cwordbound;
            goto store_opcode;
          end;
        Rnotwordbound:
          begin
            opcode := Cnotwordbound;
            goto store_opcode;
          end;
      else
        raise ERegularExpression.Create(SreSyntax);
      end;
      beginning_context := (op = Ropenpar) or (op = Ror);
    end;
    if starts_base <> 0 then
      raise ERegularExpression.Create(SreBadlyPPar);
    pattern := pattern + char(Cend);
    inc(pattern_offset);
  finally
    regexp_t.buffer := pattern;
  end;
  if not re_optimize then
    raise ERegularExpression.Create(SreOptimize);
end;

{: This tries to match the regexp against the string. This returns the length of
   the matched portion, or -1 if the pattern could not be matched and -2 if an
   error (such as failure stack overflow) is encountered. }

function TcsReExpr.re_match(
  const pos: integer;
  const old_regs: Pmkre_registers): integer;
label
  continue_matching, fail, done_matching, Error;
var
  code, translate, text: PChar;
  a, b, reg, match_end: integer;
  ch: char;
  regstart, regend: PChar;
  regsize: integer;
  state: Tmatch_state;
  item: Pitem_t;

  failuredest, pinst: PChar;
  item_t: Pitem_t;
  item_t2: Pitem_t;
  index: integer;
  current: Pitem_page_t;
begin
  Assert((pos > 0) and (FBufferSize >= 0), 'Nothing to do');
  Assert((pos <= FBufferSize), 'Position not valid');
  text := PChar(integer(FBuffer) + pos - 1);
  code := @regexp_t.buffer[1];
  if regexp_t.translate <> '' then 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品欧美日韩精品一| 久久综合久久鬼色中文字| 7777精品久久久大香线蕉| 国产三级一区二区| 婷婷久久综合九色国产成人| av日韩在线网站| www国产成人免费观看视频 深夜成人网| 亚洲欧美一区二区三区国产精品| 精品一区二区三区免费毛片爱| 在线欧美日韩国产| 中文字幕一区二区不卡| 国产精品一区二区免费不卡| 日韩三级中文字幕| 日本午夜精品一区二区三区电影| 在线观看欧美日本| 亚洲黄色片在线观看| 99久久er热在这里只有精品15 | 99国产精品国产精品久久| 日韩免费看网站| 日本一区中文字幕| 欧美精品日韩综合在线| 亚洲韩国一区二区三区| 97精品国产97久久久久久久久久久久 | 日韩免费高清av| 日韩国产欧美三级| 99精品欧美一区二区蜜桃免费| 精品电影一区二区| 麻豆91精品91久久久的内涵| 欧美久久久久久久久久| 日韩经典一区二区| 欧美一区二区美女| 男人的j进女人的j一区| 日韩欧美电影一区| 国产一区在线看| 国产欧美视频在线观看| 国产91丝袜在线播放0| 国产精品国产三级国产a| 99久久伊人精品| 亚洲综合网站在线观看| 欧美军同video69gay| 日韩电影免费在线看| 久久综合99re88久久爱| 国产91精品免费| 一区二区免费视频| 欧美精三区欧美精三区| 久久97超碰色| 国产欧美一区二区精品久导航| 96av麻豆蜜桃一区二区| 亚洲mv在线观看| 久久这里只精品最新地址| 成人动漫视频在线| 亚洲午夜羞羞片| 久久婷婷国产综合精品青草| 成人午夜在线视频| 日韩在线卡一卡二| 国产婷婷精品av在线| 色哟哟欧美精品| 久久精品国产亚洲aⅴ| 欧美国产综合一区二区| 欧美丝袜丝nylons| 国产在线看一区| 亚洲女同ⅹxx女同tv| 日韩一区二区三区免费看| 成人av综合在线| 午夜激情综合网| 国产精品国产精品国产专区不片| 欧美日韩三级在线| 粉嫩高潮美女一区二区三区| 亚洲bt欧美bt精品| 久久久久九九视频| 欧美日韩国产一级片| 成人福利在线看| 精品一区二区精品| 亚洲一级不卡视频| 欧美激情在线看| 欧美猛男男办公室激情| 成人动漫一区二区在线| 久久电影国产免费久久电影| 一区二区激情视频| 国产精品热久久久久夜色精品三区| 91麻豆精品国产91久久久更新时间| 成人精品小蝌蚪| 久久99精品国产91久久来源| 五月天中文字幕一区二区| 《视频一区视频二区| 久久夜色精品国产欧美乱极品| 欧美色区777第一页| hitomi一区二区三区精品| 激情综合网av| 男女男精品视频网| 性久久久久久久久| 亚洲高清在线精品| 最新国产成人在线观看| 亚洲国产精品黑人久久久| 日韩欧美一级二级| 91麻豆精品国产91久久久久久久久 | 日韩一区二区三区在线| 欧美日韩在线观看一区二区 | 色综合天天综合网天天狠天天| 国产一区二区三区免费| 精品一区二区三区免费播放| 秋霞电影一区二区| 三级久久三级久久| 亚洲一区二区五区| 一区二区三区四区蜜桃| 自拍av一区二区三区| 亚洲欧洲日韩一区二区三区| 国产欧美一区二区在线观看| 国产日韩亚洲欧美综合| 久久免费精品国产久精品久久久久| 日韩欧美区一区二| 337p日本欧洲亚洲大胆精品| 日韩精品一区二区三区在线播放| 日韩欧美国产一区二区三区| 精品乱人伦一区二区三区| 欧美成人性战久久| 国产亚洲一区二区在线观看| 久久九九国产精品| 中文字幕成人av| 亚洲精品中文在线影院| 亚洲电影在线播放| 天天综合网 天天综合色| 日韩福利视频网| 国产美女精品一区二区三区| 成人av手机在线观看| 色中色一区二区| 欧美丰满一区二区免费视频| 日韩一二三四区| 欧美国产丝袜视频| 亚洲综合区在线| 蜜桃视频免费观看一区| 国产一区免费电影| 91天堂素人约啪| 91精品国产91久久久久久最新毛片 | 成人在线一区二区三区| 色综合欧美在线| 91精品欧美综合在线观看最新| 久久免费电影网| 亚洲美腿欧美偷拍| 日本欧美肥老太交大片| 国产成人免费网站| 欧美色图在线观看| 久久蜜臀中文字幕| 亚洲一区免费视频| 韩国av一区二区三区| 色综合色狠狠综合色| 精品国精品国产尤物美女| 亚洲欧洲一区二区三区| 青青草一区二区三区| 99久久精品情趣| 欧美一区二区三区在线观看| 国产欧美日韩中文久久| 亚洲成人第一页| 成人视屏免费看| 日韩欧美中文字幕制服| 樱花草国产18久久久久| 国产在线精品一区二区| 欧美视频中文一区二区三区在线观看| www国产精品av| 性做久久久久久免费观看| voyeur盗摄精品| 久久精品人人做人人综合 | 99久久久精品| 2023国产精华国产精品| 五月天国产精品| 99在线精品视频| 欧美精品一区二区久久久| 亚洲一区二区三区四区五区中文| 国产高清成人在线| 日韩欧美资源站| 午夜精品久久久久久久| 在线亚洲一区二区| 中文字幕+乱码+中文字幕一区| 免费久久99精品国产| 91成人免费在线| 亚洲卡通欧美制服中文| 国产91在线|亚洲| 精品国产不卡一区二区三区| 日韩av一区二| 777奇米四色成人影色区| 亚洲国产欧美日韩另类综合| 99精品桃花视频在线观看| 国产人成一区二区三区影院| 精品一二三四区| 精品欧美一区二区在线观看| 日韩中文字幕亚洲一区二区va在线| 欧美在线|欧美| 亚洲手机成人高清视频| 9久草视频在线视频精品| 国产精品久久久久久久裸模| 粉嫩嫩av羞羞动漫久久久 | 日本一区二区综合亚洲| 国产麻豆精品视频| 国产清纯在线一区二区www| 国产在线看一区| 国产亚洲精品精华液| 国产精品18久久久久久久久| 久久久国产精华| 成人自拍视频在线| 亚洲色图色小说|