Commit | Line | Data |
---|---|---|
1d9cecfb BJ |
1 | |
2 | procedure errormsg; | |
3 | var k: integer; | |
4 | msg: array [0..ermax] of alfa; | |
5 | begin | |
6 | msg[ 0] := 'undef id '; msg[ 1] := 'multi def '; | |
7 | msg[ 2] := 'identifier'; msg[ 3] := 'program '; | |
8 | msg[ 4] := ') '; msg[ 5] := ': '; | |
9 | msg[ 6] := 'syntax '; msg[ 7] := 'ident, var'; | |
10 | msg[ 8] := 'of '; msg[ 9] := '( '; | |
11 | msg[10] := 'id, array '; msg[11] := '[ '; | |
12 | msg[12] := '] '; msg[13] := '.. '; | |
13 | msg[14] := '; '; msg[15] := 'func. type'; | |
14 | msg[16] := '= '; msg[17] := 'boolean '; | |
15 | msg[18] := 'convar typ'; msg[19] := 'type '; | |
16 | msg[20] := 'prog.param'; msg[21] := 'too big '; | |
17 | msg[22] := '. '; msg[23] := 'typ (case)'; | |
18 | msg[24] := 'character '; msg[25] := 'const id '; | |
19 | msg[26] := 'index type'; msg[27] := 'indexbound'; | |
20 | msg[28] := 'no array '; msg[29] := 'type id '; | |
21 | msg[30] := 'undef type'; msg[31] := 'no record '; | |
22 | msg[32] := 'boole type'; msg[33] := 'arith type'; | |
23 | msg[34] := 'integer '; msg[35] := 'types '; | |
24 | msg[36] := 'param type'; msg[37] := 'variab id '; | |
25 | msg[38] := 'string '; msg[39] := 'no.of pars'; | |
26 | msg[40] := 'type '; msg[41] := 'type '; | |
27 | msg[42] := 'real type '; msg[43] := 'integer '; | |
28 | msg[44] := 'var, const'; msg[45] := 'var, proc '; | |
29 | msg[46] := 'types (:=)'; msg[47] := 'typ (case)'; | |
30 | msg[48] := 'type '; msg[49] := 'store ovfl'; | |
31 | msg[50] := 'constant '; msg[51] := ':= '; | |
32 | msg[52] := 'then '; msg[53] := 'until '; | |
33 | msg[54] := 'do '; msg[55] := 'to downto '; | |
34 | msg[56] := 'begin '; msg[57] := 'end '; | |
35 | msg[58] := 'factor '; | |
36 | k := 0; writeln; writeln(' key words'); | |
37 | while errs <> [] do | |
38 | begin while not (k in errs) do k := k+1; | |
39 | writeln(k,' ',msg[k]); errs := errs - [k] | |
40 | end | |
41 | end (*errormsg*) ; | |
42 | ||
43 | ||
44 | procedure error(n: integer); | |
45 | begin if errpos = 0 then write(' ****'); | |
46 | if cc > errpos then | |
47 | begin write(' ': cc-errpos, '^', n:2); | |
48 | errpos := cc+3; errs := errs + [n] | |
49 | end | |
50 | end (*error*) ; | |
51 | ||
52 | procedure fatal(n: integer); | |
53 | var msg: array [1..7] of alfa; | |
54 | begin writeln; errormsg; | |
55 | msg[ 1] := 'identifier'; msg[ 2] := 'procedures'; | |
56 | msg[ 3] := 'reals '; msg[ 4] := 'arrays '; | |
57 | msg[ 5] := 'levels '; msg[ 6] := 'code '; | |
58 | msg[ 7] := 'strings '; | |
59 | writeln(' compiler table for ', msg[n], ' is too small'); | |
60 | goto 99 (* terminate compilation*) | |
61 | end (*fatal*) ; | |
62 |