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

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

?? yreftabl.pas

?? 編譯原理基礎
?? PAS
字號:

unit YRefTables;

(* This module implements the symbol and cross reference table used
   by the YREF program. *)

interface

const

max_syms = 997; (* symbol table size (prime number!) *)

function lookup ( k : Integer ) : String;
procedure entry ( k : Integer; symbol : String );
(* lookup and entry routines for the symbol table *)

procedure add_ref ( k : Integer; lineno : Integer; mark : Boolean );
  (* Enter an occurrence for symbol k into the table; the mark flag indicates
     whether this occurrence should be marked as a "defining" occurrence. *)

procedure set_type ( k : Integer; t : Integer );
  (* set the type of symbol k *)

procedure ref_list;
  (* Produces the cross reference listing in alphabetical order. *)

var n_undef : Integer;
  (* number of undefined symbols *)

implementation

uses LexLib, YRefTools;

(* Basic data structures and routines: *)

type

StrPtr  = ^String;               (* dynamic strings *)
RefList = ^RefNode;              (* symbol occurrence lists *)
RefNode = record
            lineno : Integer;    (* line number *)
            mark   : Boolean;    (* mark flag *)
            next   : RefList;    (* link to next list element *)
          end;

function newStr ( str : String ) : StrPtr;
  (* returns a dynamic copy of str (only the number of bytes actually
     needed are allocated) *)
  var strp : StrPtr;
  begin
    getmem(strp, succ(length(str)));
    move(str, strp^, succ(length(str)));
    newStr := strp;
  end(*newStr*);

procedure append ( var L : RefList; lineno : Integer; mark : Boolean );
  (* append an entry to the given occurrence list (eliminate dups) *)
  begin
    if L=nil then
      begin
        new(L);
        L^.lineno := lineno;
        L^.mark   := mark;
        L^.next   := nil;
      end
    else if L^.lineno=lineno then
      L^.mark := L^.mark or mark
    else
      append(L^.next, lineno, mark);
  end(*append*);

(* Symbol and cross reference table: *)

var

sym_table : array [1..max_syms] of StrPtr;  (* symbol table (nil denotes
                                               empty entry) *)
ref_table : array [1..max_syms] of RefList; (* cross reference table *)

defined   : array [1..max_syms] of Boolean; (* defined symbols *)

sym_type  : array [1..max_syms] of Integer; (* symbol types *)

n_syms    : Integer;                        (* number of symbols in the
                                               table *)
sym_no    : array [1..max_syms] of Integer; (* symbol keys sorted in
                                               alphabetical order *)

(* Comparison and swap routines to sort the symbol table: *)

{$F+}
function sym_less ( i, j : Integer ) : Boolean;
{$F-}
  begin
    sym_less := sym_table[sym_no[i]]^<sym_table[sym_no[j]]^
  end(*sym_less*);

{$F+}
procedure sym_swap ( i, j : Integer );
{$F-}
  var x : Integer;
  begin
    x := sym_no[i]; sym_no[i] := sym_no[j]; sym_no[j] := x;
  end(*sym_swap*);

procedure sort;
  (* sort symbols into sym_no array *)
  var k : Integer;
  begin
    n_syms := 0;
    for k := 1 to max_syms do
      if (sym_table[k]<>nil) and (ref_table[k]<>nil) then
        begin
          inc(n_syms);
          sym_no[n_syms] := k;
        end;
    quicksort(1, n_syms, sym_less, sym_swap);
  end(*sort*);

(* Interface routines: *)

function lookup ( k : Integer ) : String;
  begin
    if sym_table[k]=nil then
      lookup := ''
    else
      lookup := sym_table[k]^
  end(*lookup*);

procedure entry ( k : Integer; symbol : String );
  begin
    sym_table[k] := newStr(symbol)
  end(*entry*);

procedure add_ref ( k : Integer; lineno : Integer; mark : Boolean );
  begin
    append(ref_table[k], lineno, mark);
    defined[k] := defined[k] or mark;
  end(*add_ref*);

procedure set_type ( k : Integer; t : Integer );
  begin
    sym_type[k] := t;
  end(*set_type*);

procedure ref_list;
  const tab = #9;
  var i : Integer;
      L : RefList;
  begin
    sort;
    writeln(yyoutput);
    for i := 1 to n_syms do
      begin
        write(yyoutput, '  ', sym_table[sym_no[i]]^);
        if sym_type[sym_no[i]]<>0 then
          write(yyoutput, ' <', sym_table[sym_type[sym_no[i]]]^, '>');
        write(yyoutput, ' ');
        L := ref_table[sym_no[i]];
        while L<>nil do
          with L^ do
            begin
              write(yyoutput, ' ', lineno);
              if mark then write(yyoutput, '*');
              L := next;
            end;
        writeln(yyoutput);
      end;
    n_undef := 0;
    for i := 1 to n_syms do
      if not defined[sym_no[i]] and
         (sym_table[sym_no[i]]^<>'error') then
        inc(n_undef);
    if n_undef>0 then
      begin
        writeln(yyoutput);
        writeln(yyoutput, '  undefined symbols:');
        writeln(yyoutput);
        for i := 1 to n_syms do
          if not defined[sym_no[i]] and
             (sym_table[sym_no[i]]^<>'error') then
            writeln(yyoutput, '  ', sym_table[sym_no[i]]^);
      end;
  end(*ref_list*);

var k : Integer;
begin
  for k := 1 to max_syms do
    begin
      sym_table[k] := nil;
      ref_table[k] := nil;
      defined[k]   := false;
      sym_type[k]  := 0;
    end;
end(*YRefTables*).

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美二区在线观看| 亚洲男人天堂一区| 国模冰冰炮一区二区| 精品日本一线二线三线不卡| 青青草原综合久久大伊人精品优势| 欧美男同性恋视频网站| 麻豆久久一区二区| 久久蜜桃av一区精品变态类天堂 | 欧美va亚洲va香蕉在线| 久久www免费人成看片高清| 久久久久亚洲蜜桃| 国产91精品露脸国语对白| 国产精品久久久久7777按摩| 色综合色综合色综合 | 91精品蜜臀在线一区尤物| 日韩精品一二三区| 久久日韩精品一区二区五区| 成人深夜视频在线观看| 亚洲二区在线观看| 欧美一区二区网站| 丁香激情综合五月| 樱花草国产18久久久久| 欧美区视频在线观看| 国内精品在线播放| 亚洲欧美乱综合| 日韩午夜电影av| 成人av免费在线观看| 亚洲网友自拍偷拍| 久久一二三国产| 色乱码一区二区三区88| 免费成人在线网站| 亚洲色图清纯唯美| 日韩欧美久久久| 成人美女在线视频| 美腿丝袜在线亚洲一区| 成人av电影免费观看| 欧洲av在线精品| 亚洲色欲色欲www| 午夜久久福利影院| 99久精品国产| 久久综合九色综合欧美98| 中文字幕视频一区| 激情文学综合丁香| 精品噜噜噜噜久久久久久久久试看 | 色婷婷久久久久swag精品| 性欧美疯狂xxxxbbbb| 久久久精品免费免费| 91久久久免费一区二区| 亚洲国产日韩一级| 国产精品国产三级国产普通话蜜臀| 色婷婷综合久久久久中文 | 欧美一级艳片视频免费观看| 97久久超碰国产精品电影| 精品一区二区影视| 亚洲bdsm女犯bdsm网站| 中文字幕一区二区不卡| 制服丝袜成人动漫| 欧洲国内综合视频| 99视频精品免费视频| 国产一区二区三区高清播放| 亚洲mv在线观看| 亚洲午夜视频在线观看| 亚洲国产精品二十页| 国产亚洲精品久| 精品国产免费视频| 91精品国产综合久久久久久久久久 | 午夜影视日本亚洲欧洲精品| 2023国产精华国产精品| 精品少妇一区二区三区在线播放| 欧美日韩国产一区| 色香色香欲天天天影视综合网| 丁香五精品蜜臀久久久久99网站| 久久国内精品视频| 久久国产精品色婷婷| 日韩电影一区二区三区| 国产精品久久久久久一区二区三区 | 欧美国产日韩精品免费观看| 欧美成人艳星乳罩| 精品国产精品网麻豆系列| 日韩欧美一区二区不卡| 日韩欧美三级在线| 欧美成人精品二区三区99精品| 91精品国产色综合久久久蜜香臀| 在线观看免费亚洲| 成人av手机在线观看| 国产91丝袜在线18| 成人黄色777网| 色婷婷综合久久久久中文一区二区| 99在线精品免费| 日本韩国一区二区三区| 日本高清视频一区二区| 欧美日韩一区二区三区免费看 | 国精产品一区一区三区mba视频 | jiyouzz国产精品久久| 成人精品视频一区二区三区| 99精品热视频| 色综合欧美在线视频区| 欧美性感一区二区三区| 日韩一区二区免费在线观看| 日韩视频在线观看一区二区| 精品国产一区二区三区久久影院| 久久久久久电影| 欧美高清一级片在线观看| 亚洲欧美日韩小说| 亚洲欧美日韩系列| 亚洲综合视频网| 韩国成人在线视频| 97久久超碰精品国产| 欧美日韩久久一区| 久久久国产综合精品女国产盗摄| 亚洲色图制服诱惑 | 午夜亚洲福利老司机| 免费久久99精品国产| 国产一区二区精品久久99| 91免费国产视频网站| 欧美中文字幕不卡| 久久影院视频免费| 一区二区三区色| 国模冰冰炮一区二区| 欧美综合在线视频| 国产日韩欧美不卡在线| 亚洲第一在线综合网站| 久久精品国产亚洲a| 91视频在线看| 精品成人私密视频| 亚洲高清在线精品| 成人h精品动漫一区二区三区| 欧美日韩aaaaa| 中文字幕一区二区三区乱码在线 | 中文一区在线播放| 石原莉奈在线亚洲三区| 成人avav影音| 日韩精品一区国产麻豆| 亚洲精品欧美专区| 国产91综合网| 欧美电影免费观看高清完整版在线 | 色综合久久中文综合久久97| www国产精品av| 日韩—二三区免费观看av| 成人动漫中文字幕| 精品国产乱码久久久久久夜甘婷婷| 一区二区三区中文字幕在线观看| 国产在线一区观看| 欧美一区二区免费观在线| 樱桃视频在线观看一区| 不卡电影免费在线播放一区| 欧美电影免费观看高清完整版在线| 一区二区三区免费在线观看| 高清av一区二区| 精品日韩一区二区三区| 日本成人在线看| 欧美电影一区二区三区| 伊人色综合久久天天人手人婷| 国产欧美日韩卡一| 欧美三级韩国三级日本三斤| 亚洲综合丝袜美腿| 国产一区二区精品久久99| 日韩一区和二区| 日日夜夜精品免费视频| 欧美写真视频网站| 中文字幕乱码久久午夜不卡 | 欧美一级高清片在线观看| 亚洲五码中文字幕| 欧美写真视频网站| 无吗不卡中文字幕| 这里只有精品视频在线观看| 日韩中文字幕区一区有砖一区| 欧美视频中文一区二区三区在线观看| 1024成人网| 色婷婷综合久久久| 亚洲国产一区二区在线播放| 91福利视频在线| 一级女性全黄久久生活片免费| 欧洲精品一区二区| 视频一区中文字幕国产| 91精品国产手机| 韩国av一区二区三区四区| 久久亚洲综合色一区二区三区 | 日本美女一区二区三区| 日韩视频免费观看高清完整版 | 欧美视频一区二区三区四区| 一区二区欧美在线观看| 欧美亚一区二区| 日韩av在线播放中文字幕| 欧美精品久久久久久久多人混战 | 欧美一区二区视频免费观看| 午夜精品久久久久久久蜜桃app| 在线观看日韩av先锋影音电影院| 亚洲小少妇裸体bbw| 日韩精品中文字幕一区二区三区| 国产一区在线视频| 国产精品久久久久影院色老大| 成人99免费视频| 亚洲高清三级视频| 精品捆绑美女sm三区| jizz一区二区| 日韩不卡在线观看日韩不卡视频| 久久综合九色综合97婷婷| 91在线观看地址| 久久丁香综合五月国产三级网站|