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

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

?? untpasscriptcompile.pas

?? 運用delphi編寫的小型解釋器
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
                end;

         ocLoadConst: begin
                      aUserVar := FConstVarList.getVarByID(p2);
                      FStack.Put(aUserVar.Value);
                      end;

         ocSto: begin
                aUserVar := FVarList.getVarByID(p2);
                 
                if aUserVar.VarType = vtStatic then FVarList.getVarByID(p2).Value := FStack.Pop
                    else if (aUserVar.VarType = vtDynamic) or (aUserVar.VarType = vtParam) then
                            begin
                            aCallInfo := FCallStack.GetPreCallInfo(p1);

                            aDynaAddr := aCallInfo.BaseDynaVarAddr + aUserVar.OffPos;

                            FDynaVarStack.GetVarByPos(aDynaAddr).Value := FStack.Pop;
                            end;
                end;

         ocAdd: begin
                v1 := FStack.Pop;
                v2 := FStack.Pop;
                FStack.Put(v1 + v2);
                end;

         ocIncVar: begin
                   v1 := FStack.Pop;
                   FStack.Put(v1 + p2);
                   end;

         ocSub: begin
                v1 := FStack.Pop;
                v2 := FStack.Pop;
                FStack.Put(v2 - v1);
                end;

         ocMul: begin
                v1 := FStack.Pop;
                v2 := FStack.Pop;
                FStack.Put(v2 * v1);
                end;

         ocDiv: begin
                v1 := FStack.Pop;
                v2 := FStack.Pop;
                FStack.Put(v2 / v1);
                end;

         ocEqual: begin
                  v1 := FStack.Pop;
                  v2 := FStack.Pop;
                  FStack.Put(v1 = v2);
                  end;

         ocGreater: begin
                    v2 := FStack.Pop;
                    v1 := FStack.Pop;
                    FStack.Put(v1 > v2);
                    end;

         ocGreaterEqual: begin
                         v2 := FStack.Pop;
                         v1 := FStack.Pop;
                         FStack.Put(v1 >= v2);
                         end;

         ocLess: begin
                 v2 := FStack.Pop;
                 v1 := FStack.Pop;
                 FStack.Put(v1 < v2);
                 end;

         ocLessEqual: begin
                      v2 := FStack.Pop;
                      v1 := FStack.Pop;
                      FStack.Put(v1 <= v2);
                      end;

         ocNotEqual: begin
                     v2 := FStack.Pop;
                     v1 := FStack.Pop;
                     FStack.Put(v1 <> v2);
                     end;

         ocIfFalseGoto: begin
                        v2 := FStack.Pop;
                        if not v2 then
                            begin
                            i := p2;
                            continue;
                            end;

                        end;

         ocGoto: begin
                 i := p2;
                 continue; 
                 end;

         ocCall: begin
                 aMethod := FMethodList.getMethodByID(p2);

                 aCallInfo := FCallStack.PutMethodCall(aMethod, i);

                 FDynaVarStack.LoadMethodVar(aMethod);

                 for j := 0 to aMethod.ParamList.Count - 1 do
                   begin
                   aUserVar := TUserVar(aMethod.ParamList.Items[j]);
                   FDynaVarStack.FVarList.FUserVarList[aCallInfo.BaseDynaVarAddr + aUserVar.OffPos].Value := FStack.Pop;
                   end;

                 if not aMethod.SysMethodFlag then
                    begin
                    i := aMethod.Addr;
                    continue;
                    end
                   else begin
                        for j := 0 to aMethod.ParamList.Count - 1 do
                            begin
                            aUserVarList.FCount := 0;
                            aUserVarList.AddVar(FDynaVarStack.FVarList.FUserVarList[aCallInfo.BaseDynaVarAddr + j]);
                            aMethod.SysProcMethod(aUserVarList);
                            end;

                        i := aMethod.Addr;
                        continue;
                        end;
                 end;

         ocReturn: begin
                   aCallInfo := FCallStack.LastCallInfo;

                   if aCallInfo.FMethod.FMethodType = mtFun then
                       begin
                       FStack.Put(FDynaVarStack.getTopValue);
                       end;

                   FDynaVarStack.UnLoadVar(aCallInfo.VarCount);

                   i := aCallInfo.CallAddr + 1;

                   FCallStack.RemoveLastCall;

                   continue;
                   end;

           else raise Exception.Create('未知命令!');
         end;

    Inc(i);

    end;
   
   
end;

{ TUserVarList }

function TUserVarList.AddVar(aName: string): TUserVar;
begin
  CheckArray;

  FUserVarList[FCount] := TUserVar.Create;
  FUserVarList[FCount].ID := FCount;
  FUserVarList[FCount].Name := aName;

  Result := FUserVarList[FCount];

  Inc(FCount);
end;

procedure TUserVarList.AddVar(aUserVar: TUserVar);
var
  i: integer;
begin
  for i := 0 to FCount - 1 do
    begin
    //if FUserVarList[i].ID = aUserVar.ID then raise Exception.Create('已經有ID等于' + IntToStr(aUserVar.ID) + '的變量!');
    end;

  CheckArray;
  FUserVarList[FCount] := aUserVar;

  Inc(FCount);
end;

function TUserVarList.AddVar(aID: integer; aName: string; aValue: variant;
  aDataType: TDataType; aVarType: TVarType; aOffPos: integer): TUserVar;
begin
  CheckArray;

  FUserVarList[FCount] := TUserVar.Create;
  FUserVarList[FCount].ID := aID;
  FUserVarList[FCount].Name := aName;
  FUserVarList[FCount].Value := aValue;
  FUserVarList[FCount].DataType := aDataType;
  FUserVarList[FCount].VarType := aVarType;
  FUserVarList[FCount].OffPos := aOffPos;

  Result := FUserVarList[FCount];

  Inc(FCount);
end;

procedure TUserVarList.CheckArray;
begin
  if FCount >= Length(FUserVarList) then
    begin
    SetLength(FUserVarList, FCount + 30);
    end;
end;

procedure TUserVarList.Clear;
var
  i: integer;
begin
  for i := 0 to FCount - 1 do
    begin
    FreeAndNil(FUserVarList[i]);
    end;

  setLength(FUserVarList, 30);

  FCount := 0;

end;

constructor TUserVarList.Create;
begin
  SetLength(FUserVarList, 30);
  FCount := 0;
end;

procedure TUserVarList.DelLastVar;
begin
  DelVarByIndex(FCount - 1);
end;

procedure TUserVarList.DelVarByID(aID: integer);
var
  i: integer;
begin
  for i := 0 to FCount - 1 do
    begin
    if FUserVarList[i].ID = aID then
        begin
        DelVarByIndex(i);
        exit;
        end;
    end;

  raise Exception.Create('沒有找到ID為' + IntToStr(aID) +'的變量!');

end;

procedure TUserVarList.DelVarByIndex(aIndex: integer);
var
  i: integer;
begin
  if (aIndex < 0) or (aIndex >= FCount) then raise Exception.Create('索引超出范圍!');

  FreeAndNil(FUserVarList[aIndex]);
  
  for i := aIndex to FCount - 2 do
    begin
    FUserVarList[i] := FUserVarList[i + 1];
    end;

  Dec(FCount);
end;

destructor TUserVarList.Destroy;
var
  i: integer;
begin
  for i := 0 to FCount - 1 do
    begin
    FreeAndNil(FUserVarList[i]);
    end;

  setLength(FUserVarList, 0);

  inherited;
end;

function TUserVarList.getText: string;
var
  i: integer;
begin
  Result := '';

  for i := 0 to FCount - 1 do
    begin
    Result := Result + FUserVarList[i].Text + #13#10;
    end;
end;

function TUserVarList.getVarByID(aID: integer): TUserVar;
var
  i: integer;
begin
  for i := 0 to FCount - 1 do
    begin
    if FUserVarList[i].ID = aID then
        begin
        Result := FUserVarList[i];
        exit;
        end;
    end;

  raise Exception.Create('沒有找到ID為' + IntToStr(aID) +'的變量!');
end;

function TUserVarList.GetVarByIndex(aIndex: integer): TUserVar;
begin
  if (aIndex < 0) or (aIndex >= FCount) then raise Exception.Create('索引超出范圍!');
  
  Result := FUserVarList[aIndex];

end;

function TUserVarList.GetVarByName(aName: string): TUserVar;
var
  i: integer;
begin
  for i := 0 to FCount - 1 do
    begin
    if SameText(FUserVarList[i].Name, aName) then
        begin
        Result := FUserVarList[i];
        exit;
        end;
    end;

  Result := nil;
end;

{ TUserMethod }

procedure TUserMethod.AddDynaVar(aUserVar: TUserVar);
begin
  FDynaVarList.Add(Pointer(aUserVar));
  aUserVar.OffPos := FCurOffPos;
  aUserVar.VarType := vtDynamic;

  Inc(FCurOffPos);
end;

procedure TUserMethod.AddParamVar(aUserVar: TUserVar);
begin
  FParamList.Add(Pointer(aUserVar));
  aUserVar.OffPos := FCurOffPos;
  aUserVar.VarType := vtParam;

  Inc(FCurOffPos);
end;

procedure TUserMethod.AddResultVar(aUserVar: TUserVar);
begin
  FResultVar := aUserVar;
  
  aUserVar.OffPos := FCurOffPos;
  aUserVar.VarType := vtResult;

  Inc(FCurOffPos);
end;

procedure TUserMethod.Clone(aUserMethod: TUserMethod);
begin
  FID := aUserMethod.ID;
  FName := aUserMethod.Name;

  FMethodType := aUserMethod.MethodType;

  //FParamList: TUserVarList;

  //FDynaVarList: TUserVarList;

  FCurOffPos := aUserMethod.CurOffPos;

  //FResultVar: TUserVar;

  FAddr := aUserMethod.Addr;
end;

constructor TUserMethod.Create;
begin
  FParamList := TList.Create;
  FDynaVarList := TList.Create;

  FCurOffPos := 0;

  FSysMethodFlag := false;
end;

function TUserMethod.GetDyanVarByIndex(aIndex: integer): TUserVar;
begin
  if (aIndex < 0) or (aIndex >= FDynaVarList.Count) then raise Exception.Create('索引超出范圍!');
  Result := TUserVar(FDynaVarList.Items[aIndex]);
end;

function TUserMethod.GetParamVarByIndex(aIndex: integer): TUserVar;
begin
  if (aIndex < 0) or (aIndex >= FParamList.Count) then raise Exception.Create('索引超出范圍!');
  Result := TUserVar(FParamList.Items[aIndex]);
end;

function TUserMethod.getText: string;
var
  m, p, d: string;
  i: integer;
begin
  if FMethodType = mtProc then m := '過程'
     else m := '函數';

  p := '';
  for i := 0 to FParamList.Count - 1 do
    begin
    if p = '' then p := IntToStr(TUserVar(FParamList.Items[i]).ID)
        else p := p + ', ' + IntToStr(TUserVar(FParamList.Items[i]).ID);
    end;
  p := '(' + p + ')';

  d := '';
  for i := 0 to FDynaVarList.Count - 1 do
    begin
    if d = '' then d := IntToStr(TUserVar(FDynaVarList.Items[i]).ID)
        else d := d + ', ' + IntToStr(TUserVar(FDynaVarList.Items[i]).ID);
    end;
  d := '(' + d + ')';


  Result := 'ID = ' + IntToStr(FID) + ', ' +
            'Name = ' + FName + ', ' +
            'MethodType = ' + m + ', ' +
            'ParamList = ' + p + ', ' +
            'DynaVarList = ' + d + ', ' +
            'Addr = ' + IntToStr(FAddr);
end;

{ TUserMethodList }

function TUserMethodList.AddMethod(aName: string): TUserMethod;
var
  aMethod: TUserMethod;
begin
  aMethod := TUserMethod.Create;

  try
    aMethod.Name := aName;
    aMethod.ID := FCount;
    AddMethod(aMethod);
  except
    FreeAndNil(aMethod);
    raise;
  end;

  Result := aMethod;

end;

function TUserMethodList.AddMethod(aMethod: TUserMethod): TUserMethod;
var
  i: integer;
begin
  CheckArray;

  for i := 0 to FCount - 1 do
    begin
    if FUserMethodList[i].ID = aMethod.ID then
      begin
      raise Exception.Create('已經有了該ID的方法!');
      end;
    end;
    
  FUserMethodList[FCount] := aMethod;

  Result := aMethod;

  Inc(FCount);
end;

function TUserMethodList.AddMethod(aID: integer; aName: string;
  aMethodType: TMethodType; aCurOffPos, aAddr: integer): TUserMethod;
var
  aMethod: TUserMethod;
begin
  aMethod := TUserMethod.Create;

  try
    aMethod.Name := aName;
    aMethod.ID := aID;
    aMethod.MethodType := aMethodType;
    aMethod.CurOffPos := aCurOffPos;
    aMethod.Addr := aAddr;

    AddMethod(aMethod);
  except
    FreeAndNil(aMethod);
    raise;
  end;

  Result := aMethod;


end;

procedure TUserMethodList.CheckArray;
begin
  if FCount >= Length(FUserMethodList) then
    begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产97人人爽人人喊| 国产精品第13页| 国产欧美精品一区aⅴ影院| 亚洲国产欧美日韩另类综合| 韩国成人在线视频| 在线一区二区三区四区五区| 久久欧美中文字幕| 日本午夜精品视频在线观看 | 欧美在线色视频| 精品久久久久一区二区国产| 亚洲一区二区视频| 色94色欧美sute亚洲13| 欧美极品xxx| 国内精品免费在线观看| 欧美高清性hdvideosex| 亚洲视频电影在线| 国产·精品毛片| 精品国产免费一区二区三区四区 | 日本精品免费观看高清观看| www一区二区| 久久精品国产精品亚洲综合| 555www色欧美视频| 日韩中文字幕1| 欧美日韩亚洲丝袜制服| 亚洲一区二区3| 91麻豆国产精品久久| 中文字幕一区二区不卡| 成人性生交大片| 国产精品伦理在线| 菠萝蜜视频在线观看一区| 中文字幕二三区不卡| 国产成人免费视频网站| 国产精品色在线| a级精品国产片在线观看| 久久久久久免费| 成人免费视频视频| 国产精品女上位| 99九九99九九九视频精品| 亚洲免费观看高清| 欧美在线综合视频| 日本不卡高清视频| 欧美mv日韩mv| 成人性生交大片免费看在线播放| 欧美国产97人人爽人人喊| 成人网页在线观看| 亚洲综合免费观看高清完整版| 欧美影院一区二区| 蜜臀精品一区二区三区在线观看 | 中文字幕一区在线观看| 色悠悠久久综合| 婷婷综合在线观看| 久久综合狠狠综合| av在线播放成人| 亚洲午夜成aⅴ人片| 欧美疯狂做受xxxx富婆| 韩国精品一区二区| 亚洲精品五月天| 3751色影院一区二区三区| 精品在线你懂的| 中文字幕巨乱亚洲| 欧美三级中文字| 韩国三级在线一区| 一区二区三区在线视频免费观看 | 亚洲精品在线观| 成人国产精品免费| 亚洲va欧美va天堂v国产综合| 日韩三级伦理片妻子的秘密按摩| 国产精品一区专区| 亚洲免费三区一区二区| 日韩欧美国产1| 99久久久国产精品免费蜜臀| 日本成人在线视频网站| 国产精品视频观看| 欧美一区三区四区| av亚洲产国偷v产偷v自拍| 日本欧美一区二区| 亚洲老司机在线| 久久这里只有精品首页| 欧美色老头old∨ideo| 国产综合久久久久久鬼色 | 亚洲色图制服诱惑| 欧美一级片在线| 99国产欧美另类久久久精品| 麻豆成人久久精品二区三区红 | 精品一区二区三区在线观看| 国产精品久久久久7777按摩| 日韩精品综合一本久道在线视频| 色综合天天在线| 国产精品一级二级三级| 琪琪久久久久日韩精品| 夜夜亚洲天天久久| 国产精品久久网站| 久久精品一区二区三区av| 欧美区一区二区三区| 99麻豆久久久国产精品免费| 韩国精品主播一区二区在线观看 | www.亚洲在线| 国产真实精品久久二三区| 日本v片在线高清不卡在线观看| 亚洲欧美日韩国产一区二区三区| 久久亚洲二区三区| 精品国产乱码久久久久久老虎 | 国产精品青草久久| 久久精品一区四区| 2023国产一二三区日本精品2022| 欧美夫妻性生活| 欧美精品在线视频| 欧美综合亚洲图片综合区| 97精品国产露脸对白| 波多野结衣亚洲一区| 国产成人精品亚洲777人妖| 国产一区二区福利| 国产精品自拍三区| 国产最新精品精品你懂的| 久久 天天综合| 激情另类小说区图片区视频区| 麻豆国产精品视频| 国产一区二区久久| 高清成人在线观看| 成人国产免费视频| 91美女在线看| 在线免费亚洲电影| 欧美色倩网站大全免费| 欧美精品tushy高清| 日韩视频在线一区二区| 欧美成人a∨高清免费观看| 精品入口麻豆88视频| 久久久久国产精品厨房| 国产精品久久久久影院亚瑟 | 国产伦精品一区二区三区免费 | 在线免费观看日本欧美| 欧美午夜精品一区二区蜜桃| 69堂成人精品免费视频| 日韩精品专区在线影院重磅| 久久久亚洲国产美女国产盗摄| 国产精品丝袜一区| 日韩美女久久久| 视频一区欧美精品| 国产精品综合视频| 一本大道av一区二区在线播放 | 美女诱惑一区二区| 国产精品资源在线观看| av不卡在线播放| 欧美精品久久久久久久多人混战| 精品精品欲导航| 亚洲丝袜精品丝袜在线| 亚洲香肠在线观看| 国产精品一区一区三区| 色婷婷综合久久久中文一区二区| 欧美美女黄视频| 国产日韩在线不卡| 图片区小说区区亚洲影院| 国内精品国产成人国产三级粉色| gogogo免费视频观看亚洲一| 久久亚洲免费视频| 亚洲最色的网站| 国产一区二区三区视频在线播放| 色综合久久久久综合体 | 色美美综合视频| 日韩欧美久久一区| 依依成人综合视频| 国产专区综合网| 欧美日韩二区三区| 国产精品高潮呻吟| 免费人成精品欧美精品 | 日韩小视频在线观看专区| 1024成人网| 国产乱人伦精品一区二区在线观看| 色哟哟日韩精品| 中文字幕欧美三区| 蜜臀av性久久久久av蜜臀妖精| 91美女在线看| 欧美激情资源网| 全国精品久久少妇| 欧美日韩三级一区二区| 国产精品美女久久久久av爽李琼 | 亚洲国产成人av网| 成人免费va视频| 久久精品网站免费观看| 日韩精品国产精品| 91网址在线看| 国产精品三级av| 国产精品主播直播| 日韩欧美国产一区二区三区 | 日韩午夜激情av| 亚洲成人精品一区二区| 一本到高清视频免费精品| 一区视频在线播放| 成人精品小蝌蚪| 国产精品女同一区二区三区| 国产不卡视频在线观看| 精品国产免费一区二区三区香蕉| 青娱乐精品视频在线| 91精品国产91久久久久久一区二区 | 亚洲一区二区三区小说| 色av一区二区| 亚洲一区二区三区不卡国产欧美| a4yy欧美一区二区三区| 国产精品久久久一区麻豆最新章节| 成人99免费视频|