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

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

?? yreftabl.pas

?? YACC和LEX的資料書籍 以及一些源碼 很有幫助
?? 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一区二区三区免费野_久草精品视频
www日韩大片| 精品少妇一区二区三区在线播放| 精品一区二区三区不卡| 午夜精品久久久久久久久久久 | 韩国av一区二区三区在线观看| 性感美女极品91精品| 一区二区三区色| 洋洋成人永久网站入口| 夜夜嗨av一区二区三区中文字幕| 亚洲国产乱码最新视频| 午夜精品福利一区二区蜜股av| 日韩成人免费电影| 蜜臀av亚洲一区中文字幕| 久久69国产一区二区蜜臀| 国产主播一区二区| 成人高清在线视频| 91福利国产成人精品照片| 欧美浪妇xxxx高跟鞋交| 欧美日本乱大交xxxxx| 精品不卡在线视频| 国产女同互慰高潮91漫画| 亚洲男人天堂av网| 亚洲va中文字幕| 国产一区高清在线| www.欧美亚洲| 91麻豆精品91久久久久同性| 欧美成人欧美edvon| 国产欧美日韩卡一| 亚洲国产一区二区a毛片| 久久国产尿小便嘘嘘尿| 成人免费看片app下载| 欧美视频精品在线观看| 久久综合久久久久88| 亚洲三级在线观看| 六月丁香综合在线视频| av电影天堂一区二区在线观看| 欧美日韩在线一区二区| 国产亚洲视频系列| 午夜一区二区三区在线观看| 国产精品系列在线观看| 欧美亚洲丝袜传媒另类| 久久久久久久综合狠狠综合| 亚洲女爱视频在线| 国产在线视频精品一区| 欧美色综合影院| 国产精品毛片无遮挡高清| 日本欧美一区二区| 日本精品一区二区三区四区的功能| 日韩一区二区三| 亚洲麻豆国产自偷在线| 国产不卡一区视频| 日韩欧美视频一区| 香蕉影视欧美成人| 91色视频在线| 国产精品水嫩水嫩| 精品一区二区三区免费| 欧美三级三级三级爽爽爽| 国产精品第四页| 国产高清精品在线| 久久影音资源网| 久久99精品久久久久久动态图 | 91一区二区三区在线观看| 久久亚洲影视婷婷| 美女网站一区二区| 777午夜精品免费视频| 亚洲va韩国va欧美va精品 | 亚洲国产精品人人做人人爽| 成人avav在线| 国产精品美女久久久久aⅴ| 国产一区视频在线看| 欧美精品一区二区三区蜜臀| 美女视频一区二区三区| 91麻豆精品国产91| 美女在线一区二区| 欧美草草影院在线视频| 午夜不卡av在线| 欧美日韩极品在线观看一区| 亚洲成人自拍网| 欧美日韩国产精品自在自线| 亚洲国产一区二区a毛片| 欧美色手机在线观看| 亚洲午夜私人影院| 欧美无乱码久久久免费午夜一区| 亚洲香蕉伊在人在线观| 69精品人人人人| 美女看a上一区| 精品国产露脸精彩对白| 粉嫩一区二区三区在线看| 中国色在线观看另类| 一本久道久久综合中文字幕| 一区二区三区不卡视频| 欧美日韩国产不卡| 久久精品久久久精品美女| 久久亚洲影视婷婷| eeuss影院一区二区三区 | 精品一区二区三区免费观看| 2022国产精品视频| 成人av动漫在线| 亚洲一区二区三区视频在线播放| 欧美一级高清片| 国产不卡免费视频| 亚洲高清中文字幕| 日韩一区二区三区在线| 国产成人在线看| 亚洲在线中文字幕| 精品区一区二区| 99久久国产综合精品色伊| 亚洲成a人v欧美综合天堂下载| 欧美一区二区精品在线| kk眼镜猥琐国模调教系列一区二区| 一区二区三区在线免费播放| 欧美一区二区黄色| 99综合影院在线| 久久精品噜噜噜成人88aⅴ| 中文字幕亚洲一区二区va在线| 欧美日韩高清一区二区不卡| 国产高清不卡一区| 午夜精品福利一区二区蜜股av| 国产欧美精品一区二区色综合 | 亚洲欧美日韩在线| 日韩免费视频一区二区| 91福利视频网站| 国产一区二区三区在线观看精品 | 国产精品入口麻豆九色| 欧美日韩免费在线视频| 国产成人无遮挡在线视频| 日本欧美一区二区三区乱码| 综合婷婷亚洲小说| 国产亲近乱来精品视频| 日韩一区二区三区观看| 在线精品视频免费观看| 成人动漫一区二区| 国产精品911| 激情小说欧美图片| 日韩电影免费在线看| 玉米视频成人免费看| 国产精品麻豆网站| 国产校园另类小说区| 日韩视频中午一区| 欧美精品丝袜久久久中文字幕| 色伊人久久综合中文字幕| 国产精品12区| 国产成人夜色高潮福利影视| 国模一区二区三区白浆| 久久99国产精品免费网站| 美女视频第一区二区三区免费观看网站 | 精品一区二区三区蜜桃| 日本不卡中文字幕| 欧美a级一区二区| 日韩精品一二三| 男女激情视频一区| 美女视频黄 久久| 激情五月激情综合网| 国产美女视频91| 国产不卡免费视频| 99久久婷婷国产综合精品电影| 菠萝蜜视频在线观看一区| 风流少妇一区二区| voyeur盗摄精品| 色国产综合视频| 欧美三级电影在线观看| 欧美精品 国产精品| 日韩一卡二卡三卡四卡| 精品国精品自拍自在线| 国产色产综合色产在线视频 | 欧美色网站导航| 欧美日韩成人综合天天影院| 91精品国产一区二区三区香蕉| 欧美一卡二卡三卡| 精品国产乱码久久| 国产精品久久久久一区| 一区二区三区视频在线看| 午夜视频在线观看一区二区| 九色综合国产一区二区三区| 国产成人午夜99999| 日本久久一区二区| 日韩精品最新网址| 国产精品美女久久久久aⅴ国产馆| 亚洲黄一区二区三区| 婷婷丁香久久五月婷婷| 国产毛片一区二区| 在线观看亚洲精品视频| 精品国一区二区三区| 中文字幕一区二区在线观看| 亚洲国产一二三| 国产高清在线观看免费不卡| 欧洲生活片亚洲生活在线观看| 日韩一区二区免费高清| 国产精品不卡在线观看| 日韩成人免费在线| av影院午夜一区| 日韩一区二区在线观看视频播放| 亚洲国产精品精华液2区45| 亚洲午夜电影网| 国产精品白丝jk白祙喷水网站| 欧美亚洲国产一区二区三区| 国产亚洲欧美在线| 午夜精品123| 色素色在线综合| 久久蜜桃av一区精品变态类天堂|