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