xref: /OpenGrok/opengrok-indexer/src/test/resources/analysis/eiffel/sample.e (revision 2d7e47c7588aedb2df0b0980945276fb07db4597)
1eeb7e5b3SAdam Hornáček-- All source code and binary programs included in Gobo Eiffel
2eeb7e5b3SAdam Hornáček-- are distributed under the terms and conditions of the MIT
3eeb7e5b3SAdam Hornáček-- License:
4eeb7e5b3SAdam Hornáček--
5eeb7e5b3SAdam Hornáček--     The MIT License
6eeb7e5b3SAdam Hornáček--
7eeb7e5b3SAdam Hornáček--     Copyright (c) <year> <copyright holders>
8eeb7e5b3SAdam Hornáček--
9eeb7e5b3SAdam Hornáček--     Permission is hereby granted, free of charge, to any person obtaining
10eeb7e5b3SAdam Hornáček--     a copy of this software and associated documentation files (the
11eeb7e5b3SAdam Hornáček--     "Software"), to deal in the Software without restriction, including
12eeb7e5b3SAdam Hornáček--     without limitation the rights to use, copy, modify, merge, publish,
13eeb7e5b3SAdam Hornáček--     distribute, sublicense, and/or sell copies of the Software, and to
14eeb7e5b3SAdam Hornáček--     permit persons to whom the Software is furnished to do so, subject to
15eeb7e5b3SAdam Hornáček--     the following conditions:
16eeb7e5b3SAdam Hornáček--
17eeb7e5b3SAdam Hornáček--     The above copyright notice and this permission notice shall be included
18eeb7e5b3SAdam Hornáček--     in all copies or substantial portions of the Software.
19eeb7e5b3SAdam Hornáček--
20eeb7e5b3SAdam Hornáček--     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21eeb7e5b3SAdam Hornáček--     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22eeb7e5b3SAdam Hornáček--     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23eeb7e5b3SAdam Hornáček--     IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24eeb7e5b3SAdam Hornáček--     CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25eeb7e5b3SAdam Hornáček--     TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26eeb7e5b3SAdam Hornáček--     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27eeb7e5b3SAdam Hornáček--
28eeb7e5b3SAdam Hornáček-- This license is an OSI Approved License:
29eeb7e5b3SAdam Hornáček--
30eeb7e5b3SAdam Hornáček--     http://opensource.org/licenses/mit-license.html
31eeb7e5b3SAdam Hornáček--
32eeb7e5b3SAdam Hornáček-- and a GPL-Compatible Free Software License:
33eeb7e5b3SAdam Hornáček--
34eeb7e5b3SAdam Hornáček--     http://www.gnu.org/licenses/license-list.html#X11License
35eeb7e5b3SAdam Hornáček--
36eeb7e5b3SAdam Hornáček-- --
37eeb7e5b3SAdam Hornáček-- Copyright (c) 1997-2007, Eric Bezault and others
38eeb7e5b3SAdam Hornáček
39eeb7e5b3SAdam Hornáčeknote
40eeb7e5b3SAdam Hornáček
41eeb7e5b3SAdam Hornáček	description:
42eeb7e5b3SAdam Hornáček
43eeb7e5b3SAdam Hornáček		"Scanners for config files made up of name/value pairs and preprocessor instructions"
44eeb7e5b3SAdam Hornáček
45eeb7e5b3SAdam Hornáček	copyright: "Copyright (c) 2007-2013, Eric Bezault and others"
46eeb7e5b3SAdam Hornáček	license: "MIT License"
47eeb7e5b3SAdam Hornáček	date: "$Date$"
48eeb7e5b3SAdam Hornáček	revision: "$Revision$"
49eeb7e5b3SAdam Hornáček	note0: "http://example.com"
50eeb7e5b3SAdam Hornáček	note1: "[http://example.com]"
51eeb7e5b3SAdam Hornáček	note2: "{http://example.com}"
52eeb7e5b3SAdam Hornáček	note3: "xx{http://example.com}xx"
53eeb7e5b3SAdam Hornáček	note4: "xx[http://example.com]xx"
54eeb7e5b3SAdam Hornáček
55eeb7e5b3SAdam Hornáčekdeferred class UT_CONFIG_SCANNER
56eeb7e5b3SAdam Hornáček
57eeb7e5b3SAdam Hornáčekinherit
58eeb7e5b3SAdam Hornáček
59eeb7e5b3SAdam Hornáček	YY_COMPRESSED_SCANNER_SKELETON
60eeb7e5b3SAdam Hornáček		rename
61eeb7e5b3SAdam Hornáček			make as make_compressed_scanner_skeleton,
62eeb7e5b3SAdam Hornáček			reset as reset_compressed_scanner_skeleton
63eeb7e5b3SAdam Hornáček		redefine
64eeb7e5b3SAdam Hornáček			wrap, output
65eeb7e5b3SAdam Hornáček		end
66eeb7e5b3SAdam Hornáček
67eeb7e5b3SAdam Hornáček	UT_CONFIG_TOKENS
68eeb7e5b3SAdam Hornáček		export {NONE} all end
69eeb7e5b3SAdam Hornáček
70eeb7e5b3SAdam Hornáček
71eeb7e5b3SAdam Hornáčekfeature -- Status report
72eeb7e5b3SAdam Hornáček
73eeb7e5b3SAdam Hornáček	valid_start_condition (sc: INTEGER): BOOLEAN
74eeb7e5b3SAdam Hornáček			-- Is `sc' a valid start condition?
75eeb7e5b3SAdam Hornáček		do
76eeb7e5b3SAdam Hornáček			Result := (INITIAL <= sc and sc <= S_EMPTY_LINE)
77eeb7e5b3SAdam Hornáček		end
78eeb7e5b3SAdam Hornáček
79eeb7e5b3SAdam Hornáčekfeature {NONE} -- Implementation
80eeb7e5b3SAdam Hornáček
81eeb7e5b3SAdam Hornáček	yy_build_tables
82eeb7e5b3SAdam Hornáček			-- Build scanner tables.
83eeb7e5b3SAdam Hornáček		do
84eeb7e5b3SAdam Hornáček			yy_nxt := yy_nxt_template
85eeb7e5b3SAdam Hornáček			yy_chk := yy_chk_template
86eeb7e5b3SAdam Hornáček			yy_base := yy_base_template
87eeb7e5b3SAdam Hornáček			yy_def := yy_def_template
88eeb7e5b3SAdam Hornáček			yy_ec := yy_ec_template
89eeb7e5b3SAdam Hornáček			yy_meta := yy_meta_template
90eeb7e5b3SAdam Hornáček			yy_accept := yy_accept_template
91eeb7e5b3SAdam Hornáček		end
92eeb7e5b3SAdam Hornáček
93eeb7e5b3SAdam Hornáček	yy_execute_action (yy_act: INTEGER)
94eeb7e5b3SAdam Hornáček			-- Execute semantic action.
95eeb7e5b3SAdam Hornáček		do
96eeb7e5b3SAdam Hornáček			inspect yy_act
97eeb7e5b3SAdam Hornáčekwhen 1, 2 then
98eeb7e5b3SAdam Hornáček--|#line 40 "ut_config_scanner.l"
99eeb7e5b3SAdam Hornáčekdebug ("GELEX")
100eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 40")
101eeb7e5b3SAdam Hornáčekend
102eeb7e5b3SAdam Hornáček
103eeb7e5b3SAdam Hornáček						-- Comment.
104eeb7e5b3SAdam Hornáček						set_start_condition (S_SKIP_EOL)
105eeb7e5b3SAdam Hornáček
106eeb7e5b3SAdam Hornáčekwhen 3 then
107eeb7e5b3SAdam Hornáček--|#line 45 "ut_config_scanner.l"
108eeb7e5b3SAdam Hornáčekdebug ("GELEX")
109eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 45")
110eeb7e5b3SAdam Hornáčekend
111eeb7e5b3SAdam Hornáček
112eeb7e5b3SAdam Hornáček						last_token := P_IFDEF
113eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
114eeb7e5b3SAdam Hornáček
115eeb7e5b3SAdam Hornáčekwhen 4 then
116eeb7e5b3SAdam Hornáček--|#line 49 "ut_config_scanner.l"
117eeb7e5b3SAdam Hornáčekdebug ("GELEX")
118eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 49")
119eeb7e5b3SAdam Hornáčekend
120eeb7e5b3SAdam Hornáček
121eeb7e5b3SAdam Hornáček						last_token := P_IFNDEF
122eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
123eeb7e5b3SAdam Hornáček
124eeb7e5b3SAdam Hornáčekwhen 5 then
125eeb7e5b3SAdam Hornáček--|#line 53 "ut_config_scanner.l"
126eeb7e5b3SAdam Hornáčekdebug ("GELEX")
127eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 53")
128eeb7e5b3SAdam Hornáčekend
129eeb7e5b3SAdam Hornáček
130eeb7e5b3SAdam Hornáček						last_token := P_ELSE
131eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
132eeb7e5b3SAdam Hornáček
133eeb7e5b3SAdam Hornáčekwhen 6 then
134eeb7e5b3SAdam Hornáček--|#line 57 "ut_config_scanner.l"
135eeb7e5b3SAdam Hornáčekdebug ("GELEX")
136eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 57")
137eeb7e5b3SAdam Hornáčekend
138eeb7e5b3SAdam Hornáček
139eeb7e5b3SAdam Hornáček						last_token := P_ENDIF
140eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
141eeb7e5b3SAdam Hornáček
142eeb7e5b3SAdam Hornáčekwhen 7 then
143eeb7e5b3SAdam Hornáček--|#line 61 "ut_config_scanner.l"
144eeb7e5b3SAdam Hornáčekdebug ("GELEX")
145eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 61")
146eeb7e5b3SAdam Hornáčekend
147eeb7e5b3SAdam Hornáček
148eeb7e5b3SAdam Hornáček						last_token := P_INCLUDE
149eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
150eeb7e5b3SAdam Hornáček
151eeb7e5b3SAdam Hornáčekwhen 8 then
152eeb7e5b3SAdam Hornáček--|#line 65 "ut_config_scanner.l"
153eeb7e5b3SAdam Hornáčekdebug ("GELEX")
154eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 65")
155eeb7e5b3SAdam Hornáčekend
156eeb7e5b3SAdam Hornáček
157eeb7e5b3SAdam Hornáček						last_token := P_DEFINE
158eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
159eeb7e5b3SAdam Hornáček
160eeb7e5b3SAdam Hornáčekwhen 9 then
161eeb7e5b3SAdam Hornáček--|#line 69 "ut_config_scanner.l"
162eeb7e5b3SAdam Hornáčekdebug ("GELEX")
163eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 69")
164eeb7e5b3SAdam Hornáčekend
165eeb7e5b3SAdam Hornáček
166eeb7e5b3SAdam Hornáček						last_token := P_UNDEF
167eeb7e5b3SAdam Hornáček						set_start_condition (S_PREPROC)
168eeb7e5b3SAdam Hornáček
169eeb7e5b3SAdam Hornáčekwhen 10 then
170eeb7e5b3SAdam Hornáček--|#line 73 "ut_config_scanner.l"
171eeb7e5b3SAdam Hornáčekdebug ("GELEX")
172eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 73")
173eeb7e5b3SAdam Hornáčekend
174eeb7e5b3SAdam Hornáček
175eeb7e5b3SAdam Hornáček						last_token := P_NAME
176eeb7e5b3SAdam Hornáček						last_string_value := text
177eeb7e5b3SAdam Hornáček						check attached last_string_value as l_last_string_value then
178eeb7e5b3SAdam Hornáček							STRING_.left_adjust (l_last_string_value)
179eeb7e5b3SAdam Hornáček						end
180eeb7e5b3SAdam Hornáček						set_start_condition (S_NAME)
181eeb7e5b3SAdam Hornáček
182eeb7e5b3SAdam Hornáčekwhen 11 then
183eeb7e5b3SAdam Hornáček--|#line 81 "ut_config_scanner.l"
184eeb7e5b3SAdam Hornáčekdebug ("GELEX")
185eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 81")
186eeb7e5b3SAdam Hornáčekend
187eeb7e5b3SAdam Hornáček
188eeb7e5b3SAdam Hornáček						last_token := P_EOL
189eeb7e5b3SAdam Hornáček						line_nb := line_nb + 1
190eeb7e5b3SAdam Hornáček
191eeb7e5b3SAdam Hornáčekwhen 12 then
192eeb7e5b3SAdam Hornáček--|#line 85 "ut_config_scanner.l"
193eeb7e5b3SAdam Hornáčekdebug ("GELEX")
194eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 85")
195eeb7e5b3SAdam Hornáčekend
196eeb7e5b3SAdam Hornáček
197eeb7e5b3SAdam Hornáček						set_start_condition (S_EMPTY_LINE)
198eeb7e5b3SAdam Hornáček
199eeb7e5b3SAdam Hornáčekwhen 13 then
200eeb7e5b3SAdam Hornáček--|#line 91 "ut_config_scanner.l"
201eeb7e5b3SAdam Hornáčekdebug ("GELEX")
202eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 91")
203eeb7e5b3SAdam Hornáčekend
204eeb7e5b3SAdam Hornáček
205eeb7e5b3SAdam Hornáček						line_nb := line_nb + 1
206eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
207eeb7e5b3SAdam Hornáček
208eeb7e5b3SAdam Hornáčekwhen 14 then
209eeb7e5b3SAdam Hornáček--|#line 95 "ut_config_scanner.l"
210eeb7e5b3SAdam Hornáčekdebug ("GELEX")
211eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 95")
212eeb7e5b3SAdam Hornáčekend
213eeb7e5b3SAdam Hornáček
214eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
215eeb7e5b3SAdam Hornáček
216eeb7e5b3SAdam Hornáčekwhen 15 then
217eeb7e5b3SAdam Hornáček--|#line 101 "ut_config_scanner.l"
218eeb7e5b3SAdam Hornáčekdebug ("GELEX")
219eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 101")
220eeb7e5b3SAdam Hornáčekend
221eeb7e5b3SAdam Hornáček-- Separator.
222eeb7e5b3SAdam Hornáčekwhen 16 then
223eeb7e5b3SAdam Hornáček--|#line 102 "ut_config_scanner.l"
224eeb7e5b3SAdam Hornáčekdebug ("GELEX")
225eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 102")
226eeb7e5b3SAdam Hornáčekend
227eeb7e5b3SAdam Hornáček
228eeb7e5b3SAdam Hornáček						last_token := P_STRING
229eeb7e5b3SAdam Hornáček						last_string_value := text_substring (2, text_count - 1)
230eeb7e5b3SAdam Hornáček
231eeb7e5b3SAdam Hornáčekwhen 17 then
232eeb7e5b3SAdam Hornáček--|#line 106 "ut_config_scanner.l"
233eeb7e5b3SAdam Hornáčekdebug ("GELEX")
234eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 106")
235eeb7e5b3SAdam Hornáčekend
236eeb7e5b3SAdam Hornáček
237eeb7e5b3SAdam Hornáček						last_token := P_NAME
238eeb7e5b3SAdam Hornáček						last_string_value := text
239eeb7e5b3SAdam Hornáček
240eeb7e5b3SAdam Hornáčekwhen 18 then
241eeb7e5b3SAdam Hornáček--|#line 110 "ut_config_scanner.l"
242eeb7e5b3SAdam Hornáčekdebug ("GELEX")
243eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 110")
244eeb7e5b3SAdam Hornáčekend
245eeb7e5b3SAdam Hornáčeklast_token := P_AND
246eeb7e5b3SAdam Hornáčekwhen 19 then
247eeb7e5b3SAdam Hornáček--|#line 111 "ut_config_scanner.l"
248eeb7e5b3SAdam Hornáčekdebug ("GELEX")
249eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 111")
250eeb7e5b3SAdam Hornáčekend
251eeb7e5b3SAdam Hornáčeklast_token := P_OR
252eeb7e5b3SAdam Hornáčekwhen 20 then
253eeb7e5b3SAdam Hornáček--|#line 112 "ut_config_scanner.l"
254eeb7e5b3SAdam Hornáčekdebug ("GELEX")
255eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 112")
256eeb7e5b3SAdam Hornáčekend
257eeb7e5b3SAdam Hornáček
258eeb7e5b3SAdam Hornáček						last_token := P_EOL
259eeb7e5b3SAdam Hornáček						line_nb := line_nb + 1
260eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
261eeb7e5b3SAdam Hornáček
262eeb7e5b3SAdam Hornáčekwhen 21 then
263eeb7e5b3SAdam Hornáček--|#line 124 "ut_config_scanner.l"
264eeb7e5b3SAdam Hornáčekdebug ("GELEX")
265eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 124")
266eeb7e5b3SAdam Hornáčekend
267eeb7e5b3SAdam Hornáček-- Separator.
268eeb7e5b3SAdam Hornáčekwhen 22 then
269eeb7e5b3SAdam Hornáček--|#line 125 "ut_config_scanner.l"
270eeb7e5b3SAdam Hornáčekdebug ("GELEX")
271eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 125")
272eeb7e5b3SAdam Hornáčekend
273eeb7e5b3SAdam Hornáček
274eeb7e5b3SAdam Hornáček						last_token := P_COLON
275eeb7e5b3SAdam Hornáček						set_start_condition (S_VALUE)
276eeb7e5b3SAdam Hornáček
277eeb7e5b3SAdam Hornáčekwhen 23 then
278eeb7e5b3SAdam Hornáček--|#line 132 "ut_config_scanner.l"
279eeb7e5b3SAdam Hornáčekdebug ("GELEX")
280eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 132")
281eeb7e5b3SAdam Hornáčekend
282eeb7e5b3SAdam Hornáček-- Separator.
283eeb7e5b3SAdam Hornáčekwhen 24 then
284eeb7e5b3SAdam Hornáček--|#line 133 "ut_config_scanner.l"
285eeb7e5b3SAdam Hornáčekdebug ("GELEX")
286eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 133")
287eeb7e5b3SAdam Hornáčekend
288eeb7e5b3SAdam Hornáček
289eeb7e5b3SAdam Hornáček						last_token := P_VALUE
290eeb7e5b3SAdam Hornáček						last_string_value := text
291eeb7e5b3SAdam Hornáček
292eeb7e5b3SAdam Hornáčekwhen 25 then
293eeb7e5b3SAdam Hornáček--|#line 137 "ut_config_scanner.l"
294eeb7e5b3SAdam Hornáčekdebug ("GELEX")
295eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 137")
296eeb7e5b3SAdam Hornáčekend
297eeb7e5b3SAdam Hornáček
298eeb7e5b3SAdam Hornáček						last_token := P_EOL
299eeb7e5b3SAdam Hornáček						line_nb := line_nb + 1
300eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
301eeb7e5b3SAdam Hornáček
302eeb7e5b3SAdam Hornáčekwhen 26 then
303eeb7e5b3SAdam Hornáček--|#line 149 "ut_config_scanner.l"
304eeb7e5b3SAdam Hornáčekdebug ("GELEX")
305eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 149")
306eeb7e5b3SAdam Hornáčekend
307eeb7e5b3SAdam Hornáček
308eeb7e5b3SAdam Hornáček						last_token := P_EOL
309eeb7e5b3SAdam Hornáček						line_nb := line_nb + 1
310eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
311eeb7e5b3SAdam Hornáček
312eeb7e5b3SAdam Hornáčekwhen 27 then
313eeb7e5b3SAdam Hornáček--|#line 160 "ut_config_scanner.l"
314eeb7e5b3SAdam Hornáčekdebug ("GELEX")
315eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 160")
316eeb7e5b3SAdam Hornáčekend
317eeb7e5b3SAdam Hornáček
318eeb7e5b3SAdam Hornáček						last_token := text_item (1).code
319eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
320eeb7e5b3SAdam Hornáček
321eeb7e5b3SAdam Hornáčekwhen 28 then
322eeb7e5b3SAdam Hornáček--|#line 0 "ut_config_scanner.l"
323eeb7e5b3SAdam Hornáčekdebug ("GELEX")
324eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 0")
325eeb7e5b3SAdam Hornáčekend
326eeb7e5b3SAdam Hornáčeklast_token := yyError_token
327eeb7e5b3SAdam Hornáčekfatal_error ("scanner jammed")
328eeb7e5b3SAdam Hornáček			else
329eeb7e5b3SAdam Hornáček				last_token := yyError_token
330eeb7e5b3SAdam Hornáček				fatal_error ("fatal scanner internal error: no action found")
331eeb7e5b3SAdam Hornáček			end
332eeb7e5b3SAdam Hornáček			yy_set_beginning_of_line
333eeb7e5b3SAdam Hornáček		end
334eeb7e5b3SAdam Hornáček
335eeb7e5b3SAdam Hornáček	yy_execute_eof_action (yy_sc: INTEGER)
336eeb7e5b3SAdam Hornáček			-- Execute EOF semantic action.
337eeb7e5b3SAdam Hornáček		do
338eeb7e5b3SAdam Hornáček			inspect yy_sc
339eeb7e5b3SAdam Hornáčekwhen 1 then
340eeb7e5b3SAdam Hornáček--|#line 117 "ut_config_scanner.l"
341eeb7e5b3SAdam Hornáčekdebug ("GELEX")
342eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 117")
343eeb7e5b3SAdam Hornáčekend
344eeb7e5b3SAdam Hornáček
345eeb7e5b3SAdam Hornáček						last_token := P_EOL
346eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
347eeb7e5b3SAdam Hornáček
348eeb7e5b3SAdam Hornáčekwhen 5 then
349eeb7e5b3SAdam Hornáček--|#line 142 "ut_config_scanner.l"
350eeb7e5b3SAdam Hornáčekdebug ("GELEX")
351eeb7e5b3SAdam Hornáček	std.error.put_line ("Executing scanner user-code from file 'ut_config_scanner.l' at line 142")
352eeb7e5b3SAdam Hornáčekend
353eeb7e5b3SAdam Hornáček
354eeb7e5b3SAdam Hornáček						last_token := P_EOL
355eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
356eeb7e5b3SAdam Hornáček
357eeb7e5b3SAdam Hornáčekwhen 6 then
358eeb7e5b3SAdam Hornáček--|#line 154 "ut_config_scanner.l"
359eeb7e5b3SAdam Hornáčekdebug ("GELEX")
360eeb7e5b3SAdam Hornáček	std.error.put_line ("xx[Executing scanner user-code from file
361eeb7e5b3SAdam Hornáček    "ut_config_scanner.l"]x" at line 154]xx")
362eeb7e5b3SAdam Hornáčekend
363eeb7e5b3SAdam Hornáček
364eeb7e5b3SAdam Hornáček						last_token := P_EOL
365eeb7e5b3SAdam Hornáček						set_start_condition (INITIAL)
366eeb7e5b3SAdam Hornáček
367eeb7e5b3SAdam Hornáček			else
368eeb7e5b3SAdam Hornáček				terminate
369eeb7e5b3SAdam Hornáček			end
370eeb7e5b3SAdam Hornáček		end
371eeb7e5b3SAdam Hornáček
372eeb7e5b3SAdam Hornáčekfeature {NONE} -- Table templates
373eeb7e5b3SAdam Hornáček
374eeb7e5b3SAdam Hornáček	yy_nxt_template: SPECIAL [INTEGER]
375eeb7e5b3SAdam Hornáček			-- Template for `yy_nxt'
376eeb7e5b3SAdam Hornáček		local
377eeb7e5b3SAdam Hornáček			an_array: ARRAY [INTEGER]
378eeb7e5b3SAdam Hornáček		once
379eeb7e5b3SAdam Hornáček			create an_array.make_filled (0, 0, 220)
380eeb7e5b3SAdam Hornáček			yy_nxt_template_1 (an_array)
381eeb7e5b3SAdam Hornáček			yy_nxt_template_2 (an_array)
382eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (an_array)
383eeb7e5b3SAdam Hornáček		end
384eeb7e5b3SAdam Hornáček
385eeb7e5b3SAdam Hornáček	yy_nxt_template_1 (an_array: ARRAY [INTEGER])
386eeb7e5b3SAdam Hornáček			-- Fill chunk #1 of template for `yy_nxt'.
387eeb7e5b3SAdam Hornáček		do
388eeb7e5b3SAdam Hornáček			yy_array_subcopy (an_array, <<
389eeb7e5b3SAdam Hornáček			    0,   16,   17,   18,   16,   19,   16,   20,   21,   16,
390eeb7e5b3SAdam Hornáček			   21,   21,   21,   21,   21,   21,   21,   21,   21,   16,
391eeb7e5b3SAdam Hornáček			   16,   22,   23,   24,   16,   25,   26,   26,   16,   26,
392eeb7e5b3SAdam Hornáček			   26,   26,   26,   26,   26,   26,   26,   26,   27,   30,
393eeb7e5b3SAdam Hornáček			   30,   33,   34,   33,   34,   87,   31,   31,   36,   57,
394eeb7e5b3SAdam Hornáček			   58,   37,   59,   38,   40,   60,   86,   67,   85,   84,
395eeb7e5b3SAdam Hornáček			   41,   42,   68,   43,   83,   82,   81,   44,   88,   80,
396eeb7e5b3SAdam Hornáček			   79,   88,   78,   45,   36,   77,   76,   37,   75,   38,
397eeb7e5b3SAdam Hornáček			   62,   62,   74,   62,   62,   62,   73,   72,   62,   71,
398eeb7e5b3SAdam Hornáček			   70,   69,   66,   65,   64,   55,   53,   52,   62,   16,
399eeb7e5b3SAdam Hornáček
400eeb7e5b3SAdam Hornáček			   16,   16,   16,   16,   16,   16,   16,   16,   28,   28,
401eeb7e5b3SAdam Hornáček			   28,   28,   28,   28,   28,   28,   28,   32,   32,   32,
402eeb7e5b3SAdam Hornáček			   32,   32,   32,   32,   32,   32,   39,   63,   46,   39,
403eeb7e5b3SAdam Hornáček			   39,   39,   39,   39,   47,   47,   61,   56,   47,   47,
404eeb7e5b3SAdam Hornáček			   47,   47,   47,   49,   49,   49,   49,   51,   51,   51,
405eeb7e5b3SAdam Hornáček			   51,   51,   51,   51,   51,   51,   54,   54,   39,   54,
406eeb7e5b3SAdam Hornáček			   54,   54,   54,   54,   54,   40,   40,   55,   40,   40,
407eeb7e5b3SAdam Hornáček			   40,   40,   40,   40,   45,   45,   53,   45,   45,   45,
408eeb7e5b3SAdam Hornáček			   45,   45,   45,   62,   62,   52,   62,   62,   62,   62,
409eeb7e5b3SAdam Hornáček			   62,   62,   50,   48,   46,   39,   88,   35,   35,   29, yy_Dummy>>,
410eeb7e5b3SAdam Hornáček			1, 200, 0)
411eeb7e5b3SAdam Hornáček		end
412eeb7e5b3SAdam Hornáček
413eeb7e5b3SAdam Hornáček	yy_nxt_template_2 (an_array: ARRAY [INTEGER])
414eeb7e5b3SAdam Hornáček			-- Fill chunk #2 of template for `yy_nxt'.
415eeb7e5b3SAdam Hornáček		do
416eeb7e5b3SAdam Hornáček			yy_array_subcopy (an_array, <<
417eeb7e5b3SAdam Hornáček			   29,   15,   88,   88,   88,   88,   88,   88,   88,   88,
418eeb7e5b3SAdam Hornáček			   88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
419eeb7e5b3SAdam Hornáček			   88, yy_Dummy>>,
420eeb7e5b3SAdam Hornáček			1, 21, 200)
421eeb7e5b3SAdam Hornáček		end
422eeb7e5b3SAdam Hornáček
423eeb7e5b3SAdam Hornáček	yy_chk_template: SPECIAL [INTEGER]
424eeb7e5b3SAdam Hornáček			-- Template for `yy_chk'
425eeb7e5b3SAdam Hornáček		local
426eeb7e5b3SAdam Hornáček			an_array: ARRAY [INTEGER]
427eeb7e5b3SAdam Hornáček		once
428eeb7e5b3SAdam Hornáček			create an_array.make_filled (0, 0, 220)
429eeb7e5b3SAdam Hornáček			yy_chk_template_1 (an_array)
430eeb7e5b3SAdam Hornáček			yy_chk_template_2 (an_array)
431eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (an_array)
432eeb7e5b3SAdam Hornáček		end
433eeb7e5b3SAdam Hornáček
434eeb7e5b3SAdam Hornáček	yy_chk_template_1 (an_array: ARRAY [INTEGER])
435eeb7e5b3SAdam Hornáček			-- Fill chunk #1 of template for `yy_chk'.
436eeb7e5b3SAdam Hornáček		do
437eeb7e5b3SAdam Hornáček			yy_array_subcopy (an_array, <<
438eeb7e5b3SAdam Hornáček			    0,    2,    2,    2,    2,    2,    2,    2,    2,    2,
439eeb7e5b3SAdam Hornáček			    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
440eeb7e5b3SAdam Hornáček			    3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
441eeb7e5b3SAdam Hornáček			    3,    3,    3,    3,    3,    3,    3,    3,    3,    9,
442eeb7e5b3SAdam Hornáček			   10,   11,   11,   12,   12,   86,    9,   10,   17,   42,
443eeb7e5b3SAdam Hornáček			   42,   17,   43,   17,   19,   43,   82,   59,   81,   78,
444eeb7e5b3SAdam Hornáček			   19,   19,   59,   19,   77,   76,   75,   19,   20,   74,
445eeb7e5b3SAdam Hornáček			   73,   20,   71,   20,   36,   70,   69,   36,   68,   36,
446eeb7e5b3SAdam Hornáček			   45,   45,   67,   45,   45,   45,   66,   65,   45,   64,
447eeb7e5b3SAdam Hornáček			   61,   60,   58,   57,   56,   55,   53,   51,   45,   89,
448eeb7e5b3SAdam Hornáček
449eeb7e5b3SAdam Hornáček			   89,   89,   89,   89,   89,   89,   89,   89,   90,   90,
450eeb7e5b3SAdam Hornáček			   90,   90,   90,   90,   90,   90,   90,   91,   91,   91,
451eeb7e5b3SAdam Hornáček			   91,   91,   91,   91,   91,   91,   92,   47,   46,   92,
452eeb7e5b3SAdam Hornáček			   92,   92,   92,   92,   93,   93,   44,   41,   93,   93,
453eeb7e5b3SAdam Hornáček			   93,   93,   93,   94,   94,   94,   94,   95,   95,   95,
454eeb7e5b3SAdam Hornáček			   95,   95,   95,   95,   95,   95,   96,   96,   39,   96,
455eeb7e5b3SAdam Hornáček			   96,   96,   96,   96,   96,   97,   97,   33,   97,   97,
456eeb7e5b3SAdam Hornáček			   97,   97,   97,   97,   98,   98,   30,   98,   98,   98,
457eeb7e5b3SAdam Hornáček			   98,   98,   98,   99,   99,   28,   99,   99,   99,   99,
458eeb7e5b3SAdam Hornáček			   99,   99,   27,   25,   22,   21,   15,   14,   13,    8, yy_Dummy>>,
459eeb7e5b3SAdam Hornáček			1, 200, 0)
460eeb7e5b3SAdam Hornáček		end
461eeb7e5b3SAdam Hornáček
462eeb7e5b3SAdam Hornáček	yy_chk_template_2 (an_array: ARRAY [INTEGER])
463eeb7e5b3SAdam Hornáček			-- Fill chunk #2 of template for `yy_chk'.
464eeb7e5b3SAdam Hornáček		do
465eeb7e5b3SAdam Hornáček			yy_array_subcopy (an_array, <<
466eeb7e5b3SAdam Hornáček			    7,   88,   88,   88,   88,   88,   88,   88,   88,   88,
467eeb7e5b3SAdam Hornáček			   88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
468eeb7e5b3SAdam Hornáček			   88, yy_Dummy>>,
469eeb7e5b3SAdam Hornáček			1, 21, 200)
470eeb7e5b3SAdam Hornáček		end
471eeb7e5b3SAdam Hornáček
472eeb7e5b3SAdam Hornáček	yy_base_template: SPECIAL [INTEGER]
473eeb7e5b3SAdam Hornáček			-- Template for `yy_base'
474eeb7e5b3SAdam Hornáček		once
475eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (<<
476eeb7e5b3SAdam Hornáček			    0,    0,    0,   19,    0,    0,    0,  197,  196,   37,
477eeb7e5b3SAdam Hornáček			   38,   39,   41,  195,  194,  196,  201,   46,  201,   49,
478eeb7e5b3SAdam Hornáček			   66,  188,  192,  201,    0,  187,    0,  173,  182,  201,
479eeb7e5b3SAdam Hornáček			  174,  201,    0,  165,  201,  201,   72,    0,    0,  151,
480eeb7e5b3SAdam Hornáček			    0,  125,   34,   39,  120,   79,  126,  123,  201,    0,
481eeb7e5b3SAdam Hornáček			  201,   94,  201,   94,    0,   93,   81,   76,   81,   46,
482eeb7e5b3SAdam Hornáček			   81,   79,    0,  201,   75,   75,   72,   70,   67,   61,
483eeb7e5b3SAdam Hornáček			   63,   56,  201,   57,   56,   54,   47,   51,   47,  201,
484eeb7e5b3SAdam Hornáček			  201,   45,   45,  201,  201,  201,   33,  201,  201,   98,
485eeb7e5b3SAdam Hornáček			  107,  116,  124,  133,  137,  146,  155,  164,  173,  182, yy_Dummy>>)
486eeb7e5b3SAdam Hornáček		end
487eeb7e5b3SAdam Hornáček
488eeb7e5b3SAdam Hornáček	yy_def_template: SPECIAL [INTEGER]
489eeb7e5b3SAdam Hornáček			-- Template for `yy_def'
490eeb7e5b3SAdam Hornáček		once
491eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (<<
492eeb7e5b3SAdam Hornáček			    0,   89,   88,   88,    3,   89,   89,   90,   90,   89,
493eeb7e5b3SAdam Hornáček			   89,   91,   91,   89,   89,   88,   88,   92,   88,   88,
494eeb7e5b3SAdam Hornáček			   92,   20,   88,   88,   93,   88,   94,   88,   95,   88,
495eeb7e5b3SAdam Hornáček			   88,   88,   96,   88,   88,   88,   20,   19,   20,   20,
496eeb7e5b3SAdam Hornáček			   97,   88,   88,   88,   88,   98,   88,   93,   88,   94,
497eeb7e5b3SAdam Hornáček			   88,   95,   88,   88,   96,   88,   88,   88,   88,   88,
498eeb7e5b3SAdam Hornáček			   88,   88,   99,   88,   88,   88,   88,   88,   88,   88,
499eeb7e5b3SAdam Hornáček			   88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
500eeb7e5b3SAdam Hornáček			   88,   88,   88,   88,   88,   88,   88,   88,    0,   88,
501eeb7e5b3SAdam Hornáček			   88,   88,   88,   88,   88,   88,   88,   88,   88,   88, yy_Dummy>>)
502eeb7e5b3SAdam Hornáček		end
503eeb7e5b3SAdam Hornáček
504eeb7e5b3SAdam Hornáček	yy_ec_template: SPECIAL [INTEGER]
505eeb7e5b3SAdam Hornáček			-- Template for `yy_ec'
506eeb7e5b3SAdam Hornáček		local
507eeb7e5b3SAdam Hornáček			an_array: ARRAY [INTEGER]
508eeb7e5b3SAdam Hornáček		once
509eeb7e5b3SAdam Hornáček			create an_array.make_filled (0, 0, 256)
510eeb7e5b3SAdam Hornáček			yy_ec_template_1 (an_array)
511eeb7e5b3SAdam Hornáček			yy_ec_template_2 (an_array)
512eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (an_array)
513eeb7e5b3SAdam Hornáček		end
514eeb7e5b3SAdam Hornáček
515eeb7e5b3SAdam Hornáček	yy_ec_template_1 (an_array: ARRAY [INTEGER])
516eeb7e5b3SAdam Hornáček			-- Fill chunk #1 of template for `yy_ec'.
517eeb7e5b3SAdam Hornáček		do
518eeb7e5b3SAdam Hornáček			yy_array_subcopy (an_array, <<
519eeb7e5b3SAdam Hornáček			    0,    1,    1,    1,    1,    1,    1,    1,    1,    2,
520eeb7e5b3SAdam Hornáček			    3,    1,    1,    2,    1,    1,    1,    1,    1,    1,
521eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
522eeb7e5b3SAdam Hornáček			    1,    1,    2,    1,    4,    5,    1,    1,    6,    1,
523eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    7,    8,    1,    8,    8,
524eeb7e5b3SAdam Hornáček			    8,    8,    8,    8,    8,    8,    8,    8,    9,    1,
525eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    8,    8,   10,   11,   12,
526eeb7e5b3SAdam Hornáček			   13,    8,    8,   14,    8,    8,   15,    8,   16,    8,
527eeb7e5b3SAdam Hornáček			    8,    8,    8,   17,    8,   18,    8,    8,    8,    8,
528eeb7e5b3SAdam Hornáček			    8,    1,    1,    1,    1,    8,    1,    8,    8,   10,
529eeb7e5b3SAdam Hornáček
530eeb7e5b3SAdam Hornáček			   11,   12,   13,    8,    8,   14,    8,    8,   15,    8,
531eeb7e5b3SAdam Hornáček			   16,    8,    8,    8,    8,   17,    8,   18,    8,    8,
532eeb7e5b3SAdam Hornáček			    8,    8,    8,    1,   19,    1,    1,    1,    1,    1,
533eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
534eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
535eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
536eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
537eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
538eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
539eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1, yy_Dummy>>,
540eeb7e5b3SAdam Hornáček			1, 200, 0)
541eeb7e5b3SAdam Hornáček		end
542eeb7e5b3SAdam Hornáček
543eeb7e5b3SAdam Hornáček	yy_ec_template_2 (an_array: ARRAY [INTEGER])
544eeb7e5b3SAdam Hornáček			-- Fill chunk #2 of template for `yy_ec'.
545eeb7e5b3SAdam Hornáček		do
546eeb7e5b3SAdam Hornáček			yy_array_subcopy (an_array, <<
547eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
548eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
549eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
550eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
551eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
552eeb7e5b3SAdam Hornáček			    1,    1,    1,    1,    1,    1,    1, yy_Dummy>>,
553eeb7e5b3SAdam Hornáček			1, 57, 200)
554eeb7e5b3SAdam Hornáček		end
555eeb7e5b3SAdam Hornáček
556eeb7e5b3SAdam Hornáček	yy_meta_template: SPECIAL [INTEGER]
557eeb7e5b3SAdam Hornáček			-- Template for `yy_meta'
558eeb7e5b3SAdam Hornáček		once
559eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (<<
560eeb7e5b3SAdam Hornáček			    0,    1,    2,    3,    4,    5,    1,    6,    7,    1,
561eeb7e5b3SAdam Hornáček			    7,    7,    7,    7,    7,    7,    7,    8,    9,    1, yy_Dummy>>)
562eeb7e5b3SAdam Hornáček		end
563eeb7e5b3SAdam Hornáček
564eeb7e5b3SAdam Hornáček	yy_accept_template: SPECIAL [INTEGER]
565eeb7e5b3SAdam Hornáček			-- Template for `yy_accept'
566eeb7e5b3SAdam Hornáček		once
567eeb7e5b3SAdam Hornáček			Result := yy_fixed_array (<<
568eeb7e5b3SAdam Hornáček			    0,    0,    0,    0,    0,    0,    0,   14,   14,    0,
569eeb7e5b3SAdam Hornáček			    0,    0,    0,    0,    0,   29,   27,   12,   11,   27,
570eeb7e5b3SAdam Hornáček			   10,   10,   15,   20,   27,   27,   17,   27,   14,   13,
571eeb7e5b3SAdam Hornáček			   21,   22,   24,   23,   25,   26,   12,    0,   10,   10,
572eeb7e5b3SAdam Hornáček			    2,    0,    0,    0,    0,    1,   15,    0,   18,   17,
573eeb7e5b3SAdam Hornáček			   19,   14,   13,   21,   24,   23,    0,    0,    0,    0,
574eeb7e5b3SAdam Hornáček			    0,    0,    1,   16,    0,    0,    0,    0,    0,    0,
575eeb7e5b3SAdam Hornáček			    0,    0,    5,    0,    0,    0,    0,    0,    0,    6,
576eeb7e5b3SAdam Hornáček			    3,    0,    0,    9,    8,    4,    0,    7,    0, yy_Dummy>>)
577eeb7e5b3SAdam Hornáček		end
578eeb7e5b3SAdam Hornáček
579eeb7e5b3SAdam Hornáčekfeature {NONE} -- Constants
580eeb7e5b3SAdam Hornáček
581eeb7e5b3SAdam Hornáček	yyJam_base: INTEGER = 201
582eeb7e5b3SAdam Hornáček			-- Position in `yy_nxt'/`yy_chk' tables
583eeb7e5b3SAdam Hornáček			-- where default jam table starts
584eeb7e5b3SAdam Hornáček
585eeb7e5b3SAdam Hornáček	yyJam_state: INTEGER = 88
586eeb7e5b3SAdam Hornáček			-- State id corresponding to jam state
587eeb7e5b3SAdam Hornáček
588eeb7e5b3SAdam Hornáček	yyTemplate_mark: INTEGER = 89
589eeb7e5b3SAdam Hornáček			-- Mark between normal states and templates
590eeb7e5b3SAdam Hornáček
591eeb7e5b3SAdam Hornáček	yyNull_equiv_class: INTEGER = 1
592eeb7e5b3SAdam Hornáček			-- Equivalence code for NULL character
593eeb7e5b3SAdam Hornáček
594eeb7e5b3SAdam Hornáček	yyReject_used: BOOLEAN = false
595eeb7e5b3SAdam Hornáček			-- Is `reject' called?
596eeb7e5b3SAdam Hornáček
597eeb7e5b3SAdam Hornáček	yyVariable_trail_context: BOOLEAN = false
598eeb7e5b3SAdam Hornáček			-- Is there a regular expression with
599eeb7e5b3SAdam Hornáček			-- both leading and trailing parts having
600eeb7e5b3SAdam Hornáček			-- variable length?
601eeb7e5b3SAdam Hornáček
602eeb7e5b3SAdam Hornáček	yyReject_or_variable_trail_context: BOOLEAN = false
603eeb7e5b3SAdam Hornáček			-- Is `reject' called or is there a
604eeb7e5b3SAdam Hornáček			-- regular expression with both leading
605eeb7e5b3SAdam Hornáček			-- and trailing parts having variable length?
606eeb7e5b3SAdam Hornáček
607eeb7e5b3SAdam Hornáček	yyNb_rules: INTEGER = 28
608eeb7e5b3SAdam Hornáček			-- Number of rules
609eeb7e5b3SAdam Hornáček
610eeb7e5b3SAdam Hornáček	yyEnd_of_buffer: INTEGER = 29
611eeb7e5b3SAdam Hornáček			-- End of buffer rule code
612eeb7e5b3SAdam Hornáček
613eeb7e5b3SAdam Hornáček	yyLine_used: BOOLEAN = false
614eeb7e5b3SAdam Hornáček			-- Are line and column numbers used?
615eeb7e5b3SAdam Hornáček
616eeb7e5b3SAdam Hornáček	yyPosition_used: BOOLEAN = false
617eeb7e5b3SAdam Hornáček			-- Is `position' used?
618eeb7e5b3SAdam Hornáček
619eeb7e5b3SAdam Hornáček	INITIAL: INTEGER = 0b0
620eeb7e5b3SAdam Hornáček	S_PREPROC: INTEGER = 0B1
621eeb7e5b3SAdam Hornáček	S_READLINE: INTEGER = 0x2
622eeb7e5b3SAdam Hornáček	S_SKIP_EOL: INTEGER = 0X3
623eeb7e5b3SAdam Hornáček	S_NAME: INTEGER = 0c4
624eeb7e5b3SAdam Hornáček	S_VALUE: INTEGER = 0C5
625eeb7e5b3SAdam Hornáček	S_EMPTY_LINE: INTEGER = 6
626eeb7e5b3SAdam Hornáček			-- Start condition codes
627eeb7e5b3SAdam Hornáček
628eeb7e5b3SAdam Hornáčekfeature -- User-defined features
629eeb7e5b3SAdam Hornáček
630eeb7e5b3SAdam Hornáček
631eeb7e5b3SAdam Hornáček
632eeb7e5b3SAdam Hornáčekfeature {NONE} -- Initialization
633eeb7e5b3SAdam Hornáček
634eeb7e5b3SAdam Hornáček	make
635eeb7e5b3SAdam Hornáček			-- Create a new scanner.
636eeb7e5b3SAdam Hornáček		do
637eeb7e5b3SAdam Hornáček			make_with_buffer (Empty_buffer)
638eeb7e5b3SAdam Hornáček			last_string_value := ""
639eeb7e5b3SAdam Hornáček			line_nb := 1
640eeb7e5b3SAdam Hornáček		end
641eeb7e5b3SAdam Hornáček
642eeb7e5b3SAdam Hornáčekfeature -- Initialization
643eeb7e5b3SAdam Hornáček
644eeb7e5b3SAdam Hornáček	reset
645eeb7e5b3SAdam Hornáček			-- Reset scanner before scanning next input.
646eeb7e5b3SAdam Hornáček		do
647eeb7e5b3SAdam Hornáček			reset_compressed_scanner_skeleton
648eeb7e5b3SAdam Hornáček			last_string_value := ""
649eeb7e5b3SAdam Hornáček			line_nb := 1
650eeb7e5b3SAdam Hornáček		end
651eeb7e5b3SAdam Hornáček
652eeb7e5b3SAdam Hornáčekfeature -- Access
653eeb7e5b3SAdam Hornáček
654eeb7e5b3SAdam Hornáček	line_nb: INTEGER
655eeb7e5b3SAdam Hornáček			-- Current line number
656eeb7e5b3SAdam Hornáček
657eeb7e5b3SAdam Hornáček	include_stack: DS_STACK [YY_BUFFER]
658eeb7e5b3SAdam Hornáček			-- Input buffers not completely parsed yet
659eeb7e5b3SAdam Hornáček		deferred
660eeb7e5b3SAdam Hornáček		ensure
661eeb7e5b3SAdam Hornáček			include_stack_not_void: Result /= Void
662eeb7e5b3SAdam Hornáček			no_void_buffer: not Result.has_void
663eeb7e5b3SAdam Hornáček		end
664eeb7e5b3SAdam Hornáček
665eeb7e5b3SAdam Hornáček	line_nb_stack: DS_STACK [INTEGER]
666eeb7e5b3SAdam Hornáček			-- Line numbers in the corresponding input buffers in `include_stack'
667eeb7e5b3SAdam Hornáček		deferred
668eeb7e5b3SAdam Hornáček		ensure
669eeb7e5b3SAdam Hornáček			line_nb_stack_not_void: Result /= Void
670eeb7e5b3SAdam Hornáček			same_count: Result.count = include_stack.count
671eeb7e5b3SAdam Hornáček		end
672eeb7e5b3SAdam Hornáček
673eeb7e5b3SAdam Hornáčekfeature -- Status report
674eeb7e5b3SAdam Hornáček
675eeb7e5b3SAdam Hornáček	ignored: BOOLEAN
676eeb7e5b3SAdam Hornáček			-- Is current line ignored?
677eeb7e5b3SAdam Hornáček		deferred
678eeb7e5b3SAdam Hornáček		end
679eeb7e5b3SAdam Hornáček
680eeb7e5b3SAdam Hornáčekfeature -- Element change
681eeb7e5b3SAdam Hornáček
682eeb7e5b3SAdam Hornáček	wrap: BOOLEAN
683eeb7e5b3SAdam Hornáček			-- Should current scanner terminate when end of file is reached?
684eeb7e5b3SAdam Hornáček			-- True unless an include file was being processed.
685eeb7e5b3SAdam Hornáček		local
686eeb7e5b3SAdam Hornáček			l_old_buffer: YY_BUFFER
687eeb7e5b3SAdam Hornáček			a_file: KI_CHARACTER_INPUT_STREAM
688eeb7e5b3SAdam Hornáček		do
689eeb7e5b3SAdam Hornáček			if not include_stack.is_empty then
690eeb7e5b3SAdam Hornáček				l_old_buffer := input_buffer
691eeb7e5b3SAdam Hornáček				set_input_buffer (include_stack.item)
692eeb7e5b3SAdam Hornáček				line_nb := line_nb_stack.item
693eeb7e5b3SAdam Hornáček				line_nb_stack.remove
694eeb7e5b3SAdam Hornáček				include_stack.remove
695eeb7e5b3SAdam Hornáček				if attached {YY_FILE_BUFFER} l_old_buffer as l_old_file_buffer then
696eeb7e5b3SAdam Hornáček					a_file := l_old_file_buffer.file
697eeb7e5b3SAdam Hornáček					if a_file.is_closable then
698eeb7e5b3SAdam Hornáček						a_file.close
699eeb7e5b3SAdam Hornáček					end
700eeb7e5b3SAdam Hornáček				end
701eeb7e5b3SAdam Hornáček				set_start_condition (INITIAL)
702eeb7e5b3SAdam Hornáček			else
703eeb7e5b3SAdam Hornáček				Result := True
704eeb7e5b3SAdam Hornáček			end
705eeb7e5b3SAdam Hornáček		end
706eeb7e5b3SAdam Hornáček
707eeb7e5b3SAdam Hornáčekfeature -- Output
708eeb7e5b3SAdam Hornáček
709eeb7e5b3SAdam Hornáček	output (a_text: like text)
710eeb7e5b3SAdam Hornáček			-- Silently ignore `a_text'.
711eeb7e5b3SAdam Hornáček		do
712eeb7e5b3SAdam Hornáček		end
713eeb7e5b3SAdam Hornáček
714*2d7e47c7SChris Fraire	special_chars
715*2d7e47c7SChris Fraire		do
716*2d7e47c7SChris Fraire			value := "abc"
717*2d7e47c7SChris Fraire			value := 'abc' -- not a valid character
718*2d7e47c7SChris Fraire			value := "%""
719*2d7e47c7SChris Fraire			value := "%'"
720*2d7e47c7SChris Fraire			value := '%''
721*2d7e47c7SChris Fraire			value := '%"'
722*2d7e47c7SChris Fraire		end
723eeb7e5b3SAdam Hornáčekend
724