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