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

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

?? pl0-1.pas

?? PL0 源文件ni yao mad nainai
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
program pl0(input,output);
{pl/0 compiler with code generation}
label 99;
const norw = 11;     {no. of reserved words}
   txmax = 100;      {length of identifier table}
   nmax = 14;        {max. no. of digits in numbers}
   al = 10;          {length of identifiers}
   amax = 2047;      {maximum address}
   levmax = 3;       {maximum depth of block nesting}
   cxmax = 200;      {size of code array}
type symbol =
   (nul,ident,number,plus,minus,times,slash,oddsym,
    eql,neq,lss,leq,gtr,geq,lparen,rparen,comma,semicolon,
    period,becomes,beginsym,endsym,ifsym,thensym,
    whilesym,dosym,callsym,constsym,varsym,procsym);
    alfa = packed array [1..al] of char;
    object1 = (constant,varible,proc);
    symset = set of symbol;
    fct = (lit,opr,lod,sto,cal,int,jmp,jpc);   {functions}
    instruction = packed record
                     f: fct;           {function code}
                     l: 0..levmax;     {level}
                     a: 0..amax        {displacement address}
                  end;
{   lit 0,a  :  load constant a
    opr 0,a  :  execute operation a
    lod l,a  :  load varible l,a
    sto l,a  :  store varible l,a
    cal l,a  :  call procedure a at level l
    int 0,a  :  increment t-register by a
    jmp 0,a  :  jump to a
    jpc 0,a  :  jump conditional to a   }
var ch: char;         {last character read}
    sym: symbol;      {last symbol read}
    id: alfa;         {last identifier read}
    num: integer;     {last number read}
    cc: integer;      {character count}
    ll: integer;      {line length}
    kk, err: integer;
    cx: integer;      {code allocation index}
    line: array [1..81] of char;
    a: alfa;
    code: array [0..cxmax] of instruction;
    word: array [1..norw] of alfa;
    wsym: array [1..norw] of symbol;
    ssym: array [char] of symbol;
    mnemonic: array [fct] of
                 packed array [1..5] of char;
    declbegsys, statbegsys, facbegsys: symset;
    table: array [0..txmax] of
           record name: alfa;
              case kind: object1 of
              constant: (val: integer);
              varible, proc: (level, adr: integer)
           end;
    fin:text;
    sfile:string;
procedure error(n: integer);
begin writeln(' ****',' ': cc-1, '^',n: 2); err := err+1
end {error};

procedure getsym;
   var i,j,k: integer;
 
   procedure getch;
   begin if cc = ll then
      begin if eof(fin) then
                 begin write(' program incomplete'); {goto 99}
                       close(fin);
                       exit;
                 end;
         ll := 0; cc := 0; write(cx: 5,' ');
         while not eoln(fin) do
            begin ll := ll+1; read(fin,ch); write(ch); line[ll]:=ch
            end;
         writeln; readln(fin); ll := ll + 1; line[ll] := ' ';
      end;
      cc := cc+1; ch := line[cc]
   end {getch};

begin {getsym}
   while ch  = ' ' do getch;
   if ch in ['a'..'z'] then
   begin {identifier or reserved word} k := 0;
      repeat if k < al then
         begin k := k+1; a[k] := ch
         end;
         getch;
      until not(ch in ['a'..'z','0'..'9']);
      if k >= kk then kk := k else
         repeat a[kk] := ' '; kk := kk-1
         until kk = k;
      id := a; i := 1; j := norw;
      repeat k := (i+j) div 2;
         if id <= word[k] then j := k-1;
         if id >= word[k] then i := k+1
      until i > j;
      if i-1 > j then sym := wsym[k] else sym := ident
   end else
   if ch in ['0'..'9'] then
   begin {number} k := 0; num := 0; sym := number;
      repeat num := 10*num + (ord(ch)-ord('0'));
         k := k+1; getch
      until not(ch in ['0'..'9']);
      if k > nmax then error(30)
   end else
   if ch = ':' then
   begin getch;
      if ch = '=' then
      begin sym := becomes; getch
      end else sym := nul;
   end else
   begin sym := ssym[ch]; getch
   end
end {getsym};
 
procedure gen(x: fct; y,z: integer);
begin if cx > cxmax then
           begin write(' program too long'); {goto 99}
           end;
   with code[cx] do
      begin f := x; l := y; a := z
      end;
   cx := cx + 1
end {gen};
 
procedure test(s1,s2: symset; n: integer);
begin if not(sym in s1) then
        begin error(n); s1 := s1 + s2;
           while not(sym in s1) do getsym
        end
end {test};
 
procedure block(lev,tx: integer; fsys: symset);
   var dx: integer;     {data allocation index}
      tx0: integer;     {initial table index}
      cx0: integer;     {initial code index}
   procedure enter(k: object1);
   begin {enter object into table}
      tx := tx + 1;
      with table[tx] do
      begin name := id; kind := k;
         case k of
         constant: begin if num > amax then
                              begin error(30); num :=0 end;
                      val := num
                   end;
         varible: begin level := lev; adr := dx; dx := dx + 1;
                  end;
         proc: level := lev
         end
      end
   end {enter};

   function position(id: alfa): integer;
      var i: integer;
   begin {find indentifier id in table}
      table[0].name := id; i := tx;
      while table[i].name <> id do i := i-1;
      position := i
   end {position};

   procedure constdeclaration;
   begin if sym = ident then
      begin getsym;
         if sym in [eql, becomes] then
         begin if sym = becomes then error(1);
            getsym;
            if sym = number then
               begin enter(constant); getsym
               end
            else error(2)
         end else error(3)
      end else error(4)
   end {constdeclaration};
 
   procedure vardeclaration;
   begin if sym = ident then
           begin enter(varible); getsym
           end else error(4)
   end {vardeclaration};
 
   procedure listcode;
      var i: integer;
   begin {list code generated for this block}
      for i := cx0 to cx-1 do
         with code[i] do
            writeln(i:5, mnemonic[f]:5, 1:3, a:5)
   end {listcode};
 
   procedure statement(fsys: symset);
      var i, cx1, cx2: integer;
      procedure expression(fsys: symset);
         var addop: symbol;
         procedure term(fsys: symset);
            var mulop: symbol;
            procedure factor(fsys: symset);
               var i: integer;
            begin test(facbegsys, fsys, 24);
               while sym in facbegsys do
               begin
                  if sym = ident then
                  begin i:= position(id);
                     if i = 0 then error(11) else
                     with table[i] do
                     case kind of
                        constant: gen(lit, 0, val);
                        varible: gen(lod, lev-level, adr);
                        proc: error(21)
                     end;
                     getsym
                  end else
                  if sym = number then
                  begin if num >  amax then
                           begin error(30); num := 0
                           end;
                     gen(lit, 0, num); getsym
                  end else
                  if sym = lparen then
                  begin getsym; expression([rparen]+fsys);
                     if sym = rparen then getsym else error(22)
                  end;
                  test(fsys, [lparen], 23)
               end
            end {factor};
 
         begin {term} factor(fsys+[times, slash]);
            while sym in [times, slash] do
             begin mulop:=sym;getsym;factor(fsys+[times,slash]);
              if mulop=times then gen(opr,0,4) else gen(opr,0,5)
             end
         end {term};
      begin {expression}
         if sym in [plus, minus] then
            begin addop := sym; getsym; term(fsys+[plus,minus]);
               if addop = minus then gen(opr, 0,1)
            end else term(fsys+[plus, minus]);
         while sym in [plus, minus] do
            begin addop := sym; getsym; term(fsys+[plus,minus]);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩激情一区二区| www.成人网.com| 91在线你懂得| 欧美一区二区三区思思人 | 精品一区二区三区视频| 99精品视频在线观看| 欧美tickling网站挠脚心| 亚洲精品你懂的| 成人综合在线视频| 日韩视频在线一区二区| 一区二区三区在线观看欧美 | 亚洲黄色录像片| 韩国成人福利片在线播放| 欧美日韩国产一二三| 亚洲欧美日韩系列| 成人av网站在线观看| 精品国内片67194| 蜜桃av一区二区在线观看| 在线观看免费亚洲| 亚洲同性同志一二三专区| 国产精选一区二区三区| 精品欧美一区二区久久| 青娱乐精品在线视频| 欧美美女视频在线观看| 亚洲一区二区在线免费观看视频| 91在线视频官网| 亚洲天堂免费在线观看视频| www.色精品| 综合久久久久综合| 91香蕉视频黄| 一区二区三区在线视频观看58| 成人免费毛片片v| 国产欧美日韩综合| 国产风韵犹存在线视精品| 久久综合精品国产一区二区三区 | 亚洲午夜一区二区三区| 在线观看网站黄不卡| 一区二区三区成人在线视频| 欧洲国产伦久久久久久久| 一区二区免费在线| 欧美精品v国产精品v日韩精品| 午夜免费久久看| 欧美一级在线免费| 国产麻豆91精品| 国产精品久久久久久久久免费桃花 | 欧美国产乱子伦| gogo大胆日本视频一区| 亚洲视频精选在线| 欧美美女一区二区在线观看| 美日韩黄色大片| 国产色综合一区| 色婷婷综合五月| 日韩精品乱码av一区二区| 日韩欧美中文一区二区| 国产在线视视频有精品| 中文字幕欧美日韩一区| 在线亚洲欧美专区二区| 日韩激情在线观看| 国产拍欧美日韩视频二区| 久久尤物电影视频在线观看| 成人成人成人在线视频| 亚洲一卡二卡三卡四卡五卡| 日韩欧美不卡在线观看视频| 国产69精品久久777的优势| 亚洲激情图片小说视频| 欧美一区二区三区思思人| 国产成人av一区二区三区在线| 亚洲色图制服诱惑| 精品少妇一区二区三区日产乱码| 成人一区在线看| 日韩电影在线观看一区| 日本一区二区三区久久久久久久久不| 在线中文字幕一区二区| 韩国一区二区三区| 亚洲一区二区三区四区在线| 久久久另类综合| 欧美日韩国产美| 成人性生交大片免费看视频在线 | 亚洲欧洲色图综合| 日韩亚洲欧美在线| 一本大道久久a久久精二百| 捆绑调教美女网站视频一区| |精品福利一区二区三区| 欧美电影免费观看完整版| 色国产综合视频| 国产成人av电影在线| 日韩精品乱码av一区二区| 亚洲色图清纯唯美| 国产午夜久久久久| 欧美videossexotv100| 欧美性色欧美a在线播放| 国产福利精品一区二区| 青青草97国产精品免费观看| 一区二区三区四区国产精品| 久久久精品中文字幕麻豆发布| 制服视频三区第一页精品| 日本久久精品电影| 91在线无精精品入口| 国产ts人妖一区二区| 捆绑调教美女网站视频一区| 日韩成人免费看| 三级久久三级久久久| 午夜精品久久久久久久久| 亚洲已满18点击进入久久| 综合色中文字幕| 亚洲视频一二区| 亚洲欧美日韩综合aⅴ视频| 欧美极品xxx| 中文字幕电影一区| 国产精品萝li| 成人欧美一区二区三区黑人麻豆| 中文字幕 久热精品 视频在线| 久久久噜噜噜久噜久久综合| 精品久久久久久无| 久久影院午夜片一区| 国产三级精品三级| 欧美激情中文字幕| 中文字幕亚洲精品在线观看| 1000精品久久久久久久久| 亚洲精品欧美在线| 午夜精品福利在线| 日韩高清在线观看| 黄色成人免费在线| 粉嫩蜜臀av国产精品网站| 丁香一区二区三区| 91视频在线观看| 欧美丝袜自拍制服另类| 在线不卡一区二区| 欧美zozozo| 国产女人18毛片水真多成人如厕| 国产精品美女久久久久久2018| 亚洲欧洲另类国产综合| 亚洲一区在线观看视频| 三级成人在线视频| 国产真实乱对白精彩久久| 成人免费视频视频| 在线亚洲高清视频| 日韩欧美高清在线| 中文字幕精品—区二区四季| 一区二区日韩电影| 久久国产人妖系列| 99在线视频精品| 欧美日本在线视频| 久久精品一二三| 一区二区三区中文字幕在线观看| 日韩av在线免费观看不卡| 国产精品911| 色久综合一二码| 欧美va亚洲va国产综合| 中文字幕一区视频| 青青国产91久久久久久| 大胆欧美人体老妇| 欧美精品少妇一区二区三区| 国产亚洲1区2区3区| 亚洲在线免费播放| 成人永久免费视频| 91麻豆精品国产91| 国产精品美女一区二区在线观看| 香蕉成人伊视频在线观看| 岛国精品一区二区| 日韩午夜激情视频| 亚洲色大成网站www久久九九| 免费成人结看片| 欧美无砖砖区免费| 国产人久久人人人人爽| 日产精品久久久久久久性色| 99视频有精品| 久久久久久一二三区| 天堂一区二区在线| 91浏览器入口在线观看| 国产亚洲福利社区一区| 婷婷久久综合九色国产成人| www.欧美日韩国产在线| 久久综合九色综合欧美就去吻| 亚洲妇熟xx妇色黄| 91免费版pro下载短视频| 国产色一区二区| 久久不见久久见免费视频7| 国产亚洲短视频| 男女男精品网站| 欧美视频中文字幕| 亚洲欧美视频在线观看| 成人综合婷婷国产精品久久 | 久久久久国产精品厨房| 人人爽香蕉精品| 欧美嫩在线观看| 尤物av一区二区| 91麻豆6部合集magnet| 中文字幕一区二区三区视频| 国产呦萝稀缺另类资源| 精品奇米国产一区二区三区| 肉色丝袜一区二区| 欧美日韩国产在线播放网站| 亚洲伊人伊色伊影伊综合网| 色先锋资源久久综合| 亚洲三级小视频| 色老头久久综合| 亚洲成人免费影院| 欧美精品在欧美一区二区少妇| 亚洲午夜日本在线观看|