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

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

?? mod2.frm

?? 一個Pascal語言分析器
?? FRM
字號:
PROGRAM -->Grammar;
(* Simple Modula-2 pretty printer program *)

USES -->Scanner, (* lst, src, errors, Error, CharAt *)
     -->Parser, (* Parse *)
     Prettier;

PROCEDURE AppendExtension (OldName, Ext : STRING; VAR NewName : STRING);
  VAR
    i : INTEGER;
  BEGIN
    i := System.Length(OldName);
    WHILE (i > 0) AND (OldName[i] <> '.') AND (OldName[i] <> '\') DO DEC(i);
    IF (i > 0) AND (OldName[i] = '.') THEN System.Delete(OldName, i, 255);
    IF System.Pos('.', Ext) = 1 THEN System.Delete(Ext, 1, 1);
    NewName := OldName + '.' + Ext
  END;

(* ------------------- Source Listing and Error handler -------------- *)

  TYPE
    CHARSET = SET OF CHAR;
    Err = ^ErrDesc;
    ErrDesc = RECORD
      nr, line, col: INTEGER;
      next: Err
    END;

  CONST
    TAB  = #09;
    _LF  = #10;
    _CR  = #13;
    _EF  = #0;
    LineEnds : CHARSET = [_CR, _LF, _EF];

  VAR
    firstErr, lastErr: Err;
    Extra : INTEGER;

  PROCEDURE StoreError (nr, line, col: INTEGER; pos: LONGINT); FAR;
  (* Store an error message for later printing *)
    VAR
      nextErr: Err;
    BEGIN
      NEW(nextErr);
      nextErr^.nr := nr; nextErr^.line := line; nextErr^.col := col;
      nextErr^.next := NIL;
      IF firstErr = NIL
        THEN firstErr := nextErr
        ELSE lastErr^.next := nextErr;
      lastErr := nextErr;
      INC(errors)
    END;

  PROCEDURE GetLine (VAR pos  : LONGINT;
                     VAR line : STRING;
                     VAR eof  : BOOLEAN);
  (* Read a source line. Return empty line if eof *)
    VAR
      ch: CHAR;
      i:  INTEGER;
    BEGIN
      i := 1; eof := FALSE; ch := CharAt(pos); INC(pos);
      WHILE NOT (ch IN LineEnds) DO BEGIN
        line[i] := ch; INC(i); ch := CharAt(pos); INC(pos);
      END;
      line[0] := Chr(i-1);
      eof := (i = 1) AND (ch = _EF);
      IF ch = _CR THEN BEGIN (* check for MsDos *)
        ch := CharAt(pos);
        IF ch = _LF THEN BEGIN INC(pos); Extra := 0 END
      END
    END;

  PROCEDURE PrintErr (line : STRING; nr, col: INTEGER);
  (* Print an error message *)

    PROCEDURE Msg (s: STRING);
      BEGIN
        Write(lst, s)
      END;

    PROCEDURE Pointer;
      VAR
        i : INTEGER;
      BEGIN
        Write(lst, '*****  ');
        i := 0;
        WHILE i < col + Extra - 2 DO BEGIN
          IF line[i] = TAB
            THEN Write(lst, TAB)
            ELSE Write(lst, ' ');
          INC(i)
        END;
        Write(lst, '^ ')
      END;

    BEGIN
      Pointer;
      CASE nr OF
      -->Errors ELSE BEGIN Msg('Error: '); WriteLn(lst, nr); END
      END;
      WriteLn(lst)
    END;

  PROCEDURE PrintListing;
  (* Print a source listing with error messages *)
    VAR
      nextErr:   Err;
      eof:       BOOLEAN;
      lnr, errC: INTEGER;
      srcPos:    LONGINT;
      line:      STRING;
    BEGIN
      WriteLn(lst, 'Listing:');
      WriteLn(lst);
      srcPos := 0; nextErr := firstErr;
      GetLine(srcPos, line, eof); lnr := 1; errC := 0;
      WHILE NOT eof DO BEGIN
        WriteLn(lst, lnr:5, '  ', line);
        WHILE (nextErr <> NIL) AND (nextErr^.line = lnr) DO BEGIN
          PrintErr(line, nextErr^.nr, nextErr^.col); INC(errC);
          nextErr := nextErr^.next
        END;
        GetLine(srcPos, line, eof); INC(lnr);
      END;
      IF nextErr <> NIL THEN BEGIN
        WriteLn(lst, lnr:5);
        WHILE nextErr <> NIL DO BEGIN
          PrintErr(line, nextErr^.nr, nextErr^.col); INC(errC);
          nextErr := nextErr^.next
        END
      END;
      WriteLn(lst);
      Write(lst, errC:5, ' error');
      IF errC <> 1 THEN Write(lst, 's');
      WriteLn(lst); WriteLn(lst); WriteLn(lst);
    END;

(* --------------------------- main module ------------------------------- *)

VAR
  sourceName, listName, resultsName : STRING;

BEGIN
   firstErr := NIL; Extra := 1;

  WriteLn('Modula-2 pretty printer');
  (* check on correct parameter usage *)
   IF ParamCount < 1 THEN BEGIN
     WriteLn('No input file specified');
     HALT;
   END;
   sourceName := ParamStr(1);

  (* open the source file Scanner.src *)
  Assign(src, sourceName);
  {$I-}
  Reset(src, 1);
  {$I+}
  IF IOResult <> 0 THEN BEGIN
    WriteLn('Could not open input file');
    HALT;
  END;

  AppendExtension(sourceName, 'NEW', resultsName);
  Assign(Prettier.results, resultsName);
  {$I-}
  Rewrite(Prettier.results);
  {$I+}
  IF IOResult <> 0 THEN BEGIN
    Close(Prettier.results);
    WriteLn('Could not open output file');
    Assign(Prettier.results, ''); Rewrite(Prettier.results);
  END;

  (* install error reporting procedure *)
  -->Scanner.Error := StoreError;

  (* instigate the compilation *)
  WriteLn('Parsing');
  Parse;

  (* examine the outcome from Scanner.errors *)
  IF errors = 0
    THEN Write('Parsed correctly - see ', resultsName)
    ELSE BEGIN
      (* open the output file for the source listing Scanner.lst *)
      AppendExtension(sourceName, 'LST', listName);
      Assign(lst, listName);
      {$I-} Rewrite(lst); {$I+}
      IF IOResult <> 0 THEN BEGIN
        Close(lst);
        WriteLn('Could not open listing file');
        (* default Scanner.lst to stdOut *)
        Assign(lst, ''); Rewrite(lst);
      END;
      (* generate the source listing on Scanner.lst *)
      PrintListing; Close(lst);
      Write('Incorrect source - see ', listName)
    END;
  Close(Prettier.results);
END. (* -->Grammar *)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久99精品| 亚洲国产精品一区二区久久| 亚洲精品日韩综合观看成人91| 蜜桃av一区二区三区电影| 91在线视频网址| 精品99999| 午夜精品一区二区三区三上悠亚| 波多野结衣一区二区三区| 91精品国产一区二区人妖| 一区二区三区中文在线观看| 国产精品亚洲一区二区三区妖精 | 综合婷婷亚洲小说| 色综合视频一区二区三区高清| 精品国产乱码久久久久久久久 | 欧美主播一区二区三区| 国产精品乱码妇女bbbb| 狠狠网亚洲精品| 欧美一区二区精美| 偷拍日韩校园综合在线| 欧美色图第一页| 亚洲综合一区二区三区| 精品国产污网站| 人人超碰91尤物精品国产| 91麻豆精品国产91久久久| 亚洲成人av资源| 欧美丰满少妇xxxbbb| 亚洲高清视频中文字幕| 在线观看国产精品网站| 亚洲一区免费观看| 欧美性生活大片视频| 亚洲国产精品一区二区久久恐怖片 | 亚洲线精品一区二区三区 | 欧美精品在线视频| 亚洲第一成人在线| 欧美伦理电影网| 美女视频黄免费的久久| 精品国产一区二区三区久久久蜜月| 日本怡春院一区二区| 日韩一区二区三区免费看| 91高清视频在线| 一区二区三区欧美久久| 欧美私模裸体表演在线观看| 亚洲电影中文字幕在线观看| 欧美精品亚洲二区| 奇米精品一区二区三区在线观看一 | 在线视频中文字幕一区二区| 亚洲午夜激情av| 91精品国产品国语在线不卡| 欧美在线看片a免费观看| 午夜国产精品一区| 日韩视频国产视频| 粉嫩av亚洲一区二区图片| 亚洲欧洲精品一区二区三区不卡| 色婷婷av一区| 日韩av一级电影| 中文字幕第一区| 欧美午夜视频网站| 国产一区 二区 三区一级| 国产精品网站在线| 欧美午夜精品久久久久久孕妇| 日本不卡视频在线| 国产欧美一区二区三区在线看蜜臀| 成人综合在线观看| 午夜电影一区二区三区| 亚洲综合在线视频| 欧美sm美女调教| 91视频免费观看| 免费人成精品欧美精品| 国产精品色在线观看| 欧美二区三区的天堂| 丁香另类激情小说| 天堂va蜜桃一区二区三区漫画版 | 国产一区久久久| 一区二区三区在线免费观看 | 在线这里只有精品| 另类调教123区| 一区二区三区中文免费| 久久精品网站免费观看| 欧美色图免费看| www.日本不卡| 国产一区二区三区四| 亚洲成av人在线观看| 国产精品家庭影院| 精品久久久久久久人人人人传媒| 91毛片在线观看| 国产精品一级黄| 久久99久久久久| 亚洲午夜久久久久久久久久久 | 国产亚洲婷婷免费| 91精品婷婷国产综合久久竹菊| gogo大胆日本视频一区| 久久精品国产99久久6| 亚洲影院久久精品| 经典三级在线一区| 日韩高清国产一区在线| 一区二区三区不卡视频在线观看| 久久久久久久久久久久电影| 欧美一卡二卡在线观看| 欧美日韩国产电影| 欧美中文字幕一区二区三区亚洲| 高清不卡在线观看| 韩国v欧美v日本v亚洲v| 日本成人在线不卡视频| 亚洲成av人影院| 亚洲国产乱码最新视频| 亚洲综合在线免费观看| 夜夜操天天操亚洲| 一区二区三区在线看| 亚洲精品菠萝久久久久久久| 亚洲视频一二三区| 亚洲视频一区在线观看| 亚洲免费在线视频一区 二区| 国产精品国产三级国产aⅴ无密码| 久久女同精品一区二区| 久久久精品中文字幕麻豆发布| 一区二区成人在线视频| 亚洲欧美日韩中文播放| 中文字幕一区在线| 夜夜嗨av一区二区三区四季av | 国产精品一二三| 成人丝袜视频网| 91原创在线视频| 欧美午夜在线一二页| 在线成人免费观看| 日韩午夜在线观看| 久久久久久一级片| 日韩美女视频一区二区| 亚洲线精品一区二区三区八戒| 亚洲国产精品一区二区www在线| 午夜精品一区二区三区三上悠亚| 99久久夜色精品国产网站| 94-欧美-setu| 欧美群妇大交群中文字幕| 欧美一区二区三区视频在线观看| 欧美一区二区三区视频免费播放| 国产人伦精品一区二区| 亚洲精品在线观看网站| 欧美精品一区二区三区四区 | 中文字幕日韩欧美一区二区三区| 2020国产精品| 国产精品久久久久三级| 亚洲国产综合在线| 久久草av在线| 日本精品视频一区二区三区| 欧美剧情片在线观看| 久久久综合精品| 中文字幕一区二| 日本中文字幕一区二区有限公司| 欧美主播一区二区三区美女| 国产精品毛片久久久久久久| 国产一区二区三区在线观看免费| 久久网站热最新地址| 成人一道本在线| 精品电影一区二区三区| 日本不卡在线视频| 欧美高清一级片在线| 亚洲最大成人综合| 91国在线观看| 一区二区三区四区精品在线视频| 懂色中文一区二区在线播放| 久久亚洲精精品中文字幕早川悠里 | 国产a精品视频| 日韩精品欧美精品| 欧美日韩精品专区| 亚洲午夜久久久久久久久电影院 | 亚洲一区二区三区免费视频| 91麻豆精品视频| 亚洲色图19p| 91视频免费看| 亚洲一区二区欧美日韩| 欧美色窝79yyyycom| 午夜免费久久看| 日韩欧美亚洲国产另类| 欧美日本一区二区三区| 亚洲一二三区视频在线观看| 欧美日韩精品系列| 天天影视涩香欲综合网| 日韩欧美综合一区| 国产精品一级片在线观看| 国产精品久久久久一区二区三区| 成人国产精品免费| 亚洲视频小说图片| 欧美色老头old∨ideo| 日韩高清在线电影| 欧美va天堂va视频va在线| 国产成人精品免费| 成人欧美一区二区三区1314| 在线免费精品视频| 午夜精品久久久久久久| 丝袜亚洲另类丝袜在线| 日韩欧美三级在线| 国产**成人网毛片九色| 亚洲三级电影网站| 欧美一区二区三区播放老司机| 国产真实精品久久二三区| 日韩理论电影院| 欧美一区二区三区免费视频| 丁香天五香天堂综合| 亚洲综合一区在线| 国产亚洲欧美日韩日本|