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

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

?? scanner.frm

?? 一個(gè)Pascal語(yǔ)言分析器
?? FRM
字號(hào):
UNIT -->modulename;
(* Scanner generated by Coco/R (Pascal version) *)

INTERFACE

CONST
  CommentMax = 10000;
TYPE
  CommentStr = ARRAY [0 .. CommentMax] OF CHAR;
VAR
  src:         FILE;         (*source/list files. To be opened by the main pgm*)
  lst:         TEXT;
  directory:   STRING;       (*of source file*)
  line, col:   INTEGER;      (*line and column of current symbol*)
  len:         INTEGER;      (*length of current symbol*)
  pos:         LONGINT;      (*file position of current symbol*)
  nextLine:    INTEGER;      (*line of lookahead symbol*)
  nextCol:     INTEGER;      (*column of lookahead symbol*)
  nextLen:     INTEGER;      (*length of lookahead symbol*)
  nextPos:     LONGINT;      (*file position of lookahead symbol*)
  errors:      INTEGER;      (*number of detected errors*)
  seenComment: BOOLEAN;      (*TRUE if comments have been registered*)
  Error:       PROCEDURE (nr, line, col: INTEGER; pos: LONGINT);

PROCEDURE Get (VAR sym: INTEGER);
(* Gets next symbol from source file *)

PROCEDURE GetString (pos: LONGINT; len: INTEGER; VAR s: STRING);
(* Retrieves exact string of max length len from position pos in source file *)

PROCEDURE GetName (pos: LONGINT; len: INTEGER; VAR s: STRING);
(* Retrieves name of symbol of length len at position pos in source file *)

FUNCTION CharAt (pos: LONGINT): CHAR;
(* Returns exact character at position pos in source file *)

PROCEDURE GetComment (VAR comment: CommentStr; pos: INTEGER; VAR length: INTEGER);
(* IF seenComment
     THEN concatenates and extracts previously scanned comments into comment,
          starting at comment[pos], and computes length; seenComment := FALSE
     ELSE returns length := 0 *)

PROCEDURE _Reset;
(* Reads and stores source file internally *)

IMPLEMENTATION
-->unitname
CONST
  noSym   = -->unknownsym; (*error token code*)
  (* not only for errors but also for not finished states of scanner analysis *)
  eof   = #26; (*MS-DOS eof*)
  LF    = #10;
  CR    = #13;
  EF    = #0;
  EL    = CR;
  BlkSize = 16384;
TYPE
  BufBlock   = ARRAY [0 .. BlkSize-1] OF CHAR;
  Buffer     = ARRAY [0 .. 31] OF ^BufBlock;
  StartTable = ARRAY [0 .. 255] OF INTEGER;
  GetCH      = FUNCTION (pos: LONGINT) : CHAR;
  CommentPtr = ^ CommentRec;
  CommentRec = RECORD
                 begCom, endCom : LONGINT;
                 next : CommentPtr;
               END;
VAR
  lastCh,
  ch:        CHAR;       (*current input character*)
  curLine:   INTEGER;    (*current input line (may be higher than line)*)
  lineStart: LONGINT;    (*start position of current line*)
  apx:       LONGINT;    (*length of appendix (CONTEXT phrase)*)
  oldEols:   INTEGER;    (*number of _EOLs in a comment*)
  bp, bp0:   LONGINT;    (*current position in buf
                           (bp0: position of current token)*)
  LBlkSize:  LONGINT;    (*BlkSize*)
  inputLen:  LONGINT;    (*source file size*)
  buf:       Buffer;     (*source buffer for low-level access*)
  start:     StartTable; (*start state for every character*)
  CurrentCh: GetCH;
  firstComment, lastComment: CommentPtr;

PROCEDURE Err (nr, line, col: INTEGER; pos: LONGINT); FAR;
  BEGIN
    INC(errors)
  END;

PROCEDURE NextCh;
(* Return global variable ch *)
  BEGIN
    lastCh := ch; INC(bp); ch := CurrentCh(bp);
    IF (ch = EL) OR (ch = LF) AND (lastCh <> EL) THEN BEGIN
      INC(curLine); lineStart := bp
    END
  END;

FUNCTION Comment: BOOLEAN;
  LABEL
    999;
  VAR
    level, startLine: INTEGER;
    oldLineStart : LONGINT;
    beginC, endC : LONGINT;
    nextComment : CommentPtr;
  BEGIN
    beginC := bp;
    level := 1; startLine := curLine; oldLineStart := lineStart;
    -->comment
    Comment := FALSE;
    999:
    endC := bp; DEC(endC);
    IF endC > beginC THEN BEGIN
      seenComment := TRUE;
      NEW(nextComment);
      nextComment^.begCom := beginC;
      nextComment^.endCom := endC;
      nextComment^.next := NIL;
      IF firstComment = NIL
        THEN firstComment := nextComment
        ELSE lastComment^.next := nextComment;
      lastComment := nextComment
    END
  END;

PROCEDURE GetComment (VAR comment: CommentStr; pos: INTEGER; VAR length: INTEGER);
  VAR
    this : CommentPtr;
  BEGIN
    length := 0;
    WHILE firstComment <> NIL DO BEGIN
      this := firstComment;
      WHILE (pos + length <= CommentMax) AND (this^.begCom <= this^.endCom) DO
        BEGIN
          comment[pos + length] := CharAt(this^.begCom);
          INC(length); INC(this^.begCom);
        END;
      firstComment := firstComment^.next;
      DISPOSE(this)
    END;
    seenComment := FALSE;
  END;

PROCEDURE Get (VAR sym: INTEGER);
  VAR
    state: INTEGER;

  FUNCTION Equal (s: STRING): BOOLEAN;
    VAR
      i: INTEGER;
      q: LONGINT;
    BEGIN
      IF nextLen <> Length(s) THEN BEGIN Equal := FALSE; EXIT END;
      i := 1; q := bp0;
      WHILE i <= nextLen DO BEGIN
        IF CurrentCh(q) <> s[i] THEN BEGIN Equal := FALSE; EXIT END;
        INC(i); INC(q)
      END;
      Equal := TRUE
    END;

  PROCEDURE CheckLiteral;
    BEGIN
      -->literals
    END;

  BEGIN (*Get*)
    -->GetSy1
    pos := nextPos;   nextPos := bp;
    col := nextCol;   nextCol := bp - lineStart;
    line := nextLine; nextLine := curLine;
    len := nextLen;   nextLen := 0;
    apx := 0; state := start[ORD(ch)]; bp0 := bp;
    WHILE TRUE DO BEGIN
      NextCh; INC(nextLen);
      CASE state OF
      -->GetSy2
      ELSE BEGIN sym := noSym; EXIT (*NextCh already done*) END;
      END
    END
  END;

PROCEDURE GetString (pos: LONGINT; len: INTEGER; VAR s: STRING);
  VAR
    i: INTEGER;
    p: LONGINT;
  BEGIN
    IF len > 255 THEN len := 255;
    p := pos; i := 1;
    WHILE i <= len DO BEGIN
      s[i] := CharAt(p); INC(i); INC(p)
    END;
    s[0] := CHR(len);
  END;

PROCEDURE GetName (pos: LONGINT; len: INTEGER; VAR s: STRING);
  VAR
    i: INTEGER;
    p: LONGINT;
  BEGIN
    IF len > 255 THEN len := 255;
    p := pos; i := 1;
    WHILE i <= len DO BEGIN
      s[i] := CurrentCh(p); INC(i); INC(p)
    END;
    s[0] := CHR(len);
  END;

FUNCTION CharAt (pos: LONGINT): CHAR;
  VAR
    ch : CHAR;
  BEGIN
    IF pos >= inputLen THEN BEGIN CharAt := EF; EXIT; END;
    ch := buf[pos DIV LBlkSize]^[pos MOD LBlkSize];
    IF ch <> eof THEN CharAt := ch ELSE CharAt := EF
  END;

FUNCTION CapChAt (pos: LONGINT): CHAR; FAR;
  VAR
    ch : CHAR;
  BEGIN
    IF pos >= inputLen THEN BEGIN CapChAt := EF; EXIT; END;
    ch := upcase(buf[pos DIV LBlkSize]^[pos MOD LBlkSize]);
    IF ch <> eof THEN CapChAt := ch ELSE CapChAt := EF
  END;

PROCEDURE _Reset;
  VAR
    len: LONGINT;
    i, read: INTEGER;
  BEGIN (*assert: src has been opened*)
    len := FileSize(src); i := 0; inputLen := len;
    WHILE len > LBlkSize DO BEGIN
      NEW(buf[i]);
      read := BlkSize; BlockRead(src, buf[i]^, read);
      len := len - read; INC(i)
    END;
    NEW(buf[i]);
    read := len; BlockRead(src, buf[i]^, read);
    buf[i]^[read] := EF;
    curLine := 1; lineStart := -2; bp := -1;
    oldEols := 0; apx := 0; errors := 0;
    NextCh;
  END;

BEGIN
  -->initializations
  Error := Err; LBlkSize := BlkSize; lastCh := EF;
  firstComment := NIL; seenComment := FALSE;
END. (* -->modulename *)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美激情在线| 精品视频在线免费| 国产精品高清亚洲| 色综合天天在线| 亚洲成av人影院在线观看网| 欧美一级在线免费| 国产成人午夜视频| 亚洲欧美日韩国产中文在线| 日本精品免费观看高清观看| 亚洲国产成人va在线观看天堂| 91精品国产福利在线观看| 激情综合网天天干| 国产精品欧美一区喷水| 91久久精品国产91性色tv| 亚洲高清免费一级二级三级| 欧美变态tickle挠乳网站| 国产成人av网站| 夜夜嗨av一区二区三区四季av| 91精品国模一区二区三区| 风间由美一区二区av101| 玉米视频成人免费看| 日韩欧美在线不卡| a亚洲天堂av| 日韩av一区二区在线影视| 国产精品午夜久久| 777久久久精品| 成a人片亚洲日本久久| 视频一区二区三区入口| 欧美激情综合网| 欧美二区在线观看| 成人美女视频在线看| 午夜精品一区二区三区电影天堂 | 精品亚洲成a人| 国产日韩欧美不卡在线| 欧美日韩成人综合天天影院| 国产精品一区二区久久精品爱涩 | 日韩欧美综合在线| 99精品久久99久久久久| 久久se精品一区精品二区| 1000精品久久久久久久久| 精品国产亚洲一区二区三区在线观看| 91视频在线观看| 激情成人综合网| 午夜视频一区二区| 日韩一区中文字幕| 久久综合色婷婷| 欧美老女人第四色| 色综合久久久久久久久| 国产成人亚洲精品青草天美| 青青草伊人久久| 亚洲国产成人av好男人在线观看| 欧美激情在线观看视频免费| 日韩西西人体444www| 欧美日韩精品一区二区三区四区 | 91一区二区三区在线观看| 激情文学综合插| 久久精品久久99精品久久| 亚洲午夜久久久久久久久久久| 国产精品美女www爽爽爽| 精品99一区二区| 欧美不卡一区二区| 日韩欧美一卡二卡| 欧美一级艳片视频免费观看| 欧美精品亚洲一区二区在线播放| 在线免费观看视频一区| 一本色道久久综合亚洲91| 91亚洲精品乱码久久久久久蜜桃| 国产传媒日韩欧美成人| 国产在线不卡视频| 国产精品亚洲专一区二区三区| 久草热8精品视频在线观看| 麻豆国产91在线播放| 久久成人av少妇免费| 久久99精品国产.久久久久久| 日韩中文字幕一区二区三区| 午夜精品视频在线观看| 亚洲国产乱码最新视频 | 精品国产免费视频| 日韩欧美综合在线| 欧美精品一区二| 久久久91精品国产一区二区精品 | 91精品久久久久久蜜臀| 91精品国产综合久久精品性色| 欧美肥妇bbw| 日韩一区二区影院| 久久人人超碰精品| 亚洲国产精品精华液2区45| 中文av一区二区| 亚洲日本一区二区| 香蕉影视欧美成人| 麻豆中文一区二区| 粉嫩在线一区二区三区视频| 粉嫩一区二区三区在线看| 91麻豆国产自产在线观看| 欧美亚洲综合色| 欧美一区二区三区播放老司机| 欧美精品一区二区久久婷婷| 久久精品亚洲精品国产欧美kt∨| 国产精品视频在线看| 亚洲精品国产精华液| 图片区小说区区亚洲影院| 久久精品国产99久久6| 国产91清纯白嫩初高中在线观看| 成人av免费网站| 精品视频色一区| 久久亚洲一区二区三区明星换脸| 国产精品进线69影院| 亚洲国产成人av网| 国产精品中文字幕欧美| 91黄色免费网站| 日韩欧美专区在线| 中文字幕一区二区三中文字幕| 亚洲国产日日夜夜| 国产露脸91国语对白| 日本高清视频一区二区| 欧美成人精精品一区二区频| 国产精品久久午夜| 男男视频亚洲欧美| 91视频在线观看| 精品国产第一区二区三区观看体验| 专区另类欧美日韩| 韩国在线一区二区| 欧美日韩免费视频| 国产精品久久久久影院亚瑟| 日本欧美一区二区| 91网上在线视频| 久久午夜国产精品| 三级精品在线观看| 91污片在线观看| 欧美国产乱子伦| 无吗不卡中文字幕| 91猫先生在线| 久久久99精品免费观看不卡| 日av在线不卡| 欧美系列一区二区| 亚洲欧美日韩人成在线播放| 狠狠v欧美v日韩v亚洲ⅴ| 欧美精品 国产精品| 亚洲你懂的在线视频| 高清在线不卡av| 久久影院午夜论| 日本午夜精品视频在线观看 | 麻豆国产欧美一区二区三区| 欧美综合亚洲图片综合区| 国产精品蜜臀av| 成人在线一区二区三区| 精品国内片67194| 免费日韩伦理电影| 欧美一区在线视频| 午夜一区二区三区视频| 在线一区二区视频| 中文在线免费一区三区高中清不卡| 久久精品国产99久久6| 日韩一级欧美一级| 日韩精品电影在线观看| 欧美日韩aaaaaa| 亚洲午夜av在线| 欧美性极品少妇| 亚洲成人手机在线| 欧美日韩中文另类| 天天色天天操综合| 欧美一区午夜精品| 美美哒免费高清在线观看视频一区二区| 欧美日韩亚洲另类| 丝袜诱惑制服诱惑色一区在线观看 | 91污片在线观看| 亚洲视频每日更新| 色老汉av一区二区三区| 夜夜嗨av一区二区三区网页| 欧美在线观看一二区| 亚洲第一精品在线| 69精品人人人人| 久久99日本精品| 久久青草国产手机看片福利盒子 | 日韩欧美黄色影院| 极品瑜伽女神91| 久久久精品天堂| www.亚洲激情.com| 亚洲精品福利视频网站| 在线观看视频欧美| 蜜臀久久99精品久久久久宅男| 欧美一级日韩一级| 国产精品自拍一区| 亚洲欧洲另类国产综合| 欧美日韩免费观看一区三区| 免费国产亚洲视频| 日本一二三不卡| 欧美在线观看一区二区| 另类小说一区二区三区| 国产精品网站在线观看| 欧洲一区二区av| 成a人片国产精品| 中文字幕在线一区免费| 在线免费av一区| 日本成人在线网站| 国产精品美女久久福利网站| 在线观看日韩电影| 久久99精品一区二区三区三区| 日本一区二区不卡视频| 欧美色精品在线视频|