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

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

?? 123.txt

?? 技術型論文
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
  end
  else
  error(4) (* 如果常量聲明過程遇到的第一個符號不為標識符,拋出4號錯誤 *)
end(* constdeclaration *);
(* 變量聲明過程vardeclaration *) 
procedure vardeclaration;
begin
  if sym = ident then (* 變量聲明過程開始遇到的第一個符號必然應為標識符 *)
  begin
  enter(variable); (* 將標識符登陸到符號表中 *)
  getsym (* 獲取下一個token,為后面作準備 *)
  end
  else
  error(4) (* 如果變量聲明過程遇到的第一個符號不是標識符,拋出4號錯誤 *)
end(* vardeclaration *);
(* 列出當前一層類PCODE目標代碼過程listcode *) 
procedure listcode;
var 
  i: integer;
begin (* list code generated for this block *)
  if listswitch then (* 如果用戶選擇是要列出代碼的情況下才列出代碼 *)
  begin
  for i := cx0 to cx - 1 do (* 從當前層代碼開始位置到當前代碼位置-1處,即為本分程序塊 *)
    with code do
    begin
      writeln(i: 4, mnemonic[f]: 5, l: 3, a: 5); (* 顯示出第i行代碼的助記符和L與A操作數 *)
      (* 我修改的代碼:原程序此處在輸出i時,沒有指定占4個字符寬度,不美觀也與下面一句不配套。 *)
      writeln(fa, i: 4, mnemonic[f]: 5, l: 3, a: 5) (* 同時把屏顯打印到文件 *)
    end;
  end
end(* listcode *);
(* 語句處理過程statement *)
(* 參數說明:fsys: 如果出錯可用來恢復語法分析的符號集合 *)
procedure statement(fsys: symset);
var 
  i, cx1, cx2: integer;
  (* 表達式處理過程expression *)
  (* 參數說明:fsys: 如果出錯可用來恢復語法分析的符號集合 *)
  procedure expression(fsys: symset);
  var 
  addop: symbol;
  (* 項處理過程term *)
  (* 參數說明:fsys: 如果出錯可用來恢復語法分析的符號集合 *)
  procedure term(fsys: symset);
  var 
    mulop: symbol;
    (* 因子處理過程factor *)
    (* 參數說明:fsys: 如果出錯可用來恢復語法分析的符號集合 *)
    procedure factor(fsys: symset);
    var 
      i: integer;
    begin
      test(facbegsys, fsys, 24); (* 開始因子處理前,先檢查當前token是否在facbegsys集合中。 *)
                        (* 如果不是合法的token,拋24號錯誤,并通過fsys集恢復使語法處理可以繼續進行 *)       
      while sym in facbegsys do (* 循環處理因子 *)
      begin
      if sym = ident then (* 如果遇到的是標識符 *)
      begin
        i := position(id); (* 查符號表,找到當前標識符在符號表中的位置 *)
        if i = 0 then (* 如果查符號表返回為0,表示沒有找到標識符 *)
          error(11) (* 拋出11號錯誤 *)
        else
          with table do (* 如果在符號表中找到了當前標識符的位置,開始生成相應代碼 *)
          case kind of
            constant: gen(lit, 0, val); (* 如果這個標識符對應的是常量,值為val,生成lit指令,把val放到棧頂 *)
            variable: gen(lod, lev - level, adr); (* 如果標識符是變量名,生成lod指令, *)
                                      (* 把位于距離當前層level的層的偏移地址為adr的變量放到棧頂 *)
            procedur: error(21) (* 如果在因子處理中遇到的標識符是過程名,出錯了,拋21號錯 *)
          end;
        getsym (* 獲取下一token,繼續循環處理 *)
      end
      else
        if sym = number then (* 如果因子處理時遇到數字 *)
        begin
          if num > amax then (* 如果數字的大小超過允許最大值amax *)
          begin
          error(31); (* 拋出31號錯 *)
          num := 0 (* 把數字按0值處理 *)
          end;
          gen(lit, 0, num); (* 生成lit指令,把這個數值字面常量放到棧頂 *)
          getsym (* 獲取下一token *)
        end
        else
          if sym = lparen then (* 如果遇到的是左括號 *)
          begin
          getsym; (* 獲取一個token *)
          expression( [rparen] + fsys ); (* 遞歸調用expression子程序分析一個子表達式 *)
          if sym = rparen then (* 子表達式分析完后,應遇到右括號 *)
            getsym (* 如果的確遇到右括號,讀取下一個token *)
          else
            error(22) (* 否則拋出22號錯誤 *)
          end;
      test(fsys, facbegsys, 23) (* 一個因子處理完畢,遇到的token應在fsys集合中 *)
                        (* 如果不是,拋23號錯,并找到下一個因子的開始,使語法分析可以繼續運行下去 *)
      end
    end(* factor *);
  begin (* term *)
    factor([times, slash] + fsys); (* 每一個項都應該由因子開始,因此調用factor子程序分析因子 *)
    while sym in [times, slash] do (* 一個因子后應當遇到乘號或除號 *)
    begin
      mulop := sym; (* 保存當前運算符 *)
      getsym; (* 獲取下一個token *)
      factor(fsys + [times, slash]); (* 運算符后應是一個因子,故調factor子程序分析因子 *)
      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; (* 獲取一個token *)
    term(fsys + [plus, minus]); (* 正負號后面應該是一個項,調term子程序分析 *)
    if addop = minus then (* 如果保存下來的符號是負號 *)
      gen(opr, 0, 1) (* 生成一條1號操作指令:取反運算 *)
    (* 如果不是負號就是正號,不需生成相應的指令 *)
  end
  else (* 如果不是由正負號開頭,就應是一個項開頭 *)
    term(fsys + [plus, minus]); (* 調用term子程序分析項 *) 
  while sym in [plus, minus] do (* 項后應是加運算或減運算 *)
  begin
    addop := sym; (* 把運算符保存下來 *)
    getsym; (* 獲取下一個token,加減運算符后應跟的是一個項 *)
    term(fsys + [plus, minus]); (* 調term子程序分析項 *)
    if addop = plus then (* 如果項與項之間的運算符是加號 *)
      gen(opr, 0, 2) (* 生成2號操作指令:加法 *)
    else (* 否則是減法 *)
      gen(opr, 0, 3) (* 生成3號操作指令:減法 *)
  end
  end (* expression *);
  (* 條件處理過程condition *)
  (* 參數說明:fsys: 如果出錯可用來恢復語法分析的符號集合 *)
  procedure condition(fsys: symset);
  var 
  relop: symbol; (* 用于臨時記錄token(這里一定是一個二元邏輯運算符)的內容 *)
  begin
  if sym = oddsym then (* 如果是odd運算符(一元) *)
  begin
    getsym; (* 獲取下一個token *)
    expression(fsys); (* 對odd的表達式進行處理計算 *)
    gen(opr, 0, 6); (* 生成6號操作指令:奇偶判斷運算 *)
  end
  else (* 如果不是odd運算符(那就一定是二元邏輯運算符) *)
  begin
    expression([eql, neq, lss, leq, gtr, geq] + fsys); (* 對表達式左部進行處理計算 *)
    if not (sym in [eql, neq, lss, leq, gtr, geq]) then (* 如果token不是邏輯運算符中的一個 *)
      error(20) (* 拋出20號錯誤 *)
    else
    begin
      relop := sym; (* 記錄下當前的邏輯運算符 *)
      getsym; (* 獲取下一個token *)
      expression(fsys); (* 對表達式右部進行處理計算 *)
      case relop of (* 如果剛才的運算符是下面的一種 *)
      eql: gen(opr, 0, 8); (* 等號:產生8號判等指令 *)
      neq: gen(opr, 0, 9); (* 不等號:產生9號判不等指令 *)
      lss: gen(opr, 0, 10); (* 小于號:產生10號判小指令 *)
      geq: gen(opr, 0, 11); (* 大于等號號:產生11號判不小于指令 *)
      gtr: gen(opr, 0, 12); (* 大于號:產生12號判大于指令 *)
      leq: gen(opr, 0, 13); (* 小于等于號:產生13號判不大于指令 *)
      end
    end
  end
  end (* condition *);
begin (* statement *)
  if sym = ident then (* 所謂"語句"可能是賦值語句,以標識符開頭 *)
  begin
  i := position(id); (* 在符號表中查到該標識符所在位置 *)
  if i = 0 then (* 如果沒找到 *)
    error(11) (* 拋出11號錯誤 *)
  else
    if table.kind <> variable then (* 如果在符號表中找到該標識符,但該標識符不是變量名 *) 
    begin
      error(12); (* 拋出12號錯誤 *)
      i := 0 (* i置0作為錯誤標志 *)
    end;
  getsym; (* 獲得下一個token,正常應為賦值號 *)
  if sym = becomes then (* 如果的確為賦值號 *)
    getsym (* 獲取下一個token,正常應為一個表達式 *)
  else
    error(13); (* 如果賦值語句的左部標識符號后所接不是賦值號,拋出13號錯誤 *)
  expression(fsys); (* 處理表達式 *)
  if i <> 0 then (* 如果不曾出錯,i將不為0,i所指為當前語名左部標識符在符號表中的位置 *)
    with table do
      gen(sto, lev - level, adr) (* 產生一行把表達式值寫往指定內存的sto目標代碼 *)
  end
  else
  if sym = readsym then (* 如果不是賦值語句,而是遇到了read語句 *)
  begin
    getsym; (* 獲得下一token,正常情況下應為左括號 *)
    if sym <> lparen then (* 如果read語句后跟的不是左括號 *)
      error(34) (* 拋出34號錯誤 *)
    else
      repeat (* 循環得到read語句括號中的參數表,依次產生相應的“從鍵盤讀入”目標代碼 *)
      getsym; (* 獲得一個token,正常應是一個變量名 *)
      if sym = ident then (* 如果確為一個標識符 *) 
      (* 這里略有問題,還應判斷一下這個標識符是不是變量名,如果是常量名或過程名應出錯 *)
        i := position(id) (* 查符號表,找到它所在位置給i,找不到時i會為0 *)
      else
        i := 0; (* 不是標識符則有問題,i置0作為出錯標志 *)
      if i = 0 then (* 如果有錯誤 *)
        error(35) (* 拋出35號錯誤 *)
      else (* 否則生成相應的目標代碼 *)
        with table do
        begin
          gen(opr, 0, 16); (* 生成16號操作指令:從鍵盤讀入數字 *)
          gen(sto, lev - level, adr) (* 生成sto指令,把讀入的值存入指定變量所在的空間 *)
        end;
      getsym (* 獲取下一個token,如果是逗號,則read語還沒完,否則應當是右括號 *)
      until sym <> comma; (* 不斷生成代碼直到read語句的參數表中的變量遍歷完為止,這里遇到不是逗號,應為右括號 *)
    if sym <> rparen then (* 如果不是我們預想中的右括號 *)
    begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费在线播放| 6080亚洲精品一区二区| 中文字幕成人av| 国产精品一区二区三区乱码| 久久免费午夜影院| 成人免费va视频| 国产欧美一区二区三区在线看蜜臀| 国产在线精品一区二区三区不卡| 国产精品网站在线| 91豆麻精品91久久久久久| 日韩精品欧美成人高清一区二区| 精品电影一区二区| 91在线丨porny丨国产| 久久久久久免费| 久久久影视传媒| 91精品国产91综合久久蜜臀| 视频一区在线视频| 久久久久久久电影| 一本色道久久综合精品竹菊| 视频一区二区三区在线| 亚洲成人自拍一区| 精品美女在线播放| av一本久道久久综合久久鬼色| 亚洲精品久久久蜜桃| www激情久久| 欧美亚洲一区二区在线| 老司机午夜精品| 亚洲精品欧美激情| 日韩精品一区二区三区四区视频| aaa亚洲精品一二三区| 日韩高清不卡一区二区三区| 亚洲国产精品t66y| 欧美一激情一区二区三区| 成人av资源网站| 秋霞影院一区二区| 国产日韩精品一区二区三区在线| 欧美区一区二区三区| 国产精品欧美久久久久无广告| 在线看日韩精品电影| 国产成人在线视频网站| 亚洲免费av观看| 日韩精品一区二| 色婷婷综合在线| 国产精品主播直播| 亚洲成av人**亚洲成av**| 精品日韩欧美一区二区| 在线一区二区三区四区五区| 国产精品白丝jk白祙喷水网站| 亚洲r级在线视频| 亚洲欧美日韩中文字幕一区二区三区 | 日本91福利区| 一区二区激情视频| 中文字幕一区二区日韩精品绯色| 91精品国产入口| 欧美婷婷六月丁香综合色| 成人短视频下载| 国产91精品露脸国语对白| 国模套图日韩精品一区二区| 日韩精品成人一区二区在线| 亚洲福利视频三区| 一区二区三区日韩欧美| 亚洲欧洲精品一区二区三区| 国产欧美一区视频| 国产亚洲欧美色| 欧美精品一区二区三区视频 | 极品美女销魂一区二区三区免费| 亚洲国产精品久久人人爱| 日韩理论电影院| 中文字幕一区二区三区不卡 | 国产成人av一区二区三区在线观看| 琪琪一区二区三区| 奇米四色…亚洲| 麻豆一区二区在线| 美女精品一区二区| 麻豆高清免费国产一区| 麻豆精品新av中文字幕| 日本成人中文字幕| 日本欧美韩国一区三区| 久久国产尿小便嘘嘘| 丝袜美腿亚洲色图| 懂色av一区二区三区免费看| 成人午夜又粗又硬又大| 成人午夜电影小说| 国产+成+人+亚洲欧洲自线| 国产精品18久久久久久久久久久久| 国产美女在线观看一区| 国产成人综合精品三级| aa级大片欧美| 欧美日韩一本到| 欧美高清视频一二三区| 欧美电视剧在线观看完整版| 26uuu精品一区二区| 国产精品三级av| 亚洲欧美成aⅴ人在线观看| 亚洲猫色日本管| 一区二区三区精品视频在线| 亚洲国产wwwccc36天堂| 美女性感视频久久| 国产成人h网站| 91老师国产黑色丝袜在线| 在线视频观看一区| 日韩欧美中文一区二区| 国产日本欧洲亚洲| 亚洲香蕉伊在人在线观| 久久国产生活片100| www.日本不卡| 日韩三级在线观看| 国产精品国产自产拍高清av| 亚洲综合色视频| 韩国成人在线视频| 91视频国产资源| 日韩一区二区中文字幕| 中文字幕日韩一区| 秋霞午夜鲁丝一区二区老狼| 成年人国产精品| 日韩午夜激情电影| 国产精品久久久久久久蜜臀| 婷婷成人综合网| 成人蜜臀av电影| 欧美大片拔萝卜| 亚洲精品伦理在线| 国产精品18久久久久久久网站| 欧美怡红院视频| 中国色在线观看另类| 日日摸夜夜添夜夜添国产精品| 国产成人精品一区二区三区网站观看| 欧美婷婷六月丁香综合色| 日本一区二区三区电影| 蜜臀av性久久久久蜜臀av麻豆| 99久久婷婷国产综合精品电影| 精品少妇一区二区三区免费观看| 亚洲免费观看在线观看| 国产99久久久国产精品潘金| 日韩女优av电影| 亚洲成人1区2区| 一本色道久久综合亚洲91| 亚洲国产精品ⅴa在线观看| 蜜桃视频在线观看一区二区| 色综合中文综合网| 亚洲国产精品精华液2区45| 天天免费综合色| 91国偷自产一区二区三区观看| 天堂av在线一区| 99久久777色| 久久久久久久一区| 麻豆精品视频在线| 在线播放一区二区三区| 亚洲精品国产品国语在线app| hitomi一区二区三区精品| 26uuu欧美| 久久精品国产77777蜜臀| 欧美色国产精品| 亚洲国产日韩a在线播放| 色先锋aa成人| 亚洲色图清纯唯美| proumb性欧美在线观看| 中文字幕成人av| 暴力调教一区二区三区| 国产欧美一区二区精品仙草咪| 久久99国内精品| 日韩美一区二区三区| 美女高潮久久久| 欧美va亚洲va| 精品影视av免费| 26uuu精品一区二区三区四区在线| 毛片基地黄久久久久久天堂| 精品免费国产二区三区| 国产一区二区视频在线播放| 欧美精品一区二区三区视频| 国模少妇一区二区三区| 国产欧美日韩三级| www.亚洲人| 亚洲综合色噜噜狠狠| 欧美福利视频一区| 美女视频网站久久| 久久久亚洲精品一区二区三区| 国产ts人妖一区二区| 中文字幕五月欧美| 在线国产电影不卡| 日本va欧美va精品发布| 2017欧美狠狠色| 成人综合激情网| 亚洲婷婷综合久久一本伊一区| 色国产综合视频| 秋霞电影网一区二区| 26uuu色噜噜精品一区二区| 国产激情一区二区三区四区 | 亚洲美女淫视频| 久久天天做天天爱综合色| 在线不卡a资源高清| 亚欧色一区w666天堂| 欧美一区二区在线播放| 麻豆精品一区二区| 国产精品午夜在线观看| 欧洲一区二区三区在线| 天天综合日日夜夜精品| 国产视频一区在线观看| 色综合亚洲欧洲| 美女精品自拍一二三四| 亚洲色图视频免费播放|