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

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

?? pl0-pas.txt.pas

?? Pascal語(yǔ)言寫的擴(kuò)充PL0文法編譯器
?? PAS
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
          gen1(addc, ad)
end   end;

procedure addressvar(ref: integer);
begin with itab[ref] do
      begin address(vlevel, vadr); if refpar then gen0(load) end
end;

procedure mustbe(x, y: integer);
begin if x<>y then
      if (ttab[x].kind=arrays) and (ttab[y].kind=arrays) and
         (ttab[x].low=ttab[y].low) and (ttab[x].high=ttab[y].high)
      then mustbe(ttab[x].elemtip, ttab[y].elemtip)
      else error(107)
end;

procedure expression(var x: integer);
  forward;

procedure selector(var t: integer; var ref: integer);
  var j, x: integer;
begin t:= itab[ref].tip; getsym;
      if sym in [period, lbrack] then begin
          addressvar(ref); ref:= 0;
          while sym in [period, lbrack] do
          case sym of
            period : begin if ttab[t].kind<>records then error(108);
                           getsym; check(ident);
                           j:= ttab[t].fields; itab[0].name:= id;
                           while itab[j].name<>id do j:= itab[j].link;
                           if j=0 then error(109);
                           gen1(addc, itab[j].offset);
                           t:= itab[j].tip; getsym
                     end;
            lbrack : begin repeat if ttab[t].kind<>arrays then error(110);
                                  getsym; expression(x); mustbe(intip, x);
                                  gen1(addc, -ttab[t].low);
                                  t:= ttab[t].elemtip;
                                  gen1(mulc, ttab[t].size); gen0(add)
                           until sym<>comma;
                           skip(rbrack)
end   end end        end;

procedure varpar(var t: integer);
  var j: integer;
begin check(ident); j:= position; selector(t, j);
      if j<>0 then addressvar(j)
end;

procedure standfct(n: integer);
  var x, l: integer;
begin case n of
        fabs: begin skip(lparen); expression(x); mustbe(intip, x);
                  gen0(dupl); gen1(ldc, 0); gen0(lssi);
                  l:= codelabel; gen1(jumpz, 0); gen0(neg);
                  code[l].a:= codelabel;
                  skip(rparen)
              end;
        fsqr: begin skip(lparen); expression(x); mustbe(intip, x);
                  gen0(dupl); gen0(mul); skip(rparen)
              end;
        fodd: begin skip(lparen); expression(x); mustbe(intip, x);
                  gen0(rem2); skip(rparen)
              end;
        fchr: begin skip(lparen); expression(x); mustbe(intip, x);
                  skip(rparen)
              end;
        ford: begin skip(lparen); expression(x); mustbe(chartip, x);
                  skip(rparen)
              end;
        fwrite, fwriteln:
              begin if n=fwrite then check(lparen);
                  if sym=lparen then begin
                      repeat getsym;
                          if sym=sstring then begin
                              for x:= 1 to slen do begin
                                  gen1(ldc, ord(str[x]));
                                  gen0(wrc)
                              end;
                              getsym
                          end else begin
                              expression(x);
                              if sym=colon then begin
                                  mustbe(intip, x); getsym;
                                  expression(x); mustbe(intip,x);
                                  gen0(wri)
                              end else if x=intip then begin
                                  gen1(ldc, 8); gen0(wri)
                              end else if x=chartip then
                                  gen0(wrc)
                              else
                                  error(111)
                          end
                      until sym<>comma;
                      skip(rparen)
                  end;
                  if n=fwriteln then gen0(wrl)
              end;
     fread, freadln:
              begin if n=fread then check(lparen);
                  if sym=lparen then begin
                      repeat getsym; varpar(x);
                             if x=intip   then gen0(rdi) else
                             if x=chartip then gen0(rdc)
                                          else error(112)
                      until sym<>comma;
                      skip(rparen)
                  end;
                  if n=freadln then gen0(rdl)
              end;
        feoln: gen0(eol)
end   end;

procedure funcall(i: integer);
  var d, p, x: integer;
begin getsym;
      with itab[i] do
      if flevel<0 then
          standfct(fadr)
      else begin
          if tip<>0 then gen1(ldc, 0); p:= i; d:= dx;
          if sym=lparen then begin
              repeat getsym;
                  if p=lastpar then error(113); p:= p+1;
                  if itab[p].refpar then
                      varpar(x)
                  else begin
                      expression(x);
                      if ttab[x].kind<>simple then gen1(copy, ttab[x].size)
                  end;
                  mustbe(itab[p].tip, x)
              until sym<>comma;
              skip(rparen)
          end;
          if p<>lastpar then error(114);
          if flevel<>0 then address(flevel, 0);
          gen1(call, fadr); dx:= d
end   end;

procedure factor(var t: integer);
   var i: integer;
begin if sym=ident then begin
          i:= position; t:= itab[i].tip;
          case itab[i].kind of
            konst: begin getsym; gen1(ldc, itab[i].val) end;
            varbl: begin selector(t, i);
                         if i<>0 then addressvar(i);
                         if ttab[t].kind=simple then gen0(load)
                   end;
            funkt: if t=0 then error(115) else funcall(i);
            tipe : error(116)
          end
      end else if sym=number then begin
          gen1(ldc, num); t:= intip; getsym
      end else if (sym=sstring) and (slen=1) then begin
          gen1(ldc, ord(str[1])); t:= chartip; getsym
      end else if sym=lparen then begin
          getsym; expression(t); skip(rparen)
      end else if sym=notsym then begin
          getsym; factor(t); mustbe(booltip, t); gen0(neg); gen1(addc, 1)
      end else
          error(117)
end;

procedure term(var x: integer);
  var y: integer;
begin factor(x);
      while sym in [andsym, star, divsym, modsym] do begin
          if sym=andsym then mustbe(booltip, x) else mustbe(intip, x);
          case sym of
            star  : begin getsym; factor(y); gen0(mul) end;
            divsym: begin getsym; factor(y); gen0(divd) end;
            modsym: begin getsym; factor(y); gen0(remd) end;
            andsym: begin getsym; factor(y); gen0(andb) end
          end;
          mustbe(x, y)
end   end;

procedure simplexpression(var x: integer);
  var y: integer;
begin if sym=plus then begin
          getsym; term(x); mustbe(intip, x)
      end else if sym=minus then begin
          getsym; term(x); mustbe(intip, x); gen0(neg)
      end else
          term(x);
      while sym in [orsym, plus, minus] do begin
          if sym=orsym then mustbe(booltip, x) else mustbe(intip, x);
          case sym of
            plus : begin getsym; term(y); gen0(add) end;
            minus: begin getsym; term(y); gen0(neg); gen0(add) end;
            orsym: begin getsym; term(y); gen0(orb) end
          end;
          mustbe(x, y)
end   end;

procedure expression(var x: integer);
  var op: symbol; y: integer;
begin simplexpression(x);
      if sym in [eql, neq, lss, leq, gtr, geq] then begin
          if ttab[x].kind<>simple then error(118);
          op:= sym; getsym; simplexpression(y); mustbe(x, y);
          case op of
            eql: gen0(eqli);
            neq: gen0(neqi);
            lss: gen0(lssi);
            leq: gen0(leqi);
            gtr: gen0(gtri);
            geq: gen0(geqi)
          end;
          x:= booltip
end   end;

procedure statement;
  var i, j, t, x: integer;
begin if sym=ident then begin
          i:= position;
          with itab[i] do
          case kind of
            varbl: begin selector(t, i); skip(becomes);
                         expression(x); mustbe(t, x);
                         if i=0 then gen0(swap)
                                else addressvar(i);
                         if ttab[t].kind=simple
                         then gen0(stor)
                         else gen1(move, ttab[t].size)
                   end;
            funkt: if tip=0 then
                       funcall(i)
                   else begin
                       if not inside then error(119);
                       getsym; skip(becomes);
                       expression(x); mustbe(tip, x);
                       address(flevel+1, resultadr);
                       gen0(stor)
                   end;
            konst, field, tipe: error(120)
          end
      end else if sym=ifsym then begin
          getsym; expression(t); mustbe(booltip, t); skip(thensym);
          i:= codelabel; gen1(jumpz, 0); statement;
          if sym=elsesym then begin
              getsym; j:= codelabel; gen1(jump, 0);
              code[i].a:= codelabel; i:= j; statement
          end;
          code[i].a:= codelabel
      end else if sym=whilesym then begin
          getsym; i:= codelabel; expression(t); mustbe(booltip, t);
          skip(dosym); j:= codelabel; gen1(jumpz, 0);
          statement; gen1(jump, i);
          code[j].a:= codelabel
      end else if sym=repeatsym then begin
          i:= codelabel;
          repeat getsym; statement until sym<>semicolon;
          skip(untilsym); expression(t); mustbe(booltip, t);
          gen1(jumpz, i)
      end else if sym=beginsym then begin
          repeat getsym; statement until sym<>semicolon;
          skip(endsym)
end   end;

procedure block(l: integer);
  forward;

procedure constant(var c, t: integer);
  var i, s: integer;
begin if (sym=sstring) and (slen=1) then begin
          c:= ord(str[1]); t:= chartip
      end else begin
          if sym=plus  then begin getsym; s:= +1 end else
          if sym=minus then begin getsym; s:= -1 end
                       else s:= 0;
          if sym=ident then begin
              i:= position;
              if itab[i].kind<>konst then error(121);
              c:= itab[i].val; t:= itab[i].tip
          end else if sym=number then begin
              c:= num; t:= intip
          end else
              error(122);
          if s<>0 then begin mustbe(t, intip); c:= c*s end
      end;
      getsym
end;

procedure constdeclaration;
  var a: alfa; t, c: integer;
begin a:= id; getsym; skip(eql); constant(c, t);
      skip(semicolon); enter(a, konst, t); itab[ix].val:= c
end;

procedure typ(var t: integer);
  var i, j, sz, ft: integer;
  procedure arraytyp(var t: integer);
    var x: integer;
  begin with ttab[t] do begin
            kind:= arrays; getsym; constant(low, x); mustbe(intip, x);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99riav久久精品riav| 免费人成黄页网站在线一区二区| 国产午夜精品一区二区三区视频| 欧美丰满一区二区免费视频| 精品视频一区二区三区免费| 欧美中文字幕一区二区三区| 在线成人小视频| 日韩一区二区三区电影在线观看 | 欧美性猛交xxxxxxxx| 91影院在线观看| 日本道精品一区二区三区 | 国产99久久久国产精品| 国产一区二区三区久久悠悠色av| 久久精品国产网站| 成人三级在线视频| 色噜噜狠狠色综合欧洲selulu| 99免费精品视频| 欧美亚洲综合网| 亚洲精品一区在线观看| 国产精品伦一区| 亚洲国产精品影院| 国产一区二区女| 91麻豆福利精品推荐| 欧美欧美欧美欧美| 日韩欧美一级特黄在线播放| 欧美一级理论性理论a| 久久久青草青青国产亚洲免观| 《视频一区视频二区| 日韩影院在线观看| 福利电影一区二区三区| 欧美最猛黑人xxxxx猛交| 欧美大片免费久久精品三p| 综合激情成人伊人| 奇米色一区二区| 91麻豆国产福利在线观看| 日韩视频免费观看高清在线视频| 国产精品护士白丝一区av| 午夜亚洲国产au精品一区二区| 国产福利精品一区二区| 欧美性高清videossexo| 国产色产综合产在线视频| 亚洲综合色噜噜狠狠| 国产精品资源在线观看| 精品视频1区2区3区| 中文一区在线播放| 老司机一区二区| 欧洲一区在线观看| 国产精品盗摄一区二区三区| 久久精品国产免费| 777奇米成人网| 一区二区三区国产精品| 成人不卡免费av| 久久精品在这里| 蜜桃一区二区三区在线观看| 色婷婷香蕉在线一区二区| 中国色在线观看另类| 精品一区二区三区香蕉蜜桃| 欧美高清你懂得| 一级精品视频在线观看宜春院| av电影在线不卡| 中文字幕av不卡| 国产成人免费视| 国产亚洲一本大道中文在线| 裸体一区二区三区| 91精品国产福利在线观看 | 欧美大片一区二区三区| 午夜久久久久久久久| 色av综合在线| 一区二区三区四区高清精品免费观看 | 91精品国产免费久久综合| 亚洲成人午夜电影| 在线影院国内精品| 国产精品拍天天在线| 国产电影精品久久禁18| 久久麻豆一区二区| 国产不卡视频在线播放| 中文在线资源观看网站视频免费不卡| 精品无人区卡一卡二卡三乱码免费卡 | 日韩国产高清在线| 欧美一级片在线观看| 久久激情五月婷婷| wwwwxxxxx欧美| 国产91丝袜在线播放九色| 欧美激情自拍偷拍| 91网站在线观看视频| 亚洲午夜久久久久久久久电影院| 欧美午夜理伦三级在线观看| 天天综合网 天天综合色| 欧美一级艳片视频免费观看| 韩国一区二区视频| 中国av一区二区三区| 91蜜桃免费观看视频| 亚洲777理论| 精品日韩99亚洲| 成人不卡免费av| 天堂久久久久va久久久久| 日韩午夜中文字幕| 成人黄色小视频| 亚洲午夜久久久| 国产亚洲成年网址在线观看| 成人黄色777网| 婷婷开心激情综合| 国产日韩视频一区二区三区| 色哟哟一区二区在线观看| 日日夜夜免费精品| 国产亚洲精久久久久久| 欧美无人高清视频在线观看| 精品一区二区三区免费观看| 国产精品青草综合久久久久99| 欧美日韩在线亚洲一区蜜芽| 国产一区二区视频在线| 国产精品不卡一区| 日韩女优电影在线观看| 99精品一区二区| 国产在线视频一区二区| 亚洲国产精品久久不卡毛片 | 波多野结衣的一区二区三区| 午夜精彩视频在线观看不卡| 亚洲三级在线看| 91蝌蚪porny九色| 亚洲一区av在线| 中文字幕欧美日韩一区| 日韩亚洲欧美成人一区| 色八戒一区二区三区| 国产成人av电影在线观看| 日韩电影在线一区二区| 一区二区三区国产| 国产精品区一区二区三区| 精品国产3级a| 欧美一区二区三区四区在线观看| 色婷婷狠狠综合| av成人免费在线观看| 国产一区二区三区| 久久国产生活片100| 午夜精品久久久久久久| 一区二区三区国产| 亚洲人午夜精品天堂一二香蕉| 国产亚洲一本大道中文在线| 欧美一区二区三区公司| 欧美一区日本一区韩国一区| 91丨九色丨黑人外教| 99久久99久久免费精品蜜臀| 成人黄色av电影| 激情综合五月天| 偷窥少妇高潮呻吟av久久免费| 亚洲网友自拍偷拍| 午夜在线电影亚洲一区| 亚洲国产精品综合小说图片区| 一区二区欧美国产| 亚洲综合偷拍欧美一区色| 亚洲线精品一区二区三区| 亚洲一区二区av在线| 亚洲电影你懂得| 美国精品在线观看| 久久精品国产精品亚洲精品| 国内精品伊人久久久久影院对白| 国内成人精品2018免费看| 国产乱人伦偷精品视频不卡| 国产ts人妖一区二区| 99精品欧美一区二区三区小说| 99re6这里只有精品视频在线观看| 不卡免费追剧大全电视剧网站| 97aⅴ精品视频一二三区| 欧美午夜影院一区| 日韩一区二区精品葵司在线| 精品日产卡一卡二卡麻豆| 欧美经典三级视频一区二区三区| 国产精品视频一二三区| 亚洲女同女同女同女同女同69| 亚洲午夜激情av| 美女视频黄 久久| 成人综合婷婷国产精品久久 | 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美成人一区二区三区在线观看| 欧美一区二区成人| 中文一区在线播放| 亚洲资源中文字幕| 国产一区二区剧情av在线| 99久久精品国产导航| 欧美一区二区二区| 国产精品福利电影一区二区三区四区| 亚洲丝袜美腿综合| 美女网站色91| 91视频一区二区三区| 日韩午夜电影在线观看| 中文字幕一区二区三区四区| 亚洲成av人片| 高清成人在线观看| 这里只有精品免费| 亚洲丝袜制服诱惑| 国产真实乱对白精彩久久| 欧美三级午夜理伦三级中视频| 久久婷婷成人综合色| 亚洲国产一区二区在线播放| 国产精品一级二级三级| 欧美日韩精品电影| 亚洲欧美欧美一区二区三区| 激情综合网最新| 8x8x8国产精品| 亚洲午夜成aⅴ人片|