Subversion Repositories Kolibri OS

Rev

Rev 7107 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7107 Rev 7597
Line 1... Line 1...
1
(*
1
(*
2
    Copyright 2016, 2017 Anton Krotov
2
    BSD 2-Clause License
Line 3... Line 3...
3
 
3
 
4
    This file is part of Compiler.
-
 
5
 
-
 
6
    Compiler is free software: you can redistribute it and/or modify
-
 
7
    it under the terms of the GNU General Public License as published by
-
 
8
    the Free Software Foundation, either version 3 of the License, or
4
    Copyright (c) 2018, 2019, Anton Krotov
9
    (at your option) any later version.
-
 
10
 
-
 
11
    Compiler is distributed in the hope that it will be useful,
-
 
12
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-
 
13
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-
 
14
    GNU General Public License for more details.
-
 
15
 
-
 
16
    You should have received a copy of the GNU General Public License
-
 
17
    along with Compiler. If not, see .
5
    All rights reserved.
Line 18... Line 6...
18
*)
6
*)
Line 19... Line 7...
19
 
7
 
Line 20... Line -...
20
MODULE ERRORS;
-
 
Line -... Line 8...
-
 
8
MODULE ERRORS;
-
 
9
 
21
 
10
IMPORT C := CONSOLE, UTILS;
-
 
11
 
-
 
12
 
-
 
13
PROCEDURE hintmsg* (name: ARRAY OF CHAR; line, col, hint: INTEGER);
-
 
14
BEGIN
Line 22... Line -...
22
IMPORT H := HOST;
-
 
Line -... Line 15...
-
 
15
    IF hint = 0 THEN
23
 
16
        C.String("  hint ("); C.Int(line); C.String(":"); C.Int(col); C.String(")");
-
 
17
        C.String(" variable '"); C.String(name); C.StringLn("' never used")
Line 24... Line -...
24
TYPE
-
 
25
 
-
 
26
  STRING = ARRAY 1024 OF CHAR;
-
 
27
 
-
 
28
  CP = ARRAY 256 OF INTEGER;
18
    END
29
 
19
END hintmsg;
30
VAR
-
 
31
 
-
 
32
  cp: CP;
-
 
33
 
-
 
34
 
-
 
35
PROCEDURE utf8(code: INTEGER; VAR uchar: STRING);
-
 
36
BEGIN
-
 
37
  uchar[0] := 0X;
-
 
38
  IF code < 80H THEN
-
 
39
    uchar[0] := CHR(code);
-
 
40
    uchar[1] := 0X
20
 
41
  ELSIF code < 800H THEN
-
 
42
    uchar[1] := CHR(ROR(LSL(code, 26), 26) + 80H);
-
 
43
    uchar[0] := CHR(ASR(code, 6) + 0C0H);
-
 
44
    uchar[2] := 0X
-
 
45
  ELSIF code < 10000H THEN
-
 
46
    uchar[2] := CHR(ROR(LSL(code, 26), 26) + 80H);
-
 
47
    code := ASR(code, 6);
-
 
48
    uchar[1] := CHR(ROR(LSL(code, 26), 26) + 80H);
-
 
Line -... Line 21...
-
 
21
 
-
 
22
PROCEDURE errormsg* (fname: ARRAY OF CHAR; line, col, errno: INTEGER);
49
    uchar[0] := CHR(ASR(code, 6) + 0E0H);
23
VAR
-
 
24
    str: ARRAY 80 OF CHAR;
-
 
25
 
-
 
26
BEGIN
-
 
27
    C.Ln;
50
    uchar[3] := 0X
28
    C.String("  error ("); C.Int(line); C.String(":"); C.Int(col); C.String(") ");
-
 
29
 
51
(*
30
    CASE errno OF
-
 
31
    |  1: str := "missing 'H' or 'X'"
-
 
32
    |  2: str := "missing scale"
-
 
33
    |  3: str := "unclosed string"
-
 
34
    |  4: str := "illegal character"
-
 
35
    |  5: str := "string too long"
-
 
36
    |  6: str := "identifier too long"
-
 
37
    |  7: str := "number too long"
-
 
38
    |  8..12: str := "number too large"
-
 
39
 
-
 
40
    | 21: str := "'MODULE' expected"
-
 
41
    | 22: str := "identifier expected"
-
 
42
    | 23: str := "module name does not match file name"
-
 
43
    | 24: str := "';' expected"
-
 
44
    | 25: str := "identifier does not match module name"
-
 
45
    | 26: str := "'.' expected"
-
 
46
    | 27: str := "'END' expected"
-
 
47
    | 28: str := "',', ';' or ':=' expected"
-
 
48
    | 29: str := "module not found"
-
 
49
    | 30: str := "multiply defined identifier"
-
 
50
    | 31: str := "recursive import"
-
 
51
    | 32: str := "'=' expected"
-
 
52
    | 33: str := "')' expected"
-
 
53
    | 34: str := "syntax error in expression"
-
 
54
    | 35: str := "'}' expected"
-
 
55
    | 36: str := "incompatible operand"
-
 
56
    | 37: str := "incompatible operands"
-
 
57
    | 38: str := "'RETURN' expected"
-
 
58
    | 39: str := "integer overflow"
-
 
59
    | 40: str := "floating point overflow"
-
 
60
    | 41: str := "not enough floating point registers; simplify expression"
-
 
61
    | 42: str := "out of range 0..255"
-
 
62
    | 43: str := "expression is not an integer"
-
 
63
    | 44: str := "out of range 0..MAXSET"
-
 
64
    | 45: str := "division by zero"
-
 
65
    | 46: str := "integer division by zero"
-
 
66
    | 47: str := "'OF' or ',' expected"
-
 
67
    | 48: str := "undeclared identifier"
-
 
68
    | 49: str := "type expected"
-
 
69
    | 50: str := "recursive type definition"
-
 
70
    | 51: str := "illegal value of constant"
-
 
71
    | 52: str := "not a record type"
-
 
72
    | 53: str := "':' expected"
-
 
73
    | 54: str := "need to import SYSTEM"
-
 
74
    | 55: str := "pointer type not defined"
-
 
75
    | 56: str := "out of range 0..MAXSET"
-
 
76
    | 57: str := "'TO' expected"
-
 
77
    | 58: str := "not a record type"
-
 
78
    | 59: str := "this expression cannot be a procedure"
-
 
79
    | 60: str := "identifier does not match procedure name"
-
 
80
    | 61: str := "illegally marked identifier"
-
 
81
    | 62: str := "expression should be constant"
-
 
82
    | 63: str := "'stdcall', 'ccall', 'ccall16', 'windows' or 'linux' expected"
-
 
83
    | 64: str := "'(' expected"
-
 
84
    | 65: str := "',' expected"
52
  ELSIF code < 200000H THEN
85
    | 66: str := "incompatible parameter"
-
 
86
    | 67: str := "'OF' expected"
-
 
87
    | 68: str := "type expected"
-
 
88
    | 69: str := "result type of procedure is not a basic type"
53
  ELSIF code < 4000000H THEN
89
    | 70: str := "import not supported"
-
 
90
    | 71: str := "']' expected"
-
 
91
    | 72: str := "expression is not BOOLEAN"
-
 
92
    | 73: str := "not a record"
-
 
93
    | 74: str := "undefined record field"
-
 
94
    | 75: str := "not an array"
-
 
95
    | 76: str := "expression is not an integer"
-
 
96
    | 77: str := "not a pointer"
-
 
97
    | 78: str := "type guard not allowed"
-
 
98
    | 79: str := "not a type"
-
 
99
    | 80: str := "not a record type"
-
 
100
    | 81: str := "not a pointer type"
-
 
101
    | 82: str := "type guard not allowed"
-
 
102
    | 83: str := "index out of range"
-
 
103
    | 84: str := "dimension too large"
-
 
104
    | 85: str := "procedure must have level 0"
-
 
105
    | 86: str := "not a procedure"
-
 
106
    | 87: str := "incompatible expression (RETURN)"
-
 
107
    | 88: str := "'THEN' expected"
-
 
108
    | 89: str := "'DO' expected"
-
 
109
    | 90: str := "'UNTIL' expected"
-
 
110
    | 91: str := "incompatible assignment"
-
 
111
    | 92: str := "procedure call of a function"
-
 
112
    | 93: str := "not a variable"
-
 
113
    | 94: str := "read only variable"
-
 
114
    | 95: str := "invalid type of expression (CASE)"
-
 
115
    | 96: str := "':=' expected"
-
 
116
    | 97: str := "not INTEGER variable"
-
 
117
    | 98: str := "illegal value of constant (0)"
-
 
118
    | 99: str := "incompatible label"
-
 
119
    |100: str := "multiply defined label"
-
 
120
    |101: str := "too large parameter of WCHR"
-
 
121
    |102: str := "label expected"
-
 
122
    |103: str := "illegal value of constant"
-
 
123
    |104: str := "type too large"
-
 
124
    |105: str := "access to intermediate variables not allowed"
-
 
125
    |106: str := "qualified identifier expected"
-
 
126
    |107: str := "too large parameter of CHR"
-
 
127
    |108: str := "a variable or a procedure expected"
-
 
128
    |109: str := "expression should be constant"
-
 
129
    |110: str := "'noalign' expected"
-
 
130
    |111: str := "record [noalign] cannot have a base type"
54
  ELSE	*)
131
    |112: str := "record [noalign] cannot be a base type"
-
 
132
    |113: str := "result type of procedure should not be REAL"
-
 
133
    |114: str := "identifiers 'lib_init' and 'version' are reserved"
-
 
134
    |115: str := "recursive constant definition"
55
  END
135
    |116: str := "procedure too deep nested"
Line 56... Line -...
56
END utf8;
-
 
57
 
-
 
58
PROCEDURE InitCP(VAR cp: CP);
-
 
59
VAR i: INTEGER;
-
 
60
BEGIN
-
 
61
   FOR i := 0H TO 7FH DO
-
 
62
     cp[i] := i
-
 
63
   END
-
 
64
END InitCP;
-
 
65
 
-
 
66
PROCEDURE Init8(VAR cp: CP; VAR n: INTEGER; a, b, c, d, e, f, g, h: INTEGER);
-
 
Line 67... Line 136...
67
BEGIN
136
    |117: str := "'stdcall64', 'win64', 'systemv', 'windows' or 'linux' expected"
68
  cp[n] := a; INC(n);
-
 
69
  cp[n] := b; INC(n);
137
    |118: str := "this flag for Windows only"
70
  cp[n] := c; INC(n);
-
 
71
  cp[n] := d; INC(n);
-
 
72
  cp[n] := e; INC(n);
138
    |119: str := "this flag for Linux only"
73
  cp[n] := f; INC(n);
139
    |120: str := "too many formal parameters"
74
  cp[n] := g; INC(n);
-
 
75
  cp[n] := h; INC(n);
-
 
76
END Init8;
-
 
77
 
140
    END;
78
PROCEDURE InitCP866(VAR cp: CP);
-
 
79
VAR n, i: INTEGER;
-
 
80
BEGIN
-
 
81
   FOR i := 0410H TO 043FH DO
-
 
82
     cp[i - 0410H + 80H] := i
-
 
83
   END;
-
 
84
   FOR i := 0440H TO 044FH DO
-
 
85
     cp[i - 0440H + 0E0H] := i
141
    C.StringLn(str);
86
   END;
-
 
87
 
-
 
Line 88... Line -...
88
   n := 0B0H;
-
 
89
   Init8(cp, n, 2591H, 2592H, 2593H, 2502H, 2524H, 2561H, 2562H, 2556H);
-
 
Line 90... Line 142...
90
   Init8(cp, n, 2555H, 2563H, 2551H, 2557H, 255DH, 255CH, 255BH, 2510H);
142
    C.String("  file:  ");  C.StringLn(fname);
91
   Init8(cp, n, 2514H, 2534H, 252CH, 251CH, 2500H, 253CH, 255EH, 255FH);
-
 
92
   Init8(cp, n, 255AH, 2554H, 2569H, 2566H, 2560H, 2550H, 256CH, 2567H);
143
    UTILS.Exit(1)
93
   Init8(cp, n, 2568H, 2564H, 2565H, 2559H, 2558H, 2552H, 2553H, 256BH);
-
 
94
   Init8(cp, n, 256AH, 2518H, 250CH, 2588H, 2584H, 258CH, 2590H, 2580H);
144
END errormsg;
95
 
-
 
96
   n := 0F0H;
145
 
97
   Init8(cp, n, 0401H, 0451H, 0404H, 0454H, 0407H, 0457H, 040EH, 045EH);
-
 
98
   Init8(cp, n, 00B0H, 2219H, 00B7H, 221AH, 2116H, 00A4H, 25A0H, 00A0H);
-
 
99
 
146
 
100
   InitCP(cp)
-
 
101
END InitCP866;
147
PROCEDURE error1* (s1: ARRAY OF CHAR);
Line 102... Line -...
102
 
-
 
103
PROCEDURE concat(VAR L: STRING; R: STRING);
-
 
104
VAR i, n, pos: INTEGER;
-
 
105
BEGIN
-
 
106
  n := LENGTH(R);
-
 
107
  i := 0;
-
 
108
  pos := LENGTH(L);
-
 
109
  WHILE (i <= n) & (pos < LEN(L)) DO
-
 
110
    L[pos] := R[i];
-
 
111
    INC(pos);
-
 
112
    INC(i)
-
 
Line 113... Line 148...
113
  END
148
BEGIN
114
END concat;
-
 
115
 
149
    C.Ln;
116
PROCEDURE Utf8(VAR str: STRING);
150
    C.StringLn(s1);
117
VAR i: INTEGER; in, out, u: STRING;
-
 
118
BEGIN
-
 
119
  in := str;
-
 
120
  out := "";
-
 
121
  FOR i := 0 TO LENGTH(in) - 1 DO
-
 
122
    utf8(cp[ORD(in[i])], u);
-
 
123
    concat(out, u)
-
 
124
  END;
-
 
125
  str := out
-
 
126
END Utf8;
-
 
127
 
-
 
128
PROCEDURE ErrorMsg*(code: INTEGER; VAR msg: ARRAY OF CHAR);
-
 
129
VAR str: STRING;
-
 
130
BEGIN
-
 
131
  CASE code OF
-
 
132
  |  1: str := "®¦¨¤ « áì 'H' ¨«¨ 'X'"
-
 
133
  |  2: str := "®¦¨¤ « áì æ¨äà "
-
 
134
  |  3: str := "áâப  ­¥ ᮤ¥à¦¨â § ªà뢠î饩 ª ¢ë窨"
-
 
135
  |  4: str := "­¥¤®¯ãáâ¨¬ë© á¨¬¢®«"
-
 
136
  |  5: str := "楫®ç¨á«¥­­®¥ ¯¥à¥¯®«­¥­¨¥"
-
 
137
  |  6: str := "᫨誮¬ ¡®«ì讥 §­ ç¥­¨¥ ᨬ¢®«ì­®© ª®­áâ ­âë"
-
 
138
  |  7: str := "¢¥é¥á⢥­­®¥ ¯¥à¥¯®«­¥­¨¥"
-
 
139
  |  8: str := "¯¥à¥¯®«­¥­¨¥ ¯®à浪  ¢¥é¥á⢥­­®£® ç¨á« "
-
 
140
  |  9: str := "¢¥é¥á⢥­­®¥  ­â¨¯¥à¥¯®«­¥­¨¥"
-
 
141
  | 10: str := "᫨誮¬ ¤«¨­­ë© ¨¤¥­â¨ä¨ª â®à"
-
 
142
  | 11: str := "᫨誮¬ ¤«¨­­ ï áâப®¢ ï ª®­áâ ­â "
-
 
143
 
-
 
144
  | 21: str := "®¦¨¤ «®áì 'MODULE'"
-
 
145
  | 22: str := "®¦¨¤ «áï ¨¤¥­â¨ä¨ª â®à"
-
 
146
  | 23: str := "®¦¨¤ « áì ';'"
-
 
147
  | 24: str := "®¦¨¤ «®áì 'END'"
-
 
148
  | 25: str := "®¦¨¤ « áì '.'"
-
 
149
  | 26: str := "¨¤¥­â¨ä¨ª â®à ­¥ ᮢ¯ ¤ ¥â á ¨¬¥­¥¬ ¬®¤ã«ï"
-
 
150
  | 27: str := "­¥®¦¨¤ ­­ë© ª®­¥æ ä ©« "
-
 
151
  | 28: str := "®¦¨¤ « áì ',', ';' ¨«¨ ':='"
-
 
152
  | 29: str := "®¦¨¤ « áì ',' ¨«¨ ';'"
-
 
153
  | 30: str := "¨¤¥­â¨ä¨ª â®à ¯¥à¥®¯à¥¤¥«¥­"
-
 
154
  | 31: str := "横«¨ç¥áª¨© ¨¬¯®àâ"
-
 
155
  | 32: str := "¬®¤ã«ì ­¥ ­ ©¤¥­ ¨«¨ ®è¨¡ª  ¤®áâ㯠"
-
 
156
  | 33: str := "¨¬ï ¬®¤ã«ï ­¥ ᮢ¯ ¤ ¥â á ¨¬¥­¥¬ ä ©«  ¬®¤ã«ï"
-
 
157
  | 34: str := "­¥¯à ¢¨«ì­ë© ä®à¬ â áâப¨ ¬ è¨­­ëå ª®¤®¢"
-
 
158
  | 35: str := "®¦¨¤ «®áì '='"
-
 
159
  | 36: str := "ᨭ⠪á¨ç¥áª ï ®è¨¡ª  ¢ ¢ëà ¦¥­¨¨"
-
 
160
  | 37: str := "®¯¥à æ¨ï ­¥ ¯à¨¬¥­¨¬ "
-
 
161
  | 38: str := "®¦¨¤ « áì ')'"
-
 
162
  | 39: str := "®¦¨¤ «oáì 'ARRAY', 'RECORD', 'POINTER' ¨«¨ 'PROCEDURE'"
-
 
163
  | 40: str := "®¦¨¤ «oáì 'TO'"
-
 
164
  | 41: str := "®¦¨¤ «oáì 'OF'"
-
 
165
  | 42: str := "­¥®¯à¥¤¥«¥­­ë© ¨¤¥­â¨ä¨ª â®à"
-
 
166
  | 43: str := "âॡã¥âáï ¯¥à¥¬¥­­ ï, ¯à®æ¥¤ãà  ¨«¨ áâப®¢ ï ª®­áâ ­â "
-
 
167
  | 44: str := "®¦¨¤ «oáì 'cdecl', 'stdcall' ¨«¨ 'winapi'"
-
 
168
  | 45: str := "ä« £ ¢ë§®¢  ­¥¤®¯ã᪠¥âáï ¤«ï «®ª «ì­ëå ¯à®æ¥¤ãà"
-
 
169
  | 46: str := "¤¥«¥­¨¥ ­  ­ã«ì"
-
 
170
  | 47: str := "âॡã¥âáï ¨¤¥­â¨ä¨ª â®à ⨯ -§ ¯¨á¨ ¨«¨ ⨯ -㪠§ â¥«ï"
-
 
171
  | 48: str := "楫®ç¨á«¥­­®¥ ¤¥«¥­¨¥ ­  ­ã«ì"
-
 
172
  | 49: str := "§­ ç¥­¨¥ «¥¢®£® ®¯¥à ­¤  ¢­¥ ¤¨ ¯ §®­  0..31"
151
    UTILS.Exit(1)
173
  | 50: str := "ä« £ [winapi] ¤®áâ㯥­ ⮫쪮 ¤«ï ¯« âä®à¬ë Windows"
-
 
174
  | 51: str := "®¦¨¤ « áì '}'"
-
 
175
  | 52: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  INTEGER"
-
 
176
  | 53: str := "§­ ç¥­¨¥ ¢ëà ¦¥­¨ï ¢­¥ ¤¨ ¯ §®­  0..31"
-
 
177
  | 54: str := "«¥¢ ï £à ­¨æ  ¤¨ ¯ §®­  ¡®«ìè¥ ¯à ¢®©"
-
 
178
  | 55: str := "âॡã¥âáï ª®­áâ ­â  â¨¯  CHAR"
-
 
179
  | 56: str := "®¦¨¤ « áì '('"
-
 
180
  | 57: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ç¨á«®¢®£® ⨯ "
-
 
181
 
-
 
182
  | 59: str := "­¥¤®áâ â®ç­® ¯ à ¬¥â஢"
-
 
183
  | 60: str := "­¥¤®¯ãáâ¨¬ë© ¯ à ¬¥âà"
-
 
184
  | 61: str := "®¦¨¤ « áì ','"
-
 
185
  | 62: str := "âॡã¥âáï ª®­áâ ­â­®¥ ¢ëà ¦¥­¨¥"
-
 
186
  | 63: str := "âॡã¥âáï ¯¥à¥¬¥­­ ï"
-
 
187
  | 64: str := "ä ©« ­¥ ­ ©¤¥­ ¨«¨ ®è¨¡ª  ¤®áâ㯠"
-
 
188
  | 65: str := "¬®¤ã«ì RTL ­¥ ­ ©¤¥­"
-
 
189
  | 66: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  REAL ¨«¨ LONGREAL"
-
 
190
  | 67: str := "­¥¢®§¬®¦­® ᮧ¤ âì ä ©«, ¢®§¬®¦­® ä ©« ®âªàëâ ¨«¨ ¤¨áª § é¨é¥­ ®â § ¯¨á¨"
-
 
191
  | 68: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  CHAR, SET ¨«¨ BOOLEAN"
-
 
192
  | 69: str := "­¥¢®§¬®¦­® § ¯¨á âì ä ©«"
-
 
193
  | 70: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  LONGREAL"
-
 
194
  | 71: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  REAL"
-
 
195
  | 72: str := "­¥¤®áâ â®ç­® ¯ ¬ï⨠¤«ï § ¢¥à襭¨ï ª®¬¯¨«ï樨"
-
 
196
  | 73: str := "¯à®æ¥¤ãà  ­¥ ¢®§¢à é îé ï १ã«ìâ â ­¥¤®¯ãá⨬  ¢ ¢ëà ¦¥­¨ïå"
-
 
197
  | 74: str := "§­ ç¥­¨¥ ¢ëà ¦¥­¨ï ¢­¥ 楫®ç¨á«¥­­®£® ¤¨ ¯ §®­ "
-
 
198
  | 75: str := "४ãàᨢ­®¥ ®¯à¥¤¥«¥­¨¥ ª®­áâ ­âë"
-
 
199
  | 76: str := "§­ ç¥­¨¥ ¢ëà ¦¥­¨ï ¢­¥ ¤¨ ¯ §®­  0..255"
-
 
200
  | 77: str := "®¦¨¤ «áï ¨¤¥­â¨ä¨ª â®à ⨯ "
-
 
201
  | 78: str := "¤«¨­  ⨯ -¬ áᨢ  ¤®«¦­  ¡ëâì ¡®«ìè¥ ­ã«ï"
-
 
202
  | 79: str := "®¦¨¤ «®áì 'OF' ¨«¨ ','"
-
 
203
  | 80: str := "®¦¨¤ «áï ¨¤¥­â¨ä¨ª â®à ⨯ -§ ¯¨á¨ ¨«¨ ⨯ -㪠§ â¥«ï"
-
 
204
  | 81: str := "¡ §®¢ë© ⨯ ⨯ -㪠§ â¥«ï ¤®«¦¥­ ¡ëâì § ¯¨áìî"
-
 
205
  | 82: str := "⨯ १ã«ìâ â  ¯à®æ¥¤ãàë ­¥ ¬®¦¥â ¡ëâì § ¯¨áìî ¨«¨ ¬ áᨢ®¬"
-
 
206
  | 83: str := "à §¬¥à ⨯  ᫨誮¬ ¢¥«¨ª"
-
 
207
  | 84: str := "®¦¨¤ «áï ¨¤¥­â¨ä¨ª â®à ¨«¨ 'VAR'"
-
 
208
  | 85: str := "®¦¨¤ « áì ',' ¨«¨ ':'"
-
 
209
  | 86: str := "®¦¨¤ «®áì 'END' ¨«¨ ';'"
-
 
210
  | 87: str := "¨¤¥­â¨ä¨ª â®à ­¥ ᮢ¯ ¤ ¥â á ¨¬¥­¥¬ ¯à®æ¥¤ãàë"
-
 
211
 
-
 
212
  | 89: str := "íªá¯®àâ «®ª «ì­®£® ¨¤¥­â¨ä¨ª â®à  ­¥¤®¯ãá⨬"
-
 
213
  | 90: str := "⨯ ARRAY ¨«¨ RECORD ­¥¤®¯ãá⨬"
-
 
214
  | 91: str := "âॡã¥âáï ¨¤¥­â¨ä¨ª â®à ¢¥é¥á⢥­­®£® ⨯ "
-
 
215
 
-
 
216
  | 93: str := "à §¬¥à ¤ ­­ëå ᫨誮¬ ¢¥«¨ª"
-
 
217
  | 94: str := "áâப  ¤«¨­ë, ®â«¨ç­®© ®â 1 ­¥¤®¯ãá⨬ "
-
 
218
  | 95: str := "§­ ç¥­¨¥ ¢ëà ¦¥­¨ï ¤®«¦­® ¡ëâì ¢ ¤¨ ¯ §®­¥ 0..127"
-
 
219
  | 96: str := "­¥¤®¯ãá⨬®¥ ४ãàᨢ­®¥ ®¯à¥¤¥«¥­¨¥ ⨯ "
-
 
220
  | 97: str := "­¥¤®áâ â®ç­® ¢¥é¥á⢥­­ëå ॣ¨áâ஢, ã¯à®áâ¨â¥ ¢ëà ¦¥­¨¥"
-
 
221
  | 98: str := "®¦¨¤ «®áì 'THEN'"
-
 
222
  | 99: str := "¯®«¥ § ¯¨á¨ ­¥ ­ ©¤¥­®"
-
 
223
  |100: str := "¬¥âª  ¤ã¡«¨à®¢ ­ "
-
 
224
  |101: str := "¨¤¥­â¨ä¨ª â®à ⨯  ­¥¤®¯ãá⨬ ¢ ¢ëà ¦¥­¨ïå"
-
 
225
  |102: str := "âॡã¥âáï ¬ áᨢ"
-
 
226
  |103: str := "®¦¨¤ «oáì 'union' ¨«¨ 'noalign'"
-
 
227
  |104: str := "âॡã¥âáï 㪠§ â¥«ì"
-
 
228
  |105: str := "âॡã¥âáï § ¯¨áì"
-
 
229
  |106: str := "âॡã¥âáï ¨¤¥­â¨ä¨ª â®à ⨯ -§ ¯¨á¨"
-
 
230
  |107: str := "âॡã¥âáï ¨¤¥­â¨ä¨ª â®à ⨯ -㪠§ â¥«ï"
-
 
231
  |108: str := "­¥¤®¯ãá⨬ ï ®åà ­  ⨯ "
-
 
232
  |109: str := "®¦¨¤ « áì ']'"
-
 
233
  |110: str := "à §¬¥à­®áâì ®âªàë⮣® ¬ áᨢ  ᫨誮¬ ¢¥«¨ª "
-
 
234
  |111: str := "á¨á⥬­ë¥ ä« £¨ âॡãîâ ¨¬¯®àâ  ¬®¤ã«ï SYSTEM"
-
 
235
  |112: str := "à áè¨à¥­¨¥ § ¯¨á¨ ­¥ ¬®¦¥â ¡ëâì [noalign] ¨«¨ [union]"
-
 
236
  |113: str := "¡ §®¢ë© ⨯ § ¯¨á¨ ­¥ ¬®¦¥â ¡ëâì [noalign] ¨«¨ [union]"
-
 
237
  |114: str := "­¥á®¢¬¥áâ¨¬ë© ¯ à ¬¥âà"
-
 
238
  |115: str := "¯¥à¥¬¥­­ ï ¤®áâ㯭  ⮫쪮 ¤«ï ç⥭¨ï"
-
 
239
  |116: str := "­¥«ì§ï ¨á¯®«ì§®¢ âì «®ª «ì­ãî ¯à®æ¥¤ãàã"
-
 
240
  |117: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  BOOLEAN"
-
 
241
  |118: str := "®¦¨¤ «®áì 'DO'"
-
 
242
  |119: str := "®¦¨¤ «®áì 'UNTIL'"
-
 
243
  |120: str := "®¦¨¤ «®áì ':='"
-
 
244
  |121: str := "à áè¨à¥­¨¥ ¨¬¥­¨ ä ©«  £« ¢­®£® ¬®¤ã«ï ¤®«¦­® ¡ëâì 'ob07'"
-
 
245
  |122: str := "§­ ç¥­¨¥ ¢ëà ¦¥­¨ï ­¥ ¬®¦¥â ¡ëâì à ¢­ë¬ ­ã«î"
-
 
246
  |123: str := "'RETURN' ­¥¤®¯ãá⨬ ¢ ¯à®æ¥¤ãà¥, ­¥ ¢®§¢à é î饩 १ã«ìâ â"
-
 
247
  |124: str := "®¦¨¤ «®áì 'RETURN'"
-
 
248
  |125: str := "⨯ ¢ëà ¦¥­¨ï ­¥ ᮮ⢥âáâ¢ã¥â ⨯ã १ã«ìâ â  ¯à®æ¥¤ãàë"
-
 
249
  |126: str := "âॡã¥âáï ¨¤¥­â¨ä¨ª â®à ¯¥à¥¬¥­­®©"
-
 
250
  |127: str := "áç¥â稪 横«  FOR ­¥ ¤®«¦¥­ ¡ëâì ¯ à ¬¥â஬"
-
 
251
  |128: str := "⨯ ¯¥à¥¬¥­­®© ¤®«¦¥­ ¡ëâì INTEGER"
-
 
252
  |129: str := "¯¥à¥¬¥­­ ï ¤®«¦­  ¡ëâì «®ª «ì­®©"
-
 
253
  |130: str := "­¥«ì§ï ¨á¯®«ì§®¢ âì ª®­áâ ­âã"
-
 
254
  |131: str := "­¥á®¢¬¥á⨬®áâì ¯® ¯à¨á¢ ¨¢ ­¨î"
-
 
255
  |132: str := "¢ë§®¢ ¯à®æ¥¤ãàë-ä㭪樨 ¤®¯ã᪠¥âáï ⮫쪮 ¢ á®áâ ¢¥ ¢ëà ¦¥­¨ï"
-
 
256
  |133: str := "¨¤¥­â¨ä¨ª â®àë 'lib_init' ¨ 'version' § à¥§¥à¢¨à®¢ ­ë"
-
 
257
 
-
 
258
  |138: str := "⨯ ¯¥à¥¬¥­­®© ¤®«¦¥­ ¡ëâì SET"
-
 
259
 
-
 
260
  |141: str := "âॡã¥âáï áâப  ¨«¨ ᨬ¢®«ì­ë© ¬ áᨢ"
-
 
261
 
-
 
262
  |143: str := "âॡã¥âáï ᨬ¢®«ì­ë© ¬ áᨢ"
-
 
263
 
152
END error1;
264
  |145: str := "⨯ ¯¥à¥¬¥­­®© ¤®«¦¥­ ¡ëâì POINTER"
-
 
265
 
-
 
266
  |149: str := "⨯ ¯¥à¥¬¥­­®© ¤®«¦¥­ ¡ëâì REAL ¨«¨ LONGREAL"
153
 
-
 
154
 
Line 267... Line -...
267
  |150: str := "âॡã¥âáï áâப®¢ ï ª®­áâ ­â "
-
 
268
 
-
 
269
  |155: str := "®¦¨¤ « áì '(' ¨«¨ ':='"
155
PROCEDURE error3* (s1, s2, s3: ARRAY OF CHAR);
270
  |156: str := "âॡã¥âáï ¢ëà ¦¥­¨¥ ⨯  INTEGER ¨«¨ CHAR"
156
BEGIN