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

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

?? pl0_02.pas

?? 一個詞法分析器還有實驗的說明
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
    expression(fsys);
    gen(opr,0,6);
  end
  else
  begin
    expression([eql,neq,lss,leq,gtr,geq]+fsys);
    if not(sym in [eql,neq,lss,leq,gtr,geq]) then error(20)
    else
    begin
      relop :=sym;
      getsym;
      expression(fsys);
      case relop of
        eql:gen(opr,0,8);
	neq:gen(opr,0,9);
	lss:gen(opr,0,10);
	geq:gen(opr,0,11);
	gtr:gen(opr,0,12);
	leq:gen(opr,0,13);
      end;
    end
  end
end(*condition*);


begin(*statement*)                    {======statement processing=====2222}
  if sym=ident then
  begin
    i:=position(id);
    if i=0 then error(11)
    else
      if table[i].kind<>variable then
      begin
	error(12);
	i:=0;
      end;
      getsym;

      if sym=becomes then getsym
      else error(13);
      expression(fsys);
      if i<>0 then
        with table[i] do gen(sto,lev-level,adr);
    end
    else

    if sym=readsym then
    begin
      getsym;
      if sym<>lparen then error(34)
      else
      repeat
	getsym;
	if sym=ident then i:=position(id)
        else i:=0;
        if i=0 then error(35)
        else
	with table[i] do
	begin
	  gen(opr,0,16);
	  gen(sto,lev-level,adr);
        end;
	getsym;
      until sym<>comma;
      if sym<>rparen then
      begin
        error(33);
	while not(sym in fsys)do getsym;
      end
      else getsym;
    end
    else

    if sym=writesym then
    begin
      getsym;
      if sym=lparen then
      begin
      repeat
	getsym;
        expression([rparen,comma]+fsys);
	gen(opr,0,14)
      until sym<>comma;
      if sym<>rparen then error(33)
      else getsym;
    end;
    gen(opr,0,15);
    end
    else

      if sym=callsym then
      begin
        getsym;
        if sym<>ident then error(14)
        else
        begin
          i:=position(id);
          if i=0 then error(11)
          else
	    with table[i] do
	      if kind=procedur then gen(cal,lev-level,adr)
              else error(15);
	    getsym;
          end;
        end
        else

      if sym=ifsym then
      begin
	getsym;
	condition([thensym,dosym]+fsys);
        if sym=thensym then getsym
	else error(16);
	cx1:=code_index;
	gen(jpc,0,0);
	statement(fsys);
	code[cx1].a:=code_index;
      end
      else

      if sym=beginsym then
      begin
        getsym;
	statement([semicolon,endsym]+fsys);
	while sym in [semicolon]+statbegsys do
	begin
	  if sym=semicolon then getsym
          else error(10);
	  statement([semicolon,endsym]+fsys)
        end;
	if sym=endsym then getsym
	else error(17)
      end
      else

      if sym=whilesym then
      begin
	cx1:=code_index;
	getsym;
	condition([dosym]+fsys);
	cx2:=code_index;
	gen(jpc,0,0);
        if sym=dosym then getsym
        else error(18);
        statement(fsys);
        gen(jmp,0,cx1);
        code[cx2].a:=code_index
      end;
    test(fsys,[],19)
end(*statement*);

begin(*block*)            {***************block begin here*******************11111}
 dx:=3;
 tx0:=tx;
 table[tx].adr:=code_index;
 gen(jmp,0,0);
 if lev>levelmax
   then error(32);
 repeat
  if sym=constsym then
     begin
       getsym;
       repeat
         constdeclaration;
         while sym=comma do
	 begin
	   getsym;
	   constdeclaration
	 end;
	 if sym=semicolon
	   then getsym
	   else error(5)
       until sym<>ident
     end;{end do with constance }
  if sym=varsym  then
     begin
       getsym;
       repeat
         vardeclaration;
         while sym=comma do
	 begin
	   getsym;
	   vardeclaration
	 end;
         if sym=semicolon
	 then getsym
         else error(5)
       Until sym<>ident;
    End;{end to do with variable declaration}
   While sym=procsym do
    begin
      getsym;
        if sym=ident then
          begin
            enter(procedur);
            getsym
          end
        else error(4);
        if sym=semicolon
          then getsym
        else error(5);
      block(lev+1,tx,[semicolon]+fsys);
      if sym=semicolon then
        begin
          getsym;
          test(statbegsys+[ident,procsym],fsys,6);
        end
      else error(5)
   end;{end while sym=procsym}

   test(statbegsys+[ident],declbegsys,7)
 until not(sym in declbegsys);{end the declaration process}

 code[table[tx0].adr].a:=code_index;
 with table[tx0] do
   begin
     adr:=code_index;
     size:=dx;
   end;
 cx0:=code_index;
 gen(int,0,dx);
 statement([semicolon,endsym]+fsys);
 gen(opr,0,0);
 test(fsys,[],8);
 listcode
end(*block*);

procedure interpret;  {*******interpret:對目標代碼的解釋執行程序**********1111}
 const stacksize=500;
 var p,b,t:integer;(*program base topstack registers*)
     i:instruction;
     s:array[1..stacksize]of integer;(*datastore*)

 Function base(l:integer):integer; {====base:通過靜態鏈求數據區的基地址==2222}
  Var b1:integer;
  Begin
    B1:=b;(*find base 1 level down*)
    While l>0 do
      Begin
        B1:=s[b1];
        L:=l-1
      End;
    Base:=b1
  End(*base*);

 begin                                {======begin interpret========1111}
   writeln('start pl0');
   t:=0;b:=1;p:=0;
   s[1]:=0;s[2]:=0;s[3]:=0;
   repeat
     i:=code[p];
     p:=p+1;
     with i do
       case f of
         lit:begin
              t:=t+1;
              s[t]:=a;
             end;
         opr:case a of   (* opreator*)
               0:begin (*return*)
               	 t:=b-1;
                     p:=s[t+3];
                     b:=s[t+2];
                     end;
               1:s[t]:=-s[t];
               2:begin
               	 t:=t-1;
                     s[t]:=s[t]+s[t+1]
                     end;
               3:begin
               	 t:=t-1;
	           s[t]:=s[t]-s[t+1]
                     end;
               4:begin
	           t:=t-1;
	           s[t]:=s[t]*s[t+1]
                     end;
               5:begin
	           t:=t-1;
	           s[t]:=s[t] div s[t+1]
                     end;
               6:s[t]:=ord(odd(s[t]));
               8:begin
	           t:=t-1;
	           s[t]:=ord(s[t]=s[t+1])
	           end;
               9:begin
	           t:=t-1;
	           s[t]:=ord(s[t]<>s[t+1])
	           end;
               10:begin
	           t:=t-1;
	           s[t]:=ord(s[t]<s[t+1])
	           end;
               11:begin
	           t:=t-1;
	           s[t]:=ord(s[t]>=s[t+1])
	           end;
               12:begin
	           t:=t-1;
	           s[t]:=ord(s[t]>s[t+1])
	           end;
               13:begin
	           t:=t-1;
	           s[t]:=ord(s[t]<=s[t+1])
	           end;
               14:begin
	           write(s[t]);
	           write(fa2,s[t]);
	           t:=t-1;
	           end;
               15:begin
	           writeln;
	           writeln(fa2);
	           end;
               16:begin
	           t:=t+1;
	           write('?');
	           write(fa2,'?');
	           readln(s[t]);
	           end;
          end;{end opr}
        lod:begin
	    t:=t+1;
	    s[t]:=s[base(1)+a]
	    end;
        sto:begin
	    s[base(1)+a]:=s[t];         (*writeln(s[t])*)
	    t:=t-1;
	    end;
        cal:begin(*generat new block mark*)
	    s[t+1]:=base(1);
	    s[t+2]:=b;
	    s[t+3]:=p;
	    b:=t+1;
	    p:=a;
	    end;
        int:t:=t+a;
        jmp:p:=a;
        jpc:begin
	   if s[t]=0
	     then p:=a;
	   t:=t-1;
	  end;
     end(* with i case f *)
   until p=0;
   close(fa2)
 end(* interpret *);



{****************************main program begin here************************************0000}
begin(*main*)
 for ch:=' 'to'!'do ssym[ch]:=nul;
	(* changed because of different character set note
          the typos below in the original where the alfas
          were not given correct space *)
  word[1]:='begin     ';
  word[2]:='call      ' ;
  word[3]:='const     ';
  word[4]:='do        ';
  word[5]:='end       ';
  word[6]:='if        ';
  word[7]:='odd       ';
  word[8]:='procedure ';
  word[9]:='read      ';
  word[10]:='then      ';
  word[11]:='var       ';
  word[12]:='while     ';
  word[13]:='write     ';


  wsym[1]:=beginsym;     wsym[2]:=callsym;
  wsym[3]:=constsym;     wsym[4]:=dosym;
  wsym[5]:=endsym;       wsym[6]:=ifsym;
  wsym[7]:=oddsym;       wsym[8]:=procsym;
  wsym[9]:=readsym;      wsym[10]:=thensym;
  wsym[11]:=varsym;      wsym[12]:=whilesym;
  wsym[13]:=writesym;


  ssym['+']:=plus;       ssym['-']:=minus;
  ssym['*']:=times;      ssym['/']:=slash;
  ssym['(']:=lparen;     ssym[')']:=rparen;
  ssym['=']:=eql;        ssym[',']:=comma;
  ssym['.']:=period;     ssym['#']:=neq;
  ssym[';']:=semicolon;


  mnemonic[lit]:='lit  ';mnemonic[opr]:='opr  ';
  mnemonic[lod]:='lod  ';mnemonic[sto]:='sto  ';
  mnemonic[cal]:='cal  ';mnemonic[int]:='int  ';
  mnemonic[jmp]:='jmp  ';mnemonic[jpc]:='jpc  ';


  declbegsys:=[constsym,varsym,procsym];
  statbegsys:=[beginsym,callsym,ifsym,whilesym];
  facbegsys:=[ident,number,lparen];

  assign(fa1,'');    {fa1: list running time information }
  rewrite(fa1);
  write(fa1,'source file?');
  readln(fname);
  writeln(fa1,fname);

  assign(fin,fname); {fin:source file will be complied}
  reset(fin);
  {read(fin,fname);}

  write('list object code ?');
  readln(fname);
  write(fa1,'list object code ?');
  listswitch:=(fname='y');

  err:=0;   {error number}
  char_count:=0;    {}
  code_index:=0;
  line_length:=0;
  ch:=' ';
  kk:=idLength;   {}
  getsym;

  assign(fa,'fa');rewrite(fa);
  assign(fa2,'fa2');rewrite(fa2);
  block(0,0,[period]+declbegsys+statbegsys);
  close(fa);
  close(fa1);

  if sym<>period then
     error(9);
  if err=0 then
     interpret
  else
     write('errors in pl/0 program');
99:
  close(fin);
  writeln
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人伦禁忌dvd放荡欲情| 中文字幕在线不卡一区| 99久久久无码国产精品| 国产中文字幕精品| 久久国产视频网| 另类小说欧美激情| 蜜桃传媒麻豆第一区在线观看| 天天操天天色综合| 天堂精品中文字幕在线| 天天av天天翘天天综合网色鬼国产| 亚洲电影视频在线| 午夜精品福利一区二区三区av| 亚洲午夜私人影院| 日韩有码一区二区三区| 日本不卡一区二区三区| 麻豆精品一区二区综合av| 蜜臀av性久久久久蜜臀av麻豆| 麻豆成人免费电影| 国产精品乡下勾搭老头1| 风间由美一区二区三区在线观看 | 精品免费日韩av| 欧美精品一卡二卡| 精品久久久久久久久久久久久久久久久| 91精品国产一区二区| 精品国产伦理网| 国产精品久久久久久久浪潮网站| 亚洲天堂福利av| 五月婷婷久久综合| 国产一区二区三区久久久| 国产a级毛片一区| 91福利社在线观看| 日韩精品一区二区三区在线观看| 国产三级欧美三级日产三级99| 欧美国产一区二区在线观看| 一区二区三区在线播| 奇米影视一区二区三区小说| 丁香一区二区三区| 欧美日韩一区二区三区四区 | 九九在线精品视频| 成人app在线观看| 欧美日韩aaaaaa| 国产欧美精品一区aⅴ影院| 夜夜亚洲天天久久| 国产精品1区2区3区| 欧美色中文字幕| 国产精品情趣视频| 久久99国内精品| 在线一区二区三区四区五区| xfplay精品久久| 亚洲国产视频在线| 99国产精品久| 久久久五月婷婷| 日本视频一区二区| 日本高清成人免费播放| 久久久久久久久久久电影| 亚洲国产精品久久不卡毛片| 成人理论电影网| 精品美女一区二区| 五月综合激情婷婷六月色窝| 91一区二区三区在线观看| 2021国产精品久久精品| 视频一区免费在线观看| 91国偷自产一区二区开放时间| 国产嫩草影院久久久久| 精品sm在线观看| 日本午夜一本久久久综合| 欧美性大战久久久久久久蜜臀| 久久久99精品免费观看| 精品一区二区国语对白| 欧美一区二区三级| 日韩黄色小视频| 欧美精品在线观看播放| 天天综合色天天综合色h| 91福利国产精品| 亚洲精品视频在线看| 色综合色综合色综合| 亚洲美女淫视频| 国产九色精品成人porny| 欧洲一区在线观看| 亚洲国产一区二区在线播放| 欧美日韩一级二级| 肉丝袜脚交视频一区二区| 欧美高清一级片在线| 日本不卡的三区四区五区| 欧美精选在线播放| 日韩高清不卡一区二区三区| 一本色道a无线码一区v| 成人免费在线视频| 在线观看一区不卡| 日韩成人dvd| 日韩一级黄色片| 激情综合网天天干| 久久久久国产成人精品亚洲午夜| 国产精品一区二区x88av| 亚洲欧洲日韩在线| 国产精品一区二区无线| 日韩美女视频19| 欧美日本国产一区| 精品一区二区久久| 中文字幕日韩精品一区| 91丨九色丨蝌蚪丨老版| 亚洲精品免费看| 337p亚洲精品色噜噜| 国产最新精品免费| 中文字幕免费不卡在线| 色老汉一区二区三区| 美女在线一区二区| 1024成人网色www| 欧美群妇大交群的观看方式| 国产一区二区主播在线| 亚洲免费观看高清| 日韩一级二级三级精品视频| 成人性生交大片免费看视频在线| 亚洲综合在线观看视频| 日韩精品一区二区三区四区视频| 成人免费毛片片v| 亚洲成a天堂v人片| 国产精品三级电影| 欧美酷刑日本凌虐凌虐| av中文字幕不卡| 久久精品国产999大香线蕉| 中文字幕一区二区三区四区不卡| 7777精品伊人久久久大香线蕉最新版| 国产福利一区二区三区视频在线| 亚洲一区二区三区不卡国产欧美| 精品少妇一区二区三区日产乱码| 91九色02白丝porn| 国产成人免费网站| 免费看欧美美女黄的网站| 国产精品久久久久aaaa樱花| 欧美成人伊人久久综合网| 在线观看av一区二区| 高清shemale亚洲人妖| 极品少妇xxxx偷拍精品少妇| 五月婷婷久久丁香| 亚洲欧美另类久久久精品| 26uuu精品一区二区| 91精品国产91热久久久做人人| 成人av小说网| 高清不卡一区二区| 国内精品不卡在线| 美女视频网站久久| 日韩精品一卡二卡三卡四卡无卡| 亚洲人123区| 中文字幕永久在线不卡| 国产日韩成人精品| 久久夜色精品一区| xvideos.蜜桃一区二区| 欧美va亚洲va在线观看蝴蝶网| 欧美久久一二三四区| 欧美性三三影院| 欧美亚洲图片小说| 色狠狠色噜噜噜综合网| 国产福利一区二区| 国产99久久久国产精品潘金网站| 国产一区二区久久| 国产精品一色哟哟哟| 国产电影精品久久禁18| 国产风韵犹存在线视精品| 豆国产96在线|亚洲| 成年人午夜久久久| 91在线精品秘密一区二区| 99精品热视频| 在线亚洲高清视频| 欧美日韩美少妇| 欧美一区二区精品久久911| 日韩欧美一二三区| 26uuu另类欧美| 中文字幕免费不卡| 亚洲色图欧洲色图| 18涩涩午夜精品.www| 亚洲国产一区二区视频| 蜜臀av一区二区| 成人性生交大片免费看中文网站| 97se亚洲国产综合自在线不卡| 91福利在线看| 日韩女优毛片在线| 中文子幕无线码一区tr| 一级女性全黄久久生活片免费| 亚洲国产成人av网| 久久99蜜桃精品| 成人avav在线| 欧美一区二区观看视频| 国产三级一区二区| 亚洲成人av在线电影| 精品系列免费在线观看| caoporn国产一区二区| 99久久er热在这里只有精品15| 日本精品视频一区二区三区| 日韩一区二区电影网| 成人欧美一区二区三区黑人麻豆 | 亚洲国产精品黑人久久久| 亚洲色图欧洲色图婷婷| 青青草国产成人99久久| 波多野结衣中文一区| 日韩色在线观看| 一区二区三区在线播| 国产精品一区二区免费不卡| 9i在线看片成人免费| 精品国产精品一区二区夜夜嗨|