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

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

?? pl0-1.pas

?? pascal編譯器程序,希望能給廣大讀者帶來幫助,謝謝大家使用
?? 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一区二区三区免费野_久草精品视频
日韩美女一区二区三区四区| 亚洲免费av网站| 自拍偷拍亚洲欧美日韩| 亚洲mv在线观看| 99久久777色| 久久伊99综合婷婷久久伊| 亚洲欧美日韩国产一区二区三区| 国内精品久久久久影院色| 欧美在线综合视频| 最新欧美精品一区二区三区| 久久精品国产一区二区| 欧美日韩一区二区三区视频| 欧美国产综合一区二区| 伦理电影国产精品| 欧美日韩一二区| 亚洲综合色视频| 91社区在线播放| 国产精品久久久久aaaa樱花| 国产一区二区成人久久免费影院| 91精品国产欧美日韩| 亚洲18色成人| 91国偷自产一区二区三区成为亚洲经典 | 日韩一卡二卡三卡四卡| 国产精品成人午夜| 成人在线一区二区三区| 久久久久久久久久久电影| 精品亚洲国产成人av制服丝袜| 欧美日韩国产免费| 午夜伊人狠狠久久| 欧美日韩国产美| 日本不卡一二三区黄网| 日韩一区二区三区av| 日本vs亚洲vs韩国一区三区| 欧美一区二区三区视频免费 | 91麻豆精品国产91久久久久| 亚洲一二三四区不卡| 欧美视频在线不卡| 夜夜精品浪潮av一区二区三区| 色综合久久综合| 亚洲一区二区在线免费观看视频| 欧美三级韩国三级日本一级| 婷婷成人综合网| 日韩三级伦理片妻子的秘密按摩| 奇米色一区二区| 精品国产乱码久久久久久1区2区| 国内精品写真在线观看| 国产精品色眯眯| 日本韩国精品在线| 图片区小说区区亚洲影院| 欧美一区二区精品| 风流少妇一区二区| 亚洲猫色日本管| 欧美一区二区三区免费在线看| 喷白浆一区二区| 国产日产欧产精品推荐色| jizz一区二区| 午夜欧美2019年伦理| 日韩网站在线看片你懂的| 国产丶欧美丶日本不卡视频| 亚洲丝袜自拍清纯另类| 欧美图区在线视频| 精品一区二区三区香蕉蜜桃| 中文字幕精品一区二区精品绿巨人| www.亚洲国产| 日韩av网站在线观看| 国产亚洲欧美日韩在线一区| 97se亚洲国产综合在线| 日本va欧美va瓶| 国产精品免费看片| 欧美日韩视频在线第一区| 激情综合网激情| 亚洲影视在线播放| 国产网站一区二区三区| 色8久久人人97超碰香蕉987| 精品一区二区三区欧美| 亚洲视频一区在线| 欧美成人精品福利| 99国产精品国产精品久久| 美女mm1313爽爽久久久蜜臀| 亚洲欧洲性图库| 欧美精品一区二区三区蜜桃| 一本色道a无线码一区v| 国产精品一区二区不卡| 亚洲综合区在线| 国产精品午夜免费| 欧美哺乳videos| 欧美日韩国产免费| 色94色欧美sute亚洲线路一ni| 国产精品白丝jk白祙喷水网站| 亚洲一二三专区| 亚洲老妇xxxxxx| 欧美国产精品中文字幕| 精品粉嫩aⅴ一区二区三区四区| 色老汉av一区二区三区| 成人av综合一区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美一区二区三区免费| 欧美性猛交xxxxxx富婆| 99国产精品99久久久久久| 韩国女主播成人在线观看| 婷婷成人综合网| 亚洲国产精品麻豆| 亚洲精品美国一| 亚洲天堂成人网| 亚洲欧洲日产国产综合网| 国产女人aaa级久久久级| 日韩欧美电影一二三| 日韩一级成人av| 欧美一区二区三区婷婷月色| 欧美视频在线一区二区三区| 欧美日韩在线不卡| 欧美另类z0zxhd电影| 欧美三级乱人伦电影| 欧美年轻男男videosbes| 欧美色网一区二区| 欧美另类久久久品| 日韩一区二区三区免费看 | 在线精品视频免费播放| 色欧美片视频在线观看在线视频| 91色在线porny| 91免费看片在线观看| 欧洲av在线精品| 884aa四虎影成人精品一区| 欧美成人三级电影在线| 久久久蜜臀国产一区二区| 久久久精品国产免大香伊 | 精品少妇一区二区三区在线播放| 日韩欧美一区二区三区在线| 久久久一区二区| 国产精品美女久久久久久久久 | 日韩高清不卡一区二区三区| 免费看欧美女人艹b| 国产成人免费9x9x人网站视频| 成人免费观看男女羞羞视频| 99vv1com这只有精品| 欧美日韩mp4| 精品国产自在久精品国产| 国产欧美视频一区二区| 亚洲视频一二三| 免费成人你懂的| 成人av网站在线观看免费| 欧美日韩亚洲综合一区二区三区| 日韩欧美激情在线| 国产精品免费视频一区| 亚洲成人自拍网| 国产在线精品一区二区三区不卡 | 国产精品911| 91色视频在线| 精品日韩av一区二区| 亚洲男同1069视频| 蜜桃传媒麻豆第一区在线观看| 成人毛片在线观看| 欧美日本一区二区三区| 久久久国产综合精品女国产盗摄| 一区二区三区在线观看欧美 | 午夜精品久久久久久久99水蜜桃| 激情六月婷婷久久| 在线精品视频一区二区三四| 欧美精品一区二区三区视频| 亚洲已满18点击进入久久| 国产电影精品久久禁18| 欧美情侣在线播放| 中文字幕一区在线观看| 久久福利资源站| 91久久线看在观草草青青| 精品第一国产综合精品aⅴ| 一卡二卡欧美日韩| 国产成人自拍网| 日韩欧美综合一区| 一区二区三区产品免费精品久久75| 久久国产剧场电影| 欧美日韩精品免费| 亚洲欧洲综合另类在线| 国产精品自拍在线| 精品久久久久99| 日本三级亚洲精品| 欧美在线色视频| 亚洲美女一区二区三区| 国产91丝袜在线播放0| 欧美videofree性高清杂交| 视频一区二区不卡| 色婷婷av一区| 亚洲老司机在线| 91蜜桃免费观看视频| 国产欧美一区二区精品忘忧草 | 色婷婷久久综合| 国产精品美女久久久久av爽李琼| 激情成人综合网| 精品黑人一区二区三区久久| 三级成人在线视频| 在线播放亚洲一区| 三级欧美在线一区| 制服视频三区第一页精品| 亚洲最大成人综合| 在线影视一区二区三区| 一区二区三区影院| 欧美性视频一区二区三区| 亚洲一区二区成人在线观看| 色婷婷久久综合| 丝袜美腿亚洲一区二区图片|