|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 52214 (0xcbf6)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
package body Scanner is
Beglin : Boolean := False;
I, Bracelevel : Integer;
function Get_Token return Token is
Toktype : Token;
Didadef, Indented_Code : Boolean;
Cclval : Integer;
Nmdefptr : Vstring;
Nmdef, Tmpbuf : Vstring;
procedure Action_Echo is
begin
Text_Io.Put (Temp_Action_File, Yytext (1 .. Yylength));
end Action_Echo;
procedure Mark_End_Of_Prolog is
begin
Text_Io.Put (Temp_Action_File, "%%%% end of prolog");
Text_Io.New_Line (Temp_Action_File);
end Mark_End_Of_Prolog;
procedure Put_Back_String (Str : Vstring; Start : Integer) is
begin
for I in reverse Start + 1 .. Tstring.Len (Str) loop
Unput (Char (Str, I));
end loop;
end Put_Back_String;
function Check_Yylex_Here return Boolean is
begin
return ((Yytext'Length >= 2) and then
((Yytext (1) = '#') and (Yytext (2) = '#')));
end Check_Yylex_Here;
function Yylex return Token is
subtype Short is Integer range -32768 .. 32767;
Yy_Act : Integer;
Yy_C : Short;
-- returned upon end-of-file
Yy_End_Tok : constant Integer := 0;
Yy_End_Of_Buffer : constant := 82;
subtype Yy_State_Type is Integer;
Yy_Current_State : Yy_State_Type;
Initial : constant := 0;
Sect2 : constant := 1;
Sect2prolog : constant := 2;
Sect3 : constant := 3;
Pickupdef : constant := 4;
Sc : constant := 5;
Caretisbol : constant := 6;
Num : constant := 7;
Quote : constant := 8;
Firstccl : constant := 9;
Ccl : constant := 10;
Action : constant := 11;
Recover : constant := 12;
Braceerror : constant := 13;
Action_String : constant := 14;
Yy_Accept : constant array (0 .. 206) of Short :=
(0, 0, 0, 0, 0, 0, 0, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 13, 6, 12, 10, 1, 11, 13,
13, 13, 9, 39, 31, 32, 25, 39, 38, 23, 39, 39, 39, 31, 21, 39,
39, 24, 81, 19, 80, 80, 15, 14, 16, 45, 81, 41, 42, 44, 46, 60,
61, 58, 57, 59, 47, 49, 48, 47, 53, 52, 53, 53, 55, 55, 55,
56, 66, 71, 70, 72, 66, 72, 67, 64, 65, 81, 17, 63, 62, 73,
75, 76, 77, 6, 12, 10, 1, 11, 0, 0, 2, 0, 7, 4, 5, 0, 9, 31,
32, 0, 28, 0, 0, 0, 78, 78, 27, 26, 27, 0, 31, 21, 0, 0,
35, 0, 0, 19, 18, 80, 80, 15, 14, 43, 44, 57, 79, 79, 50,
51, 54, 66, 0, 69, 0, 66, 67, 0, 17, 73, 74, 0, 7, 0, 0, 3,
0, 29, 0, 36, 0, 78, 27, 27, 37, 0, 0, 0, 35, 0, 30, 79,
66, 68, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 22,
0, 22, 4, 0, 34, 0);
Yy_Ec : constant array (Character'First .. Character'Last) of
Short :=
(0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 4, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 6, 7, 8, 9, 1, 10,
11, 11, 11, 11, 12, 13, 11, 14, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 1, 1, 16, 1, 17, 11, 1, 23, 22, 22, 22, 24, 25,
22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22, 27, 28, 29, 22,
22, 22, 30, 22, 22, 18, 19, 20, 21, 22, 1, 23, 22, 22, 22,
24, 25, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 22,
27, 28, 29, 22, 22, 22, 30, 22, 22, 31, 32, 33, 1, 1);
Yy_Meta : constant array (0 .. 33) of Short :=
(0, 1, 2, 3, 2, 2, 4, 1, 1, 1, 5, 1, 1, 6, 5, 7, 1, 1, 1,
8, 9, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 5, 11, 12);
Yy_Base : constant array (0 .. 254) of Short :=
(0, 0, 29, 58, 89, 503, 499, 498, 305, 4, 8, 119, 147, 286,
285, 32, 34, 65, 67, 93, 96, 110, 113, 177, 0, 302, 301,
12, 15, 82, 121, 303, 880, 76, 880, 0, 37, 880, 299, 11,
288, 0, 880, 11, 880, 880, 14, 880, 284, 280, 283, 196, 225,
880, 288, 283, 880, 292, 0, 291, 880, 0, 133, 880, 880,
880, 880, 272, 0, 880, 880, 880, 880, 277, 880, 880, 880,
880, 276, 880, 880, 274, 275, 880, 0, 272, 880, 0, 880,
880, 109, 273, 880, 0, 880, 880, 282, 880, 880, 880, 0,
880, 880, 0, 149, 880, 0, 152, 880, 271, 280, 880, 272, 0,
247, 880, 263, 0, 72, 880, 262, 880, 240, 63, 119, 880,
248, 0, 880, 245, 249, 277, 880, 248, 153, 0, 256, 253, 0,
880, 252, 880, 0, 156, 880, 0, 239, 880, 238, 880, 880,
880, 0, 221, 880, 0, 309, 0, 249, 880, 0, 880, 248, 0, 227,
246, 880, 245, 880, 221, 880, 148, 231, 0, 0, 880, 232,
229, 230, 0, 241, 880, 226, 0, 880, 236, 234, 880, 209,
210, 197, 231, 212, 159, 128, 108, 194, 115, 880, 108, 880,
84, 880, 880, 4, 880, 880, 342, 354, 366, 378, 390,
402, 414, 426, 438, 450, 462, 474, 486, 493, 502, 508,
520, 527, 536, 547, 559, 571, 583, 595, 607, 619, 631,
638, 648, 660, 672, 684, 695, 702, 712, 724, 736, 748,
760, 772, 784, 795, 807, 819, 831, 843, 855, 867);
Yy_Def : constant array (0 .. 254) of Short :=
(0, 207, 207, 208, 208, 209, 209, 210, 210, 211, 211, 212, 212,
213, 213, 214, 214, 215, 215, 216, 216, 217, 217, 206, 23, 218,
218, 213, 213, 219, 219, 206, 206, 206, 206, 220, 221, 206, 222,
223, 206, 224, 206, 225, 206, 206, 206, 206, 206, 226, 227, 228,
229, 206, 206, 206, 206, 230, 231, 232, 206, 233, 206, 206, 206,
206, 206, 206, 234, 206, 206, 206, 206, 206, 206, 206, 206,
206, 227, 206, 206, 235, 236, 206, 237, 227, 206, 238, 206,
206, 239, 238, 206, 240, 206, 206, 241, 206, 206, 206, 242,
206, 206, 243, 206, 206, 220, 221, 206, 206, 222, 206, 206, 244,
206, 206, 245, 224, 225, 206, 246, 206, 206, 226, 226, 206, 206,
247, 206, 247, 206, 229, 206, 206, 246, 248, 249, 230, 231, 206,
232, 206, 233, 206, 206, 234, 206, 206, 206, 206, 206, 206, 238,
239, 206, 239, 206, 240, 241, 206, 242, 206, 250, 244, 206,
245, 206, 246, 206, 206, 206, 226, 206, 247, 129, 206, 206,
249, 246, 248, 249, 206, 206, 156, 206, 251, 250, 206, 206,
206, 226, 252, 253, 254, 206, 206, 226, 252, 206, 253, 206,
254, 206, 206, 206, 206, 0, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206);
Yy_Nxt : constant array (0 .. 913) of Short :=
(0, 206, 33, 34, 33, 33, 62, 63, 62, 62, 62, 63, 62, 62, 119,
98, 121, 121, 98, 121, 113, 205, 35, 35, 35, 35, 35, 35, 35,
35, 35, 36, 37, 36, 36, 71, 38, 71, 39, 114, 108, 115, 40,
120, 72, 99, 72, 73, 99, 73, 109, 41, 41, 41, 41, 41, 41, 41,
41, 41, 43, 44, 43, 43, 45, 74, 46, 74, 76, 47, 76, 77, 47,
77, 48, 119, 49, 50, 104, 105, 104, 104, 124, 170, 78, 101,
78, 202, 102, 51, 47, 52, 53, 52, 52, 45, 65, 46, 54, 65, 47,
103, 55, 47, 120, 48, 80, 49, 50, 80, 56, 200, 81, 65, 82, 81,
65, 82, 198, 154, 51, 47, 65, 84, 101, 204, 84, 102, 155, 85,
86, 66, 85, 86, 171, 143, 67, 143, 143, 123, 103, 68, 68, 68,
68, 68, 68, 68, 68, 68, 65, 104, 105, 104, 104, 108, 168, 203,
143, 66, 143, 143, 202, 190, 67, 109, 178, 124, 170, 68, 68,
68, 68, 68, 68, 68, 68, 68, 87, 87, 88, 87, 87, 89, 87, 87,
87, 90, 87, 87, 91, 92, 87, 87, 87, 87, 87, 87, 87, 93, 93,
93, 93, 93, 93, 93, 93, 93, 94, 87, 95, 128, 196, 124, 170, 200,
124, 170, 129, 129, 129, 129, 129, 129, 129, 129, 129, 131, 132,
131, 131, 154, 181, 168, 198, 195, 194, 187, 133, 184, 155,
147, 192, 193, 181, 191, 125, 189, 168, 166, 188, 187, 159,
182, 146, 141, 138, 134, 174, 181, 174, 177, 176, 172, 169,
168, 166, 174, 174, 174, 174, 174, 174, 174, 174, 174, 164,
162, 175, 131, 132, 131, 131, 111, 116, 159, 156, 126, 150,
148, 133, 126, 146, 144, 141, 138, 136, 135, 126, 124, 122,
116, 111, 206, 97, 97, 69, 69, 60, 134, 183, 183, 184, 183, 183,
185, 183, 183, 183, 185, 183, 183, 183, 185, 183, 183, 183, 183,
183, 183, 183, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
183, 185, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42,
42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 57, 57, 57, 57,
57, 57, 57, 57, 57, 57, 57, 57, 59, 59, 59, 59, 59, 59, 59,
59, 59, 59, 59, 59, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70, 75, 75, 75, 75, 75, 75, 75,
75, 75, 75, 75, 75, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
79, 79, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 106, 106,
60, 58, 106, 107, 107, 58, 206, 107, 110, 110, 110, 110, 110,
110, 110, 110, 110, 110, 110, 110, 112, 112, 112, 112, 112, 112,
112, 112, 112, 112, 112, 112, 117, 117, 206, 206, 117, 118, 118,
206, 206, 206, 206, 206, 206, 206, 118, 123, 123, 206, 123, 123,
123, 123, 123, 206, 123, 123, 123, 125, 125, 206, 125, 125,
125, 125, 125, 125, 125, 125, 125, 127, 127, 206, 127, 127,
127, 127, 127, 127, 127, 127, 127, 130, 130, 130, 130, 130,
130, 130, 130, 130, 130, 130, 130, 137, 137, 137, 137, 137,
137, 137, 137, 137, 137, 137, 137, 139, 206, 206, 139, 139, 139,
139, 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 142, 142, 206, 142, 142, 142, 142, 142,
142, 142, 142, 142, 145, 145, 206, 206, 145, 147, 147, 206, 147,
147, 147, 147, 147, 147, 147, 147, 147, 149, 149, 206, 149,
149, 149, 149, 149, 149, 149, 149, 149, 151, 151, 206, 151,
151, 151, 151, 151, 206, 151, 151, 151, 152, 152, 206, 206,
206, 152, 152, 152, 152, 206, 152, 153, 153, 206, 153, 153,
153, 153, 153, 153, 153, 153, 153, 157, 157, 206, 206, 157, 158,
158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 160, 160,
206, 206, 160, 160, 160, 206, 160, 160, 160, 160, 161, 161, 206,
161, 161, 161, 161, 161, 161, 161, 161, 161, 163, 163, 206, 163,
163, 163, 163, 163, 163, 163, 163, 163, 165, 165, 165, 165,
165, 165, 165, 165, 165, 165, 165, 165, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167, 173, 173, 206, 173,
173, 173, 173, 173, 173, 173, 173, 179, 179, 206, 179, 179,
179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 180, 180,
180, 180, 180, 180, 180, 180, 186, 186, 186, 186, 186, 186, 186,
186, 186, 186, 186, 186, 185, 185, 185, 185, 185, 185, 185, 185,
185, 185, 185, 185, 197, 197, 197, 197, 197, 197, 197, 197,
197, 197, 197, 197, 199, 199, 199, 199, 199, 199, 199, 199,
199, 199, 199, 199, 201, 201, 201, 201, 201, 201, 201, 201,
201, 201, 201, 201, 31, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206);
Yy_Chk : constant array (0 .. 913) of Short :=
(0, 0, 1, 1, 1, 1, 9, 9, 9, 9, 10, 10, 10, 10, 43, 27, 46,
46, 28, 46, 39, 204, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
15, 2, 16, 2, 39, 36, 39, 2, 43, 15, 27, 16, 15, 28, 16, 36,
2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 15, 3, 16, 17,
3, 18, 17, 3, 18, 3, 118, 3, 3, 33, 33, 33, 33, 123, 123,
17, 29, 18, 201, 29, 3, 3, 4, 4, 4, 4, 4, 19, 4, 4, 20, 4,
29, 4, 4, 118, 4, 19, 4, 4, 20, 4, 199, 19, 21, 19, 20, 22,
20, 197, 90, 4, 4, 11, 21, 30, 195, 22, 30, 90, 21, 21, 11,
22, 22, 124, 62, 11, 62, 62, 124, 30, 11, 11, 11, 11, 11,
11, 11, 11, 11, 12, 104, 104, 104, 104, 107, 134, 194, 143,
12, 143, 143, 193, 171, 12, 107, 134, 171, 171, 12, 12, 12,
12, 12, 12, 12, 12, 12, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 51, 190, 196, 196,
192, 190, 190, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52,
52, 52, 153, 177, 178, 191, 189, 188, 186, 52, 185, 153,
182, 177, 178, 180, 176, 172, 169, 167, 165, 164, 162,
158, 148, 146, 140, 137, 52, 129, 136, 129, 133, 130, 126,
122, 120, 116, 129, 129, 129, 129, 129, 129, 129, 129,
129, 114, 112, 129, 131, 131, 131, 131, 110, 109, 96, 91,
85, 82, 81, 131, 78, 73, 67, 59, 57, 55, 54, 50, 49, 48,
40, 38, 31, 26, 25, 14, 13, 8, 131, 156, 156, 156, 156, 156,
156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
156, 156, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
207, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
208, 208, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210,
210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
211, 211, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
212, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 215,
215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 216,
216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 217,
217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, 218,
218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 219, 219,
219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 220, 220,
7, 6, 220, 221, 221, 5, 0, 221, 222, 222, 222, 222, 222,
222, 222, 222, 222, 222, 222, 222, 223, 223, 223, 223, 223,
223, 223, 223, 223, 223, 223, 223, 224, 224, 0, 0, 224,
225, 225, 0, 0, 0, 0, 0, 0, 0, 225, 226, 226, 0, 226, 226,
226, 226, 226, 0, 226, 226, 226, 227, 227, 0, 227, 227,
227, 227, 227, 227, 227, 227, 227, 228, 228, 0, 228, 228,
228, 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229,
229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230,
230, 230, 230, 230, 230, 230, 230, 231, 0, 0, 231, 231, 231,
231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232,
232, 232, 232, 232, 232, 232, 233, 233, 0, 233, 233, 233,
233, 233, 233, 233, 233, 233, 234, 234, 0, 0, 234, 235, 235,
0, 235, 235, 235, 235, 235, 235, 235, 235, 235, 236, 236,
0, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237,
0, 237, 237, 237, 237, 237, 0, 237, 237, 237, 238, 238, 0,
0, 0, 238, 238, 238, 238, 0, 238, 239, 239, 0, 239, 239,
239, 239, 239, 239, 239, 239, 239, 240, 240, 0, 0, 240, 241,
241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 242,
242, 0, 0, 242, 242, 242, 0, 242, 242, 242, 242, 243, 243,
0, 243, 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 0,
244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246,
246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247, 0, 247,
247, 247, 247, 247, 247, 247, 247, 248, 248, 0, 248, 248,
248, 248, 248, 248, 248, 248, 248, 249, 249, 249, 249, 249, 249,
249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 250,
250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251,
251, 251, 251, 251, 252, 252, 252, 252, 252, 252, 252, 252, 252,
252, 252, 252, 253, 253, 253, 253, 253, 253, 253, 253, 253,
253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254,
254, 254, 254, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206, 206,
206, 206, 206, 206, 206, 206);
-- copy whatever the last rule matched to the standard output
procedure Echo is
begin
Text_Io.Put (Yytext);
end Echo;
-- enter a start condition.
-- Using procedure requires a () after the ENTER, but makes everything
-- much neater.
procedure Enter (State : Integer) is
begin
Yy_Start := 1 + 2 * State;
end Enter;
-- action number for EOF rule of a given start state
function Yy_State_Eof (State : Integer) return Integer is
begin
return Yy_End_Of_Buffer + State + 1;
end Yy_State_Eof;
-- return all but the first 'n' matched characters back to the input stream
procedure Yyless (N : Integer) is
begin
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + N;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
end Yyless;
-- redefine this if you have something you want each time.
procedure Yy_User_Action is
begin
null;
end Yy_User_Action;
-- yy_get_previous_state - get the state just before the EOB char was reached
function Yy_Get_Previous_State return Yy_State_Type is
Yy_Current_State : Yy_State_Type;
Yy_C : Short;
Yy_Bp : Integer := Yytext_Ptr;
begin
Yy_Current_State := Yy_Start;
if (Yy_Ch_Buf (Yy_Bp - 1) = Ascii.Lf) then
Yy_Current_State := Yy_Current_State + 1;
end if;
for Yy_Cp in Yytext_Ptr .. Yy_C_Buf_P - 1 loop
Yy_C := Yy_Ec (Yy_Ch_Buf (Yy_Cp));
if (Yy_Accept (Yy_Current_State) /= 0) then
Yy_Last_Accepting_State := Yy_Current_State;
Yy_Last_Accepting_Cpos := Yy_Cp;
end if;
while (Yy_Chk (Yy_Base (Yy_Current_State) + Yy_C) /=
Yy_Current_State) loop
Yy_Current_State := Yy_Def (Yy_Current_State);
if (Yy_Current_State >= 207) then
Yy_C := Yy_Meta (Yy_C);
end if;
end loop;
Yy_Current_State := Yy_Nxt
(Yy_Base (Yy_Current_State) + Yy_C);
end loop;
return Yy_Current_State;
end Yy_Get_Previous_State;
procedure Yyrestart (Input_File : File_Type) is
begin
Set_Input (Input_File);
Yy_Init := True;
end Yyrestart;
begin -- of YYLex
<<New_File>>
-- this is where we enter upon encountering an end-of-file and
-- yywrap() indicating that we should continue processing
if (Yy_Init) then
if (Yy_Start = 0) then
Yy_Start := 1; -- first start state
end if;
-- we put in the '\n' and start reading from [1] so that an
-- initial match-at-newline will be true.
Yy_Ch_Buf (0) := Ascii.Lf;
Yy_N_Chars := 1;
-- we always need two end-of-buffer characters. The first causes
-- a transition to the end-of-buffer state. The second causes
-- a jam in that state.
Yy_Ch_Buf (Yy_N_Chars) := Yy_End_Of_Buffer_Char;
Yy_Ch_Buf (Yy_N_Chars + 1) := Yy_End_Of_Buffer_Char;
Yy_Eof_Has_Been_Seen := False;
Yytext_Ptr := 1;
Yy_C_Buf_P := Yytext_Ptr;
Yy_Hold_Char := Yy_Ch_Buf (Yy_C_Buf_P);
Yy_Init := False;
end if; -- yy_init
loop -- loops until end-of-file is reached
Yy_Cp := Yy_C_Buf_P;
-- support of yytext
Yy_Ch_Buf (Yy_Cp) := Yy_Hold_Char;
-- yy_bp points to the position in yy_ch_buf of the start of the
-- current run.
Yy_Bp := Yy_Cp;
Yy_Current_State := Yy_Start;
if (Yy_Ch_Buf (Yy_Bp - 1) = Ascii.Lf) then
Yy_Current_State := Yy_Current_State + 1;
end if;
loop
Yy_C := Yy_Ec (Yy_Ch_Buf (Yy_Cp));
if (Yy_Accept (Yy_Current_State) /= 0) then
Yy_Last_Accepting_State := Yy_Current_State;
Yy_Last_Accepting_Cpos := Yy_Cp;
end if;
while (Yy_Chk (Yy_Base (Yy_Current_State) + Yy_C) /=
Yy_Current_State) loop
Yy_Current_State := Yy_Def (Yy_Current_State);
if (Yy_Current_State >= 207) then
Yy_C := Yy_Meta (Yy_C);
end if;
end loop;
Yy_Current_State := Yy_Nxt
(Yy_Base (Yy_Current_State) + Yy_C);
Yy_Cp := Yy_Cp + 1;
if (Yy_Current_State = 206) then
exit;
end if;
end loop;
Yy_Cp := Yy_Last_Accepting_Cpos;
Yy_Current_State := Yy_Last_Accepting_State;
<<Next_Action>> Yy_Act := Yy_Accept (Yy_Current_State);
Yy_Do_Before_Action;
Yy_User_Action;
if Aflex_Debug then -- output acceptance info. for (-d) debug mode
Text_Io.Put (Standard_Error, "--accepting rule #");
Text_Io.Put (Standard_Error, Integer'Image (Yy_Act));
Text_Io.Put_Line (Standard_Error, "(""" & Yytext & """)");
end if;
<<Do_Action>> -- this label is used only to access EOF actions
case Yy_Act is
when 0 => -- must backtrack
-- undo the effects of YY_DO_BEFORE_ACTION
Yy_Ch_Buf (Yy_Cp) := Yy_Hold_Char;
Yy_Cp := Yy_Last_Accepting_Cpos;
Yy_Current_State := Yy_Last_Accepting_State;
goto Next_Action;
when 1 =>
--# line 46 "ascan.l"
Indented_Code := True;
when 2 =>
--# line 47 "ascan.l"
Linenum := Linenum + 1;
Echo;
-- treat as a comment;
when 3 =>
--# line 50 "ascan.l"
Linenum := Linenum + 1;
Echo;
when 4 =>
--# line 51 "ascan.l"
return (Scdecl);
when 5 =>
--# line 52 "ascan.l"
return (Xscdecl);
when 6 =>
--# line 54 "ascan.l"
return (Whitespace);
when 7 =>
--# line 56 "ascan.l"
Sectnum := 2;
Misc.Line_Directive_Out;
Enter (Sect2prolog);
return (Sectend);
when 8 =>
--# line 63 "ascan.l"
Text_Io.Put (Standard_Error,
"old-style lex command at line ");
Int_Io.Put (Standard_Error, Linenum);
Text_Io.Put (Standard_Error, "ignored:");
Text_Io.New_Line (Standard_Error);
Text_Io.Put (Standard_Error, Ascii.Ht);
Text_Io.Put (Standard_Error,
Yytext (1 .. Yylength));
Linenum := Linenum + 1;
when 9 =>
--# line 73 "ascan.l"
Nmstr := Vstr (Yytext (1 .. Yylength));
Didadef := False;
Enter (Pickupdef);
when 10 =>
--# line 79 "ascan.l"
Nmstr := Vstr (Yytext (1 .. Yylength));
return Name;
when 11 =>
--# line 82 "ascan.l"
Linenum := Linenum + 1;
-- allows blank lines in section 1;
when 12 =>
--# line 85 "ascan.l"
Linenum := Linenum + 1;
return Newline;
when 13 =>
--# line 86 "ascan.l"
Misc.Synerr ("illegal character");
Enter (Recover);
when 14 =>
--# line 88 "ascan.l"
null;
-- separates name and definition;
when 15 =>
--# line 92 "ascan.l"
Nmdef := Vstr (Yytext (1 .. Yylength));
I := Tstring.Len (Nmdef);
while (I >= Tstring.First) loop
if ((Char (Nmdef, I) /= ' ') and
(Char (Nmdef, I) /= Ascii.Ht)) then
exit;
end if;
I := I - 1;
end loop;
Sym.Ndinstal (Nmstr, Tstring.Slice
(Nmdef, Tstring.First, I));
Didadef := True;
when 16 =>
--# line 109 "ascan.l"
if (not Didadef) then
Misc.Synerr ("incomplete name definition");
end if;
Enter (0);
Linenum := Linenum + 1;
when 17 =>
--# line 117 "ascan.l"
Linenum := Linenum + 1;
Enter (0);
Nmstr := Vstr (Yytext (1 .. Yylength));
return Name;
when 18 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Cp - 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 123 "ascan.l"
Linenum := Linenum + 1;
Action_Echo;
Mark_End_Of_Prolog;
Enter (Sect2);
when 19 =>
--# line 130 "ascan.l"
Linenum := Linenum + 1;
Action_Echo;
when Yy_End_Of_Buffer + Sect2prolog + 1 =>
--# line 132 "ascan.l"
Mark_End_Of_Prolog;
return End_Of_Input;
when 21 =>
--# line 136 "ascan.l"
Linenum := Linenum + 1;
-- allow blank lines in sect2;
-- this rule matches indented lines which
-- are not comments.
when 22 =>
--# line 141 "ascan.l"
Misc.Synerr
("indented code found outside of action");
Linenum := Linenum + 1;
when 23 =>
--# line 146 "ascan.l"
Enter (Sc);
return ('<');
when 24 =>
--# line 147 "ascan.l"
return ('^');
when 25 =>
--# line 148 "ascan.l"
Enter (Quote);
return ('"');
when 26 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 149 "ascan.l"
Enter (Num);
return ('{');
when 27 =>
--# line 150 "ascan.l"
Enter (Braceerror);
when 28 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 151 "ascan.l"
return ('$');
when 29 =>
--# line 153 "ascan.l"
Continued_Action := True;
Linenum := Linenum + 1;
return Newline;
when 30 =>
--# line 158 "ascan.l"
Linenum := Linenum + 1;
Action_Echo;
when 31 =>
--# line 160 "ascan.l"
-- this rule is separate from the one below because
-- otherwise we get variable trailing context, so
-- we can't build the scanner using -f,F
Bracelevel := 0;
Continued_Action := False;
Enter (Action);
return Newline;
when 32 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Cp - 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 171 "ascan.l"
Bracelevel := 0;
Continued_Action := False;
Enter (Action);
return Newline;
when 33 =>
--# line 178 "ascan.l"
Linenum := Linenum + 1;
return Newline;
when 34 =>
--# line 180 "ascan.l"
return (Eof_Op);
when 35 =>
--# line 182 "ascan.l"
Sectnum := 3;
Enter (Sect3);
return (End_Of_Input);
-- to stop the parser
when 36 =>
--# line 189 "ascan.l"
Nmstr := Vstr (Yytext (1 .. Yylength));
-- check to see if we've already encountered this ccl
Cclval := Sym.Ccllookup (Nmstr);
if (Cclval /= 0) then
Yylval := Cclval;
Cclreuse := Cclreuse + 1;
return (Prevccl);
else
-- we fudge a bit. We know that this ccl will
-- soon be numbered as lastccl + 1 by cclinit
Sym.Cclinstal (Nmstr, Lastccl + 1);
-- push back everything but the leading bracket
-- so the ccl can be rescanned
Put_Back_String (Nmstr, 1);
Enter (Firstccl);
return ('[');
end if;
when 37 =>
--# line 214 "ascan.l"
Nmstr := Vstr (Yytext (1 .. Yylength));
-- chop leading and trailing brace
Tmpbuf := Slice (Vstr (Yytext (1 .. Yylength)),
2, Yylength - 1);
Nmdefptr := Sym.Ndlookup (Tmpbuf);
if (Nmdefptr = Nul) then
Misc.Synerr ("undefined {name}");
else
-- push back name surrounded by ()'s
Unput (')');
Put_Back_String (Nmdefptr, 0);
Unput ('(');
end if;
when 38 =>
--# line 231 "ascan.l"
Tmpbuf := Vstr (Yytext (1 .. Yylength));
case Tstring.Char (Tmpbuf, 1) is
when '/' =>
return '/';
when '|' =>
return '|';
when '*' =>
return '*';
when '+' =>
return '+';
when '?' =>
return '?';
when '.' =>
return '.';
when '(' =>
return '(';
when ')' =>
return ')';
when others =>
Misc.Aflexerror ("error in aflex case");
end case;
when 39 =>
--# line 245 "ascan.l"
Tmpbuf := Vstr (Yytext (1 .. Yylength));
Yylval := Character'Pos (Char (Tmpbuf, 1));
return Char;
when 40 =>
--# line 249 "ascan.l"
Linenum := Linenum + 1;
return Newline;
when 41 =>
--# line 252 "ascan.l"
return (',');
when 42 =>
--# line 253 "ascan.l"
Enter (Sect2);
return ('>');
when 43 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 254 "ascan.l"
Enter (Caretisbol);
return ('>');
when 44 =>
--# line 255 "ascan.l"
Nmstr := Vstr (Yytext (1 .. Yylength));
return Name;
when 45 =>
--# line 258 "ascan.l"
Misc.Synerr ("bad start condition name");
when 46 =>
--# line 260 "ascan.l"
Enter (Sect2);
return ('^');
when 47 =>
--# line 263 "ascan.l"
Tmpbuf := Vstr (Yytext (1 .. Yylength));
Yylval := Character'Pos (Char (Tmpbuf, 1));
return Char;
when 48 =>
--# line 267 "ascan.l"
Enter (Sect2);
return ('"');
when 49 =>
--# line 269 "ascan.l"
Misc.Synerr ("missing quote");
Enter (Sect2);
Linenum := Linenum + 1;
return ('"');
when 50 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 277 "ascan.l"
Enter (Ccl);
return ('^');
when 51 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 278 "ascan.l"
return ('^');
when 52 =>
--# line 279 "ascan.l"
Enter (Ccl);
Yylval := Character'Pos ('-');
return (Char);
when 53 =>
--# line 280 "ascan.l"
Enter (Ccl);
Tmpbuf := Vstr (Yytext (1 .. Yylength));
Yylval := Character'Pos (Char (Tmpbuf, 1));
return Char;
when 54 =>
Yy_Ch_Buf (Yy_Cp) :=
Yy_Hold_Char; -- undo effects of setting up yytext
Yy_Cp := Yy_Bp + 1;
Yy_C_Buf_P := Yy_Cp;
Yy_Do_Before_Action; -- set up yytext again
--# line 286 "ascan.l"
return ('-');
when 55 =>
--# line 287 "ascan.l"
Tmpbuf := Vstr (Yytext (1 .. Yylength));
Yylval := Character'Pos (Char (Tmpbuf, 1));
return Char;
when 56 =>
--# line 291 "ascan.l"
Enter (Sect2);
return (']');
when 57 =>
--# line 294 "ascan.l"
Yylval := Misc.Myctoi (Vstr
(Yytext (1 .. Yylength)));
return (Number);
when 58 =>
--# line 299 "ascan.l"
return (',');
when 59 =>
--# line 300 "ascan.l"
Enter (Sect2);
return ('}');
when 60 =>
--# line 302 "ascan.l"
Misc.Synerr ("bad character inside {}'s");
Enter (Sect2);
return ('}');
when 61 =>
--# line 308 "ascan.l"
Misc.Synerr ("missing }");
Enter (Sect2);
Linenum := Linenum + 1;
return ('}');
when 62 =>
--# line 316 "ascan.l"
Misc.Synerr ("bad name in {}'s");
Enter (Sect2);
when 63 =>
--# line 317 "ascan.l"
Misc.Synerr ("missing }");
Linenum := Linenum + 1;
Enter (Sect2);
when 64 =>
--# line 322 "ascan.l"
Bracelevel := Bracelevel + 1;
when 65 =>
--# line 323 "ascan.l"
Bracelevel := Bracelevel - 1;
when 66 =>
--# line 324 "ascan.l"
Action_Echo;
when 67 =>
--# line 325 "ascan.l"
Action_Echo;
when 68 =>
--# line 326 "ascan.l"
Linenum := Linenum + 1;
Action_Echo;
when 69 =>
--# line 327 "ascan.l"
Action_Echo;
-- character constant;
when 70 =>
--# line 331 "ascan.l"
Action_Echo;
Enter (Action_String);
when 71 =>
--# line 333 "ascan.l"
Linenum := Linenum + 1;
Action_Echo;
if (Bracelevel = 0) then
Text_Io.New_Line (Temp_Action_File);
Enter (Sect2);
end if;
when 72 =>
--# line 341 "ascan.l"
Action_Echo;
when 73 =>
--# line 343 "ascan.l"
Action_Echo;
when 74 =>
--# line 344 "ascan.l"
Action_Echo;
when 75 =>
--# line 345 "ascan.l"
Linenum := Linenum + 1;
Action_Echo;
when 76 =>
--# line 346 "ascan.l"
Action_Echo;
Enter (Action);
when 77 =>
--# line 347 "ascan.l"
Action_Echo;
when 78 =>
--# line 350 "ascan.l"
Yylval := Character'Pos
(Misc.Myesc
(Vstr (Yytext (1 .. Yylength))));
return (Char);
when 79 =>
--# line 355 "ascan.l"
Yylval := Character'Pos
(Misc.Myesc
(Vstr (Yytext (1 .. Yylength))));
Enter (Ccl);
return (Char);
when 80 =>
--# line 362 "ascan.l"
if (Check_Yylex_Here) then
return End_Of_Input;
else
Echo;
end if;
when 81 =>
--# line 368 "ascan.l"
raise Aflex_Scanner_Jammed;
when Yy_End_Of_Buffer + Initial + 1 |
Yy_End_Of_Buffer + Sect2 + 1 |
Yy_End_Of_Buffer + Sect3 + 1 |
Yy_End_Of_Buffer + Pickupdef + 1 |
Yy_End_Of_Buffer + Sc + 1 |
Yy_End_Of_Buffer + Caretisbol + 1 |
Yy_End_Of_Buffer + Num + 1 |
Yy_End_Of_Buffer + Quote + 1 |
Yy_End_Of_Buffer + Firstccl + 1 |
Yy_End_Of_Buffer + Ccl + 1 |
Yy_End_Of_Buffer + Action + 1 |
Yy_End_Of_Buffer + Recover + 1 |
Yy_End_Of_Buffer + Braceerror + 1 |
Yy_End_Of_Buffer + Action_String + 1 =>
return End_Of_Input;
when Yy_End_Of_Buffer =>
-- undo the effects of YY_DO_BEFORE_ACTION
Yy_Ch_Buf (Yy_Cp) := Yy_Hold_Char;
Yytext_Ptr := Yy_Bp;
case Yy_Get_Next_Buffer is
when Eob_Act_End_Of_File =>
begin
if (Yywrap) then
-- note: because we've taken care in
-- yy_get_next_buffer() to have set up yytext,
-- we can now set up yy_c_buf_p so that if some
-- total hoser (like aflex itself) wants
-- to call the scanner after we return the
-- End_Of_Input, it'll still work - another
-- End_Of_Input will get returned.
Yy_C_Buf_P := Yytext_Ptr;
Yy_Act := Yy_State_Eof
((Yy_Start - 1) / 2);
goto Do_Action;
else
-- start processing a new file
Yy_Init := True;
goto New_File;
end if;
end;
when Eob_Act_Restart_Scan =>
Yy_C_Buf_P := Yytext_Ptr;
Yy_Hold_Char := Yy_Ch_Buf (Yy_C_Buf_P);
when Eob_Act_Last_Match =>
Yy_C_Buf_P := Yy_N_Chars;
Yy_Current_State := Yy_Get_Previous_State;
Yy_Cp := Yy_C_Buf_P;
Yy_Bp := Yytext_Ptr;
goto Next_Action;
when others =>
null;
end case; -- case yy_get_next_buffer()
when others =>
Text_Io.Put ("action # ");
Text_Io.Put (Integer'Image (Yy_Act));
Text_Io.New_Line;
raise Aflex_Internal_Error;
end case; -- case (yy_act)
end loop; -- end of loop waiting for end of file
end Yylex;
--# line 368 "ascan.l"
begin
if (Call_Yylex) then
Toktype := Yylex;
Call_Yylex := False;
return Toktype;
end if;
if (Eofseen) then
Toktype := End_Of_Input;
else
Toktype := Yylex;
end if;
-- this tracing code allows easy tracing of aflex runs
if (Trace) then
Text_Io.New_Line (Standard_Error);
Text_Io.Put (Standard_Error, "toktype = :");
Text_Io.Put (Standard_Error, Token'Image (Toktype));
Text_Io.Put_Line (Standard_Error, ":");
end if;
if (Toktype = End_Of_Input) then
Eofseen := True;
if (Sectnum = 1) then
Misc.Synerr ("unexpected EOF");
Sectnum := 2;
Toktype := Sectend;
else
if (Sectnum = 2) then
Sectnum := 3;
Toktype := Sectend;
end if;
end if;
end if;
if (Trace) then
if (Beglin) then
Int_Io.Put (Standard_Error, Num_Rules + 1);
Text_Io.Put (Standard_Error, Ascii.Ht);
Beglin := False;
end if;
case Toktype is
when '<' | '>' | '^' | '$' | '"' | '[' | ']' | '{' | '}' | '|' |
'(' | ')' | '-' | '/' | '?' | '.' | '*' | '+' | ',' =>
Text_Io.Put (Standard_Error, Token'Image (Toktype));
when Newline =>
Text_Io.New_Line (Standard_Error);
if (Sectnum = 2) then
Beglin := True;
end if;
when Scdecl =>
Text_Io.Put (Standard_Error, "%s");
when Xscdecl =>
Text_Io.Put (Standard_Error, "%x");
when Whitespace =>
Text_Io.Put (Standard_Error, " ");
when Sectend =>
Text_Io.Put_Line (Standard_Error, "%%");
-- we set beglin to be true so we'll start
-- writing out numbers as we echo rules. aflexscan() has
-- already assigned sectnum
if (Sectnum = 2) then
Beglin := True;
end if;
when Name =>
Text_Io.Put (Standard_Error, ''');
Text_Io.Put (Standard_Error, Yytext);
Text_Io.Put (Standard_Error, ''');
when Char =>
if ((Yylval < Character'Pos (' ')) or
(Yylval = Character'Pos (Ascii.Del))) then
Text_Io.Put (Standard_Error, '\');
Int_Io.Put (Standard_Error, Yylval);
Text_Io.Put (Standard_Error, '\');
else
Text_Io.Put (Standard_Error, Token'Image (Toktype));
end if;
when Number =>
Int_Io.Put (Standard_Error, Yylval);
when Prevccl =>
Text_Io.Put (Standard_Error, '[');
Int_Io.Put (Standard_Error, Yylval);
Text_Io.Put (Standard_Error, ']');
when End_Of_Input =>
Text_Io.Put (Standard_Error, "End Marker");
when others =>
Text_Io.Put (Standard_Error, "Something weird:");
Text_Io.Put_Line (Standard_Error, Token'Image (Toktype));
end case;
end if;
return Toktype;
end Get_Token;
end Scanner;