?? crs.pas
字號:
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
1: IF (ch >= '0') AND (ch <= '9') OR
(ch >= 'A') AND (ch <= 'Z') OR
(ch = '_') OR
(ch >= 'a') AND (ch <= 'z') THEN BEGIN
END ELSE BEGIN sym := 1; CheckLiteral; EXIT; END;
2: BEGIN sym := 2; EXIT; END;
3: BEGIN sym := 3; EXIT; END;
4: IF (ch >= '0') AND (ch <= '9') THEN BEGIN
END ELSE BEGIN sym := 4; EXIT; END;
5: IF (ch >= '0') AND (ch <= '9') OR
(ch >= 'A') AND (ch <= 'Z') OR
(ch = '_') OR
(ch >= 'a') AND (ch <= 'z') THEN BEGIN
END ELSE BEGIN sym := 45; EXIT; END;
6: IF (ch = CHR(0)) OR
(ch >= ' ') AND (ch <= '!') OR
(ch >= '#') THEN BEGIN
END ELSE IF (ch = CHR(10)) OR
(ch = CHR(13)) THEN BEGIN state := 3;
END ELSE IF (ch = '"') THEN BEGIN state := 2;
END ELSE BEGIN sym := noSym; EXIT; END;
7: IF (ch = CHR(0)) OR
(ch >= ' ') AND (ch <= '&') OR
(ch >= '(') THEN BEGIN
END ELSE IF (ch = CHR(10)) OR
(ch = CHR(13)) THEN BEGIN state := 3;
END ELSE IF (ch = CHR(39)) THEN BEGIN state := 2;
END ELSE BEGIN sym := noSym; EXIT; END;
8: BEGIN sym := 7; EXIT; END;
9: BEGIN sym := 8; EXIT; END;
10: BEGIN sym := 10; EXIT; END;
11: IF (ch = '.') THEN BEGIN state := 14;
END ELSE IF (ch = '>') THEN BEGIN state := 25;
END ELSE IF (ch = ')') THEN BEGIN state := 27;
END ELSE BEGIN sym := 11; EXIT; END;
12: BEGIN sym := 23; EXIT; END;
13: BEGIN sym := 24; EXIT; END;
14: BEGIN sym := 25; EXIT; END;
15: IF (ch = '.') THEN BEGIN state := 26;
END ELSE BEGIN sym := 28; EXIT; END;
16: BEGIN sym := 29; EXIT; END;
17: BEGIN sym := 30; EXIT; END;
18: BEGIN sym := 32; EXIT; END;
19: BEGIN sym := 33; EXIT; END;
20: BEGIN sym := 34; EXIT; END;
21: BEGIN sym := 35; EXIT; END;
22: IF (ch = '.') THEN BEGIN state := 24;
END ELSE BEGIN sym := 38; EXIT; END;
23: BEGIN sym := 39; EXIT; END;
24: BEGIN sym := 40; EXIT; END;
25: BEGIN sym := 41; EXIT; END;
26: BEGIN sym := 42; EXIT; END;
27: BEGIN sym := 43; EXIT; END;
28: BEGIN sym := 0; ch := #0; DEC(bp); EXIT END;
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
CurrentCh := CharAt;
start[ 0] := 28; start[ 1] := 29; start[ 2] := 29; start[ 3] := 29;
start[ 4] := 29; start[ 5] := 29; start[ 6] := 29; start[ 7] := 29;
start[ 8] := 29; start[ 9] := 29; start[ 10] := 29; start[ 11] := 29;
start[ 12] := 29; start[ 13] := 29; start[ 14] := 29; start[ 15] := 29;
start[ 16] := 29; start[ 17] := 29; start[ 18] := 29; start[ 19] := 29;
start[ 20] := 29; start[ 21] := 29; start[ 22] := 29; start[ 23] := 29;
start[ 24] := 29; start[ 25] := 29; start[ 26] := 29; start[ 27] := 29;
start[ 28] := 29; start[ 29] := 29; start[ 30] := 29; start[ 31] := 29;
start[ 32] := 29; start[ 33] := 29; start[ 34] := 6; start[ 35] := 29;
start[ 36] := 5; start[ 37] := 29; start[ 38] := 29; start[ 39] := 7;
start[ 40] := 15; start[ 41] := 16; start[ 42] := 29; start[ 43] := 12;
start[ 44] := 8; start[ 45] := 13; start[ 46] := 11; start[ 47] := 29;
start[ 48] := 4; start[ 49] := 4; start[ 50] := 4; start[ 51] := 4;
start[ 52] := 4; start[ 53] := 4; start[ 54] := 4; start[ 55] := 4;
start[ 56] := 4; start[ 57] := 4; start[ 58] := 29; start[ 59] := 9;
start[ 60] := 22; start[ 61] := 10; start[ 62] := 23; start[ 63] := 29;
start[ 64] := 29; start[ 65] := 1; start[ 66] := 1; start[ 67] := 1;
start[ 68] := 1; start[ 69] := 1; start[ 70] := 1; start[ 71] := 1;
start[ 72] := 1; start[ 73] := 1; start[ 74] := 1; start[ 75] := 1;
start[ 76] := 1; start[ 77] := 1; start[ 78] := 1; start[ 79] := 1;
start[ 80] := 1; start[ 81] := 1; start[ 82] := 1; start[ 83] := 1;
start[ 84] := 1; start[ 85] := 1; start[ 86] := 1; start[ 87] := 1;
start[ 88] := 1; start[ 89] := 1; start[ 90] := 1; start[ 91] := 18;
start[ 92] := 29; start[ 93] := 19; start[ 94] := 29; start[ 95] := 1;
start[ 96] := 29; start[ 97] := 1; start[ 98] := 1; start[ 99] := 1;
start[100] := 1; start[101] := 1; start[102] := 1; start[103] := 1;
start[104] := 1; start[105] := 1; start[106] := 1; start[107] := 1;
start[108] := 1; start[109] := 1; start[110] := 1; start[111] := 1;
start[112] := 1; start[113] := 1; start[114] := 1; start[115] := 1;
start[116] := 1; start[117] := 1; start[118] := 1; start[119] := 1;
start[120] := 1; start[121] := 1; start[122] := 1; start[123] := 20;
start[124] := 17; start[125] := 21; start[126] := 29; start[127] := 29;
start[128] := 29; start[129] := 29; start[130] := 29; start[131] := 29;
start[132] := 29; start[133] := 29; start[134] := 29; start[135] := 29;
start[136] := 29; start[137] := 29; start[138] := 29; start[139] := 29;
start[140] := 29; start[141] := 29; start[142] := 29; start[143] := 29;
start[144] := 29; start[145] := 29; start[146] := 29; start[147] := 29;
start[148] := 29; start[149] := 29; start[150] := 29; start[151] := 29;
start[152] := 29; start[153] := 29; start[154] := 29; start[155] := 29;
start[156] := 29; start[157] := 29; start[158] := 29; start[159] := 29;
start[160] := 29; start[161] := 29; start[162] := 29; start[163] := 29;
start[164] := 29; start[165] := 29; start[166] := 29; start[167] := 29;
start[168] := 29; start[169] := 29; start[170] := 29; start[171] := 29;
start[172] := 29; start[173] := 29; start[174] := 29; start[175] := 29;
start[176] := 29; start[177] := 29; start[178] := 29; start[179] := 29;
start[180] := 29; start[181] := 29; start[182] := 29; start[183] := 29;
start[184] := 29; start[185] := 29; start[186] := 29; start[187] := 29;
start[188] := 29; start[189] := 29; start[190] := 29; start[191] := 29;
start[192] := 29; start[193] := 29; start[194] := 29; start[195] := 29;
start[196] := 29; start[197] := 29; start[198] := 29; start[199] := 29;
start[200] := 29; start[201] := 29; start[202] := 29; start[203] := 29;
start[204] := 29; start[205] := 29; start[206] := 29; start[207] := 29;
start[208] := 29; start[209] := 29; start[210] := 29; start[211] := 29;
start[212] := 29; start[213] := 29; start[214] := 29; start[215] := 29;
start[216] := 29; start[217] := 29; start[218] := 29; start[219] := 29;
start[220] := 29; start[221] := 29; start[222] := 29; start[223] := 29;
start[224] := 29; start[225] := 29; start[226] := 29; start[227] := 29;
start[228] := 29; start[229] := 29; start[230] := 29; start[231] := 29;
start[232] := 29; start[233] := 29; start[234] := 29; start[235] := 29;
start[236] := 29; start[237] := 29; start[238] := 29; start[239] := 29;
start[240] := 29; start[241] := 29; start[242] := 29; start[243] := 29;
start[244] := 29; start[245] := 29; start[246] := 29; start[247] := 29;
start[248] := 29; start[249] := 29; start[250] := 29; start[251] := 29;
start[252] := 29; start[253] := 29; start[254] := 29; start[255] := 29;
Error := Err; LBlkSize := BlkSize; lastCh := EF;
END. (* CRS *)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -