Cface__CDefinitionScanner.st
changeset 9 03c7a764d2be
parent 6 ae25dce94003
child 14 1f730d82496e
equal deleted inserted replaced
8:b823a5b502d7 9:03c7a764d2be
    31 <file>                  :       [\w-_/] [\w-_/.]* ;
    31 <file>                  :       [\w-_/] [\w-_/.]* ;
    32 
    32 
    33 <comment>       :       \# [^\r\n]* ;
    33 <comment>       :       \# [^\r\n]* ;
    34 "
    34 "
    35 
    35 
    36     "Modified: / 10-07-2008 / 19:55:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
    36     "Modified: / 09-09-2008 / 17:05:06 / Jan Vrany <vranyj1@fel.cvut.cz>"
    37 ! !
    37 ! !
    38 
    38 
    39 !CDefinitionScanner class methodsFor:'generated-initialization'!
    39 !CDefinitionScanner class methodsFor:'generated-initialization'!
    40 
    40 
    41 initializeKeywordMap
    41 initializeKeywordMap
    42     keywordMap := Dictionary new.
    42     keywordMap := Dictionary new.
    43     #( #(36 'argument' 13)
    43     #( #(34 'argument' 14)
    44      #(36 'array' 7)
    44      #(34 'array' 8)
    45      #(36 'char' 15)
    45      #(34 'char' 16)
    46      #(36 'const' 30)
    46      #(34 'const' 31)
    47      #(36 'double' 24)
    47      #(34 'double' 26)
    48      #(36 'enum' 20)
    48      #(34 'enum' 20)
    49      #(36 'field' 18)
    49      #(34 'field' 18)
    50      #(36 'float' 27)
    50      #(34 'float' 28)
    51      #(36 'function' 11)
    51      #(34 'function' 12)
    52      #(36 'int' 16)
    52      #(34 'int' 5)
    53      #(36 'long' 6)
    53      #(34 'long' 3)
    54      #(36 'return' 2)
    54      #(34 'return' 7)
    55      #(36 'short' 5)
    55      #(34 'short' 6)
    56      #(36 'signed' 3)
    56      #(34 'signed' 4)
    57      #(36 'struct' 31)
    57      #(34 'struct' 32)
    58      #(36 'typedef' 22)
    58      #(34 'typedef' 22)
    59      #(36 'union' 25)
    59      #(34 'union' 24)
    60      #(36 'unsigned' 4)
    60      #(34 'unsigned' 1)
    61      #(36 'value' 8)
    61      #(34 'value' 17)
    62      #(36 'void' 26)
    62      #(34 'void' 27)
    63      #(36 'wchar_t' 28)
    63      #(34 'wchar_t' 29)
    64      #(33 'argument' 13)
    64      #(37 'argument' 14)
    65      #(33 'array' 7)
    65      #(37 'array' 8)
    66      #(33 'char' 15)
    66      #(37 'char' 16)
    67      #(33 'const' 30)
    67      #(37 'const' 31)
    68      #(33 'double' 24)
    68      #(37 'double' 26)
    69      #(33 'enum' 20)
    69      #(37 'enum' 20)
    70      #(33 'field' 18)
    70      #(37 'field' 18)
    71      #(33 'float' 27)
    71      #(37 'float' 28)
    72      #(33 'function' 11)
    72      #(37 'function' 12)
    73      #(33 'int' 16)
    73      #(37 'int' 5)
    74      #(33 'long' 6)
    74      #(37 'long' 3)
    75      #(33 'return' 2)
    75      #(37 'return' 7)
    76      #(33 'short' 5)
    76      #(37 'short' 6)
    77      #(33 'signed' 3)
    77      #(37 'signed' 4)
    78      #(33 'struct' 31)
    78      #(37 'struct' 32)
    79      #(33 'typedef' 22)
    79      #(37 'typedef' 22)
    80      #(33 'union' 25)
    80      #(37 'union' 24)
    81      #(33 'unsigned' 4)
    81      #(37 'unsigned' 1)
    82      #(33 'value' 8)
    82      #(37 'value' 17)
    83      #(33 'void' 26)
    83      #(37 'void' 27)
    84      #(33 'wchar_t' 28) ) 
    84      #(37 'wchar_t' 29) ) 
    85             do:[:each | 
    85             do:[:each | 
    86                 (keywordMap at:each first ifAbsentPut:[ Dictionary new ]) at:(each at:2)
    86                 (keywordMap at:each first ifAbsentPut:[ Dictionary new ]) at:(each at:2)
    87                     put:each last
    87                     put:each last
    88             ].
    88             ].
    89     ^ keywordMap
    89     ^ keywordMap
    90 
    90 
    91     "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
    91     "Modified: / 09-09-2008 / 17:05:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
    92 ! !
    92 ! !
    93 
    93 
    94 !CDefinitionScanner methodsFor:'generated-scanner'!
    94 !CDefinitionScanner methodsFor:'generated-scanner'!
    95 
    95 
    96 scan1
    96 scan1
    97     [
    97     [
    98         self recordMatch:#( 33 36 ).
    98         self recordMatch:#( 34 37 ).
    99         self step.
    99         self step.
   100         (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
   100         (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
   101     ] whileTrue.
   101     ] whileTrue.
   102     (currentCharacter between:$- and:$/) ifTrue:[
   102     (currentCharacter between:$- and:$/) ifTrue:[
   103         [
   103         [
   104             self recordMatch:#( 36 ).
   104             self recordMatch:#( 37 ).
   105             self step.
   105             self step.
   106             (currentCharacter isLetterOrDigit 
   106             (currentCharacter isLetterOrDigit 
   107                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
   107                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
   108         ] whileTrue.
   108         ] whileTrue.
   109         ^ self reportLastMatch
   109         ^ self reportLastMatch
   110     ].
   110     ].
   111     ^ self reportLastMatch
   111     ^ self reportLastMatch
   112 
   112 
   113     "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
   113     "Modified: / 09-09-2008 / 17:05:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
   114 !
   114 !
   115 
   115 
   116 scan2
   116 scan2
   117     [
   117     [
   118         self recordMatch:#( 34 36 ).
   118         self recordMatch:#( 35 37 ).
   119         self step.
   119         self step.
   120         (currentCharacter isLetter) ifTrue:[
   120         (currentCharacter isLetter) ifTrue:[
   121             [
   121             [
   122                 self recordMatch:#( 34 36 ).
   122                 self recordMatch:#( 35 37 ).
   123                 self step.
   123                 self step.
   124                 (currentCharacter isLetter)
   124                 (currentCharacter isLetter)
   125             ] whileTrue.
   125             ] whileTrue.
   126             (currentCharacter isXMLDigit 
   126             (currentCharacter isXMLDigit 
   127                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
   127                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
   128                     ifTrue:[
   128                     ifTrue:[
   129                         [
   129                         [
   130                             self recordMatch:#( 36 ).
   130                             self recordMatch:#( 37 ).
   131                             self step.
   131                             self step.
   132                             (currentCharacter isLetterOrDigit 
   132                             (currentCharacter isLetterOrDigit 
   133                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
   133                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
   134                         ] whileTrue.
   134                         ] whileTrue.
   135                         ^ self reportLastMatch
   135                         ^ self reportLastMatch
   138         ].
   138         ].
   139         (currentCharacter isXMLDigit)
   139         (currentCharacter isXMLDigit)
   140     ] whileTrue.
   140     ] whileTrue.
   141     ((currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ]) ifTrue:[
   141     ((currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ]) ifTrue:[
   142         [
   142         [
   143             self recordMatch:#( 36 ).
   143             self recordMatch:#( 37 ).
   144             self step.
   144             self step.
   145             (currentCharacter isLetterOrDigit 
   145             (currentCharacter isLetterOrDigit 
   146                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
   146                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
   147         ] whileTrue.
   147         ] whileTrue.
   148         ^ self reportLastMatch
   148         ^ self reportLastMatch
   149     ].
   149     ].
   150     ^ self reportLastMatch
   150     ^ self reportLastMatch
   151 
   151 
   152     "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
   152     "Modified: / 09-09-2008 / 17:05:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
   153 !
   153 !
   154 
   154 
   155 scan3
   155 scan3
   156     [
   156     [
   157         self recordMatch:#( 31 33 ).
   157         self recordMatch:#( 31 33 ).
  1099                                                             ])
  1099                                                             ])
  1100                                                     ] whileTrue.
  1100                                                     ] whileTrue.
  1101                                                     ^ self reportLastMatch
  1101                                                     ^ self reportLastMatch
  1102                                                 ].
  1102                                                 ].
  1103                                         (currentCharacter == $d) ifTrue:[
  1103                                         (currentCharacter == $d) ifTrue:[
  1104                                             self recordMatch:#( 10 37 ).
  1104                                             self recordMatch:#( 11 38 ).
  1105                                             self step.
  1105                                             self step.
  1106                                             (currentCharacter <= (Character tab) 
  1106                                             (currentCharacter <= (Character tab) 
  1107                                                 or:[
  1107                                                 or:[
  1108                                                     (currentCharacter between:(Character value:16rB)
  1108                                                     (currentCharacter between:(Character value:16rB)
  1109                                                         and:(Character value:16rC)) 
  1109                                                         and:(Character value:16rC)) 
  1141             ^ self reportLastMatch
  1141             ^ self reportLastMatch
  1142         ].
  1142         ].
  1143         ^ self reportLastMatch
  1143         ^ self reportLastMatch
  1144     ].
  1144     ].
  1145     (currentCharacter == $() ifTrue:[
  1145     (currentCharacter == $() ifTrue:[
  1146         ^ self recordAndReportMatch:#( 12 ).
  1146         ^ self recordAndReportMatch:#( 13 ).
  1147     ].
  1147     ].
  1148     (currentCharacter == $)) ifTrue:[
  1148     (currentCharacter == $)) ifTrue:[
  1149         ^ self recordAndReportMatch:#( 14 ).
  1149         ^ self recordAndReportMatch:#( 15 ).
  1150     ].
  1150     ].
  1151     (currentCharacter == $-) ifTrue:[
  1151     (currentCharacter == $-) ifTrue:[
  1152         self recordMatch:#( 36 ).
  1152         self recordMatch:#( 37 ).
  1153         self step.
  1153         self step.
  1154         (currentCharacter isLetter 
  1154         (currentCharacter isLetter 
  1155             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  1155             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  1156                 ifTrue:[
  1156                 ifTrue:[
  1157                     [
  1157                     [
  1158                         self recordMatch:#( 36 ).
  1158                         self recordMatch:#( 37 ).
  1159                         self step.
  1159                         self step.
  1160                         (currentCharacter isLetterOrDigit 
  1160                         (currentCharacter isLetterOrDigit 
  1161                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1161                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1162                     ] whileTrue.
  1162                     ] whileTrue.
  1163                     ^ self reportLastMatch
  1163                     ^ self reportLastMatch
  1167         ].
  1167         ].
  1168         ^ self reportLastMatch
  1168         ^ self reportLastMatch
  1169     ].
  1169     ].
  1170     (currentCharacter == $.) ifTrue:[
  1170     (currentCharacter == $.) ifTrue:[
  1171         [
  1171         [
  1172             self recordMatch:#( 33 ).
  1172             self recordMatch:#( 34 ).
  1173             self step.
  1173             self step.
  1174             (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
  1174             (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
  1175         ] whileTrue.
  1175         ] whileTrue.
  1176         ^ self reportLastMatch
  1176         ^ self reportLastMatch
  1177     ].
  1177     ].
  1178     (currentCharacter == $/) ifTrue:[
  1178     (currentCharacter == $/) ifTrue:[
  1179         [
  1179         [
  1180             self recordMatch:#( 36 ).
  1180             self recordMatch:#( 37 ).
  1181             self step.
  1181             self step.
  1182             (currentCharacter isLetterOrDigit 
  1182             (currentCharacter isLetterOrDigit 
  1183                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1183                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1184         ] whileTrue.
  1184         ] whileTrue.
  1185         ^ self reportLastMatch
  1185         ^ self reportLastMatch
  1186     ].
  1186     ].
  1187     (currentCharacter == $@) ifTrue:[
  1187     (currentCharacter == $:) ifTrue:[
  1188         ^ self recordAndReportMatch:#( 21 ).
  1188         self step.
       
  1189         (currentCharacter == $o) ifTrue:[
       
  1190             self step.
       
  1191             (currentCharacter == $f) ifTrue:[
       
  1192                 self step.
       
  1193                 (currentCharacter == $f) ifTrue:[
       
  1194                     self step.
       
  1195                     (currentCharacter == $s) ifTrue:[
       
  1196                         self step.
       
  1197                         (currentCharacter == $e) ifTrue:[
       
  1198                             self step.
       
  1199                             (currentCharacter == $t) ifTrue:[
       
  1200                                 ^ self recordAndReportMatch:#( 21 ).
       
  1201                             ].
       
  1202                             ^ self reportLastMatch
       
  1203                         ].
       
  1204                         ^ self reportLastMatch
       
  1205                     ].
       
  1206                     ^ self reportLastMatch
       
  1207                 ].
       
  1208                 ^ self reportLastMatch
       
  1209             ].
       
  1210             ^ self reportLastMatch
       
  1211         ].
       
  1212         (currentCharacter == $s) ifTrue:[
       
  1213             self step.
       
  1214             (currentCharacter == $i) ifTrue:[
       
  1215                 self step.
       
  1216                 (currentCharacter == $z) ifTrue:[
       
  1217                     self step.
       
  1218                     (currentCharacter == $e) ifTrue:[
       
  1219                         ^ self recordAndReportMatch:#( 30 ).
       
  1220                     ].
       
  1221                     ^ self reportLastMatch
       
  1222                 ].
       
  1223                 ^ self reportLastMatch
       
  1224             ].
       
  1225             ^ self reportLastMatch
       
  1226         ].
       
  1227         ^ self reportLastMatch
  1189     ].
  1228     ].
  1190     (currentCharacter == $e) ifTrue:[
  1229     (currentCharacter == $e) ifTrue:[
  1191         self recordMatch:#( 33 36 ).
  1230         self recordMatch:#( 34 37 ).
  1192         self step.
  1231         self step.
  1193         ((currentCharacter between:$0 and:$9) 
  1232         ((currentCharacter between:$0 and:$9) 
  1194             or:[
  1233             or:[
  1195                 (currentCharacter between:$A and:$Z) 
  1234                 (currentCharacter between:$A and:$Z) 
  1196                     or:[
  1235                     or:[
  1202                     ]
  1241                     ]
  1203             ]) 
  1242             ]) 
  1204                 ifTrue:[ ^ self scan1 ].
  1243                 ifTrue:[ ^ self scan1 ].
  1205         (currentCharacter between:$- and:$/) ifTrue:[
  1244         (currentCharacter between:$- and:$/) ifTrue:[
  1206             [
  1245             [
  1207                 self recordMatch:#( 36 ).
  1246                 self recordMatch:#( 37 ).
  1208                 self step.
  1247                 self step.
  1209                 (currentCharacter isLetterOrDigit 
  1248                 (currentCharacter isLetterOrDigit 
  1210                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1249                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1211             ] whileTrue.
  1250             ] whileTrue.
  1212             ^ self reportLastMatch
  1251             ^ self reportLastMatch
  1213         ].
  1252         ].
  1214         (currentCharacter == $n) ifTrue:[
  1253         (currentCharacter == $n) ifTrue:[
  1215             self recordMatch:#( 33 36 ).
  1254             self recordMatch:#( 34 37 ).
  1216             self step.
  1255             self step.
  1217             (currentCharacter isXMLDigit 
  1256             (currentCharacter isXMLDigit 
  1218                 or:[
  1257                 or:[
  1219                     (currentCharacter between:$A and:$Z) 
  1258                     (currentCharacter between:$A and:$Z) 
  1220                         or:[
  1259                         or:[
  1226                         ]
  1265                         ]
  1227                 ]) 
  1266                 ]) 
  1228                     ifTrue:[ ^ self scan1 ].
  1267                     ifTrue:[ ^ self scan1 ].
  1229             (currentCharacter between:$- and:$/) ifTrue:[
  1268             (currentCharacter between:$- and:$/) ifTrue:[
  1230                 [
  1269                 [
  1231                     self recordMatch:#( 36 ).
  1270                     self recordMatch:#( 37 ).
  1232                     self step.
  1271                     self step.
  1233                     (currentCharacter isLetterOrDigit 
  1272                     (currentCharacter isLetterOrDigit 
  1234                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1273                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1235                 ] whileTrue.
  1274                 ] whileTrue.
  1236                 ^ self reportLastMatch
  1275                 ^ self reportLastMatch
  1237             ].
  1276             ].
  1238             (currentCharacter == $u) ifTrue:[
  1277             (currentCharacter == $u) ifTrue:[
  1239                 self recordMatch:#( 33 36 ).
  1278                 self recordMatch:#( 34 37 ).
  1240                 self step.
  1279                 self step.
  1241                 ((currentCharacter between:$0 and:$9) 
  1280                 ((currentCharacter between:$0 and:$9) 
  1242                     or:[
  1281                     or:[
  1243                         (currentCharacter between:$A and:$Z) 
  1282                         (currentCharacter between:$A and:$Z) 
  1244                             or:[
  1283                             or:[
  1250                             ]
  1289                             ]
  1251                     ]) 
  1290                     ]) 
  1252                         ifTrue:[ ^ self scan1 ].
  1291                         ifTrue:[ ^ self scan1 ].
  1253                 (currentCharacter between:$- and:$/) ifTrue:[
  1292                 (currentCharacter between:$- and:$/) ifTrue:[
  1254                     [
  1293                     [
  1255                         self recordMatch:#( 36 ).
  1294                         self recordMatch:#( 37 ).
  1256                         self step.
  1295                         self step.
  1257                         (currentCharacter isLetterOrDigit 
  1296                         (currentCharacter isLetterOrDigit 
  1258                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1297                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1259                     ] whileTrue.
  1298                     ] whileTrue.
  1260                     ^ self reportLastMatch
  1299                     ^ self reportLastMatch
  1261                 ].
  1300                 ].
  1262                 (currentCharacter == $m) ifTrue:[
  1301                 (currentCharacter == $m) ifTrue:[
  1263                     self recordMatch:#( 33 36 ).
  1302                     self recordMatch:#( 34 37 ).
  1264                     self step.
  1303                     self step.
  1265                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  1304                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  1266                         ^ self scan1
  1305                         ^ self scan1
  1267                     ].
  1306                     ].
  1268                     (currentCharacter between:$. and:$/) ifTrue:[
  1307                     (currentCharacter between:$. and:$/) ifTrue:[
  1269                         [
  1308                         [
  1270                             self recordMatch:#( 36 ).
  1309                             self recordMatch:#( 37 ).
  1271                             self step.
  1310                             self step.
  1272                             (currentCharacter isLetterOrDigit 
  1311                             (currentCharacter isLetterOrDigit 
  1273                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1312                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1274                         ] whileTrue.
  1313                         ] whileTrue.
  1275                         ^ self reportLastMatch
  1314                         ^ self reportLastMatch
  1276                     ].
  1315                     ].
  1277                     (currentCharacter == $-) ifTrue:[
  1316                     (currentCharacter == $-) ifTrue:[
  1278                         self recordMatch:#( 36 ).
  1317                         self recordMatch:#( 37 ).
  1279                         self step.
  1318                         self step.
  1280                         ((currentCharacter between:$- and:$9) 
  1319                         ((currentCharacter between:$- and:$9) 
  1281                             or:[
  1320                             or:[
  1282                                 (currentCharacter between:$A and:$Z) 
  1321                                 (currentCharacter between:$A and:$Z) 
  1283                                     or:[
  1322                                     or:[
  1288                                             ]
  1327                                             ]
  1289                                     ]
  1328                                     ]
  1290                             ]) 
  1329                             ]) 
  1291                                 ifTrue:[
  1330                                 ifTrue:[
  1292                                     [
  1331                                     [
  1293                                         self recordMatch:#( 36 ).
  1332                                         self recordMatch:#( 37 ).
  1294                                         self step.
  1333                                         self step.
  1295                                         (currentCharacter isLetterOrDigit 
  1334                                         (currentCharacter isLetterOrDigit 
  1296                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1335                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1297                                     ] whileTrue.
  1336                                     ] whileTrue.
  1298                                     ^ self reportLastMatch
  1337                                     ^ self reportLastMatch
  1299                                 ].
  1338                                 ].
  1300                         (currentCharacter == $f) ifTrue:[
  1339                         (currentCharacter == $f) ifTrue:[
  1301                             self recordMatch:#( 36 ).
  1340                             self recordMatch:#( 37 ).
  1302                             self step.
  1341                             self step.
  1303                             (currentCharacter isXMLDigit 
  1342                             (currentCharacter isXMLDigit 
  1304                                 or:[
  1343                                 or:[
  1305                                     (currentCharacter between:$- and:$/) 
  1344                                     (currentCharacter between:$- and:$/) 
  1306                                         or:[
  1345                                         or:[
  1314                                                 ]
  1353                                                 ]
  1315                                         ]
  1354                                         ]
  1316                                 ]) 
  1355                                 ]) 
  1317                                     ifTrue:[
  1356                                     ifTrue:[
  1318                                         [
  1357                                         [
  1319                                             self recordMatch:#( 36 ).
  1358                                             self recordMatch:#( 37 ).
  1320                                             self step.
  1359                                             self step.
  1321                                             (currentCharacter isLetterOrDigit 
  1360                                             (currentCharacter isLetterOrDigit 
  1322                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1361                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1323                                         ] whileTrue.
  1362                                         ] whileTrue.
  1324                                         ^ self reportLastMatch
  1363                                         ^ self reportLastMatch
  1325                                     ].
  1364                                     ].
  1326                             (currentCharacter == $o) ifTrue:[
  1365                             (currentCharacter == $o) ifTrue:[
  1327                                 self recordMatch:#( 36 ).
  1366                                 self recordMatch:#( 37 ).
  1328                                 self step.
  1367                                 self step.
  1329                                 ((currentCharacter between:$- and:$9) 
  1368                                 ((currentCharacter between:$- and:$9) 
  1330                                     or:[
  1369                                     or:[
  1331                                         (currentCharacter between:$A and:$Z) 
  1370                                         (currentCharacter between:$A and:$Z) 
  1332                                             or:[
  1371                                             or:[
  1337                                                     ]
  1376                                                     ]
  1338                                             ]
  1377                                             ]
  1339                                     ]) 
  1378                                     ]) 
  1340                                         ifTrue:[
  1379                                         ifTrue:[
  1341                                             [
  1380                                             [
  1342                                                 self recordMatch:#( 36 ).
  1381                                                 self recordMatch:#( 37 ).
  1343                                                 self step.
  1382                                                 self step.
  1344                                                 (currentCharacter isLetterOrDigit 
  1383                                                 (currentCharacter isLetterOrDigit 
  1345                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1384                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1346                                             ] whileTrue.
  1385                                             ] whileTrue.
  1347                                             ^ self reportLastMatch
  1386                                             ^ self reportLastMatch
  1348                                         ].
  1387                                         ].
  1349                                 (currentCharacter == $r) ifTrue:[
  1388                                 (currentCharacter == $r) ifTrue:[
  1350                                     self recordMatch:#( 36 ).
  1389                                     self recordMatch:#( 37 ).
  1351                                     self step.
  1390                                     self step.
  1352                                     (currentCharacter isXMLDigit 
  1391                                     (currentCharacter isXMLDigit 
  1353                                         or:[
  1392                                         or:[
  1354                                             (currentCharacter between:$- and:$/) 
  1393                                             (currentCharacter between:$- and:$/) 
  1355                                                 or:[
  1394                                                 or:[
  1363                                                         ]
  1402                                                         ]
  1364                                                 ]
  1403                                                 ]
  1365                                         ]) 
  1404                                         ]) 
  1366                                             ifTrue:[
  1405                                             ifTrue:[
  1367                                                 [
  1406                                                 [
  1368                                                     self recordMatch:#( 36 ).
  1407                                                     self recordMatch:#( 37 ).
  1369                                                     self step.
  1408                                                     self step.
  1370                                                     (currentCharacter isLetterOrDigit 
  1409                                                     (currentCharacter isLetterOrDigit 
  1371                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1410                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1372                                                 ] whileTrue.
  1411                                                 ] whileTrue.
  1373                                                 ^ self reportLastMatch
  1412                                                 ^ self reportLastMatch
  1374                                             ].
  1413                                             ].
  1375                                     (currentCharacter == $e) ifTrue:[
  1414                                     (currentCharacter == $e) ifTrue:[
  1376                                         self recordMatch:#( 36 ).
  1415                                         self recordMatch:#( 37 ).
  1377                                         self step.
  1416                                         self step.
  1378                                         (currentCharacter isXMLDigit 
  1417                                         (currentCharacter isXMLDigit 
  1379                                             or:[
  1418                                             or:[
  1380                                                 (currentCharacter between:$- and:$/) 
  1419                                                 (currentCharacter between:$- and:$/) 
  1381                                                     or:[
  1420                                                     or:[
  1389                                                             ]
  1428                                                             ]
  1390                                                     ]
  1429                                                     ]
  1391                                             ]) 
  1430                                             ]) 
  1392                                                 ifTrue:[
  1431                                                 ifTrue:[
  1393                                                     [
  1432                                                     [
  1394                                                         self recordMatch:#( 36 ).
  1433                                                         self recordMatch:#( 37 ).
  1395                                                         self step.
  1434                                                         self step.
  1396                                                         (currentCharacter isLetterOrDigit 
  1435                                                         (currentCharacter isLetterOrDigit 
  1397                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1436                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1398                                                     ] whileTrue.
  1437                                                     ] whileTrue.
  1399                                                     ^ self reportLastMatch
  1438                                                     ^ self reportLastMatch
  1400                                                 ].
  1439                                                 ].
  1401                                         (currentCharacter == $i) ifTrue:[
  1440                                         (currentCharacter == $i) ifTrue:[
  1402                                             self recordMatch:#( 36 ).
  1441                                             self recordMatch:#( 37 ).
  1403                                             self step.
  1442                                             self step.
  1404                                             ((currentCharacter between:$- and:$9) 
  1443                                             ((currentCharacter between:$- and:$9) 
  1405                                                 or:[
  1444                                                 or:[
  1406                                                     (currentCharacter between:$A and:$Z) 
  1445                                                     (currentCharacter between:$A and:$Z) 
  1407                                                         or:[
  1446                                                         or:[
  1412                                                                 ]
  1451                                                                 ]
  1413                                                         ]
  1452                                                         ]
  1414                                                 ]) 
  1453                                                 ]) 
  1415                                                     ifTrue:[
  1454                                                     ifTrue:[
  1416                                                         [
  1455                                                         [
  1417                                                             self recordMatch:#( 36 ).
  1456                                                             self recordMatch:#( 37 ).
  1418                                                             self step.
  1457                                                             self step.
  1419                                                             (currentCharacter isLetterOrDigit 
  1458                                                             (currentCharacter isLetterOrDigit 
  1420                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1459                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1421                                                         ] whileTrue.
  1460                                                         ] whileTrue.
  1422                                                         ^ self reportLastMatch
  1461                                                         ^ self reportLastMatch
  1423                                                     ].
  1462                                                     ].
  1424                                             (currentCharacter == $g) ifTrue:[
  1463                                             (currentCharacter == $g) ifTrue:[
  1425                                                 self recordMatch:#( 36 ).
  1464                                                 self recordMatch:#( 37 ).
  1426                                                 self step.
  1465                                                 self step.
  1427                                                 ((currentCharacter between:$- and:$9) 
  1466                                                 ((currentCharacter between:$- and:$9) 
  1428                                                     or:[
  1467                                                     or:[
  1429                                                         (currentCharacter between:$A and:$Z) 
  1468                                                         (currentCharacter between:$A and:$Z) 
  1430                                                             or:[
  1469                                                             or:[
  1435                                                                     ]
  1474                                                                     ]
  1436                                                             ]
  1475                                                             ]
  1437                                                     ]) 
  1476                                                     ]) 
  1438                                                         ifTrue:[
  1477                                                         ifTrue:[
  1439                                                             [
  1478                                                             [
  1440                                                                 self recordMatch:#( 36 ).
  1479                                                                 self recordMatch:#( 37 ).
  1441                                                                 self step.
  1480                                                                 self step.
  1442                                                                 (currentCharacter isLetterOrDigit 
  1481                                                                 (currentCharacter isLetterOrDigit 
  1443                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1482                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1444                                                             ] whileTrue.
  1483                                                             ] whileTrue.
  1445                                                             ^ self reportLastMatch
  1484                                                             ^ self reportLastMatch
  1446                                                         ].
  1485                                                         ].
  1447                                                 (currentCharacter == $n) ifTrue:[
  1486                                                 (currentCharacter == $n) ifTrue:[
  1448                                                     self recordMatch:#( 23 36 ).
  1487                                                     self recordMatch:#( 23 37 ).
  1449                                                     self step.
  1488                                                     self step.
  1450                                                     (currentCharacter isLetterOrDigit 
  1489                                                     (currentCharacter isLetterOrDigit 
  1451                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  1490                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  1452                                                             ifTrue:[
  1491                                                             ifTrue:[
  1453                                                                 [
  1492                                                                 [
  1454                                                                     self recordMatch:#( 36 ).
  1493                                                                     self recordMatch:#( 37 ).
  1455                                                                     self step.
  1494                                                                     self step.
  1456                                                                     (currentCharacter isLetterOrDigit 
  1495                                                                     (currentCharacter isLetterOrDigit 
  1457                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1496                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1458                                                                 ] whileTrue.
  1497                                                                 ] whileTrue.
  1459                                                                 ^ self reportLastMatch
  1498                                                                 ^ self reportLastMatch
  1481             ^ self reportLastMatch
  1520             ^ self reportLastMatch
  1482         ].
  1521         ].
  1483         ^ self reportLastMatch
  1522         ^ self reportLastMatch
  1484     ].
  1523     ].
  1485     (currentCharacter == $f) ifTrue:[
  1524     (currentCharacter == $f) ifTrue:[
  1486         self recordMatch:#( 33 36 ).
  1525         self recordMatch:#( 34 37 ).
  1487         self step.
  1526         self step.
  1488         (currentCharacter isXMLDigit 
  1527         (currentCharacter isXMLDigit 
  1489             or:[
  1528             or:[
  1490                 (currentCharacter between:$A and:$Z) 
  1529                 (currentCharacter between:$A and:$Z) 
  1491                     or:[
  1530                     or:[
  1500                     ]
  1539                     ]
  1501             ]) 
  1540             ]) 
  1502                 ifTrue:[ ^ self scan1 ].
  1541                 ifTrue:[ ^ self scan1 ].
  1503         (currentCharacter between:$- and:$/) ifTrue:[
  1542         (currentCharacter between:$- and:$/) ifTrue:[
  1504             [
  1543             [
  1505                 self recordMatch:#( 36 ).
  1544                 self recordMatch:#( 37 ).
  1506                 self step.
  1545                 self step.
  1507                 (currentCharacter isLetterOrDigit 
  1546                 (currentCharacter isLetterOrDigit 
  1508                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1547                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1509             ] whileTrue.
  1548             ] whileTrue.
  1510             ^ self reportLastMatch
  1549             ^ self reportLastMatch
  1511         ].
  1550         ].
  1512         (currentCharacter == $r) ifTrue:[
  1551         (currentCharacter == $r) ifTrue:[
  1513             self recordMatch:#( 33 36 ).
  1552             self recordMatch:#( 34 37 ).
  1514             self step.
  1553             self step.
  1515             (currentCharacter isXMLDigit 
  1554             (currentCharacter isXMLDigit 
  1516                 or:[
  1555                 or:[
  1517                     (currentCharacter between:$A and:$Z) 
  1556                     (currentCharacter between:$A and:$Z) 
  1518                         or:[
  1557                         or:[
  1524                         ]
  1563                         ]
  1525                 ]) 
  1564                 ]) 
  1526                     ifTrue:[ ^ self scan1 ].
  1565                     ifTrue:[ ^ self scan1 ].
  1527             (currentCharacter between:$- and:$/) ifTrue:[
  1566             (currentCharacter between:$- and:$/) ifTrue:[
  1528                 [
  1567                 [
  1529                     self recordMatch:#( 36 ).
  1568                     self recordMatch:#( 37 ).
  1530                     self step.
  1569                     self step.
  1531                     (currentCharacter isLetterOrDigit 
  1570                     (currentCharacter isLetterOrDigit 
  1532                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1571                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1533                 ] whileTrue.
  1572                 ] whileTrue.
  1534                 ^ self reportLastMatch
  1573                 ^ self reportLastMatch
  1535             ].
  1574             ].
  1536             (currentCharacter == $o) ifTrue:[
  1575             (currentCharacter == $o) ifTrue:[
  1537                 self recordMatch:#( 33 36 ).
  1576                 self recordMatch:#( 34 37 ).
  1538                 self step.
  1577                 self step.
  1539                 ((currentCharacter between:$0 and:$9) 
  1578                 ((currentCharacter between:$0 and:$9) 
  1540                     or:[
  1579                     or:[
  1541                         (currentCharacter between:$A and:$Z) 
  1580                         (currentCharacter between:$A and:$Z) 
  1542                             or:[
  1581                             or:[
  1548                             ]
  1587                             ]
  1549                     ]) 
  1588                     ]) 
  1550                         ifTrue:[ ^ self scan1 ].
  1589                         ifTrue:[ ^ self scan1 ].
  1551                 (currentCharacter between:$- and:$/) ifTrue:[
  1590                 (currentCharacter between:$- and:$/) ifTrue:[
  1552                     [
  1591                     [
  1553                         self recordMatch:#( 36 ).
  1592                         self recordMatch:#( 37 ).
  1554                         self step.
  1593                         self step.
  1555                         (currentCharacter isLetterOrDigit 
  1594                         (currentCharacter isLetterOrDigit 
  1556                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1595                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1557                     ] whileTrue.
  1596                     ] whileTrue.
  1558                     ^ self reportLastMatch
  1597                     ^ self reportLastMatch
  1559                 ].
  1598                 ].
  1560                 (currentCharacter == $m) ifTrue:[
  1599                 (currentCharacter == $m) ifTrue:[
  1561                     self recordMatch:#( 33 36 ).
  1600                     self recordMatch:#( 34 37 ).
  1562                     self step.
  1601                     self step.
  1563                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  1602                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  1564                         ^ self scan1
  1603                         ^ self scan1
  1565                     ].
  1604                     ].
  1566                     (currentCharacter between:$- and:$/) ifTrue:[
  1605                     (currentCharacter between:$- and:$/) ifTrue:[
  1567                         [
  1606                         [
  1568                             self recordMatch:#( 36 ).
  1607                             self recordMatch:#( 37 ).
  1569                             self step.
  1608                             self step.
  1570                             (currentCharacter isLetterOrDigit 
  1609                             (currentCharacter isLetterOrDigit 
  1571                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1610                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1572                         ] whileTrue.
  1611                         ] whileTrue.
  1573                         ^ self reportLastMatch
  1612                         ^ self reportLastMatch
  1574                     ].
  1613                     ].
  1575                     (currentCharacter == $:) ifTrue:[
  1614                     (currentCharacter == $:) ifTrue:[
  1576                         ^ self recordAndReportMatch:#( 9 ).
  1615                         ^ self recordAndReportMatch:#( 10 ).
  1577                     ].
  1616                     ].
  1578                     ^ self reportLastMatch
  1617                     ^ self reportLastMatch
  1579                 ].
  1618                 ].
  1580                 ^ self reportLastMatch
  1619                 ^ self reportLastMatch
  1581             ].
  1620             ].
  1582             ^ self reportLastMatch
  1621             ^ self reportLastMatch
  1583         ].
  1622         ].
  1584         (currentCharacter == $u) ifTrue:[
  1623         (currentCharacter == $u) ifTrue:[
  1585             self recordMatch:#( 33 36 ).
  1624             self recordMatch:#( 34 37 ).
  1586             self step.
  1625             self step.
  1587             ((currentCharacter between:$0 and:$9) 
  1626             ((currentCharacter between:$0 and:$9) 
  1588                 or:[
  1627                 or:[
  1589                     (currentCharacter between:$A and:$Z) 
  1628                     (currentCharacter between:$A and:$Z) 
  1590                         or:[
  1629                         or:[
  1596                         ]
  1635                         ]
  1597                 ]) 
  1636                 ]) 
  1598                     ifTrue:[ ^ self scan1 ].
  1637                     ifTrue:[ ^ self scan1 ].
  1599             (currentCharacter between:$- and:$/) ifTrue:[
  1638             (currentCharacter between:$- and:$/) ifTrue:[
  1600                 [
  1639                 [
  1601                     self recordMatch:#( 36 ).
  1640                     self recordMatch:#( 37 ).
  1602                     self step.
  1641                     self step.
  1603                     (currentCharacter isLetterOrDigit 
  1642                     (currentCharacter isLetterOrDigit 
  1604                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1643                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1605                 ] whileTrue.
  1644                 ] whileTrue.
  1606                 ^ self reportLastMatch
  1645                 ^ self reportLastMatch
  1607             ].
  1646             ].
  1608             (currentCharacter == $n) ifTrue:[
  1647             (currentCharacter == $n) ifTrue:[
  1609                 self recordMatch:#( 33 36 ).
  1648                 self recordMatch:#( 34 37 ).
  1610                 self step.
  1649                 self step.
  1611                 ((currentCharacter between:$0 and:$9) 
  1650                 ((currentCharacter between:$0 and:$9) 
  1612                     or:[
  1651                     or:[
  1613                         (currentCharacter between:$A and:$Z) 
  1652                         (currentCharacter between:$A and:$Z) 
  1614                             or:[
  1653                             or:[
  1620                             ]
  1659                             ]
  1621                     ]) 
  1660                     ]) 
  1622                         ifTrue:[ ^ self scan1 ].
  1661                         ifTrue:[ ^ self scan1 ].
  1623                 (currentCharacter between:$- and:$/) ifTrue:[
  1662                 (currentCharacter between:$- and:$/) ifTrue:[
  1624                     [
  1663                     [
  1625                         self recordMatch:#( 36 ).
  1664                         self recordMatch:#( 37 ).
  1626                         self step.
  1665                         self step.
  1627                         (currentCharacter isLetterOrDigit 
  1666                         (currentCharacter isLetterOrDigit 
  1628                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1667                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1629                     ] whileTrue.
  1668                     ] whileTrue.
  1630                     ^ self reportLastMatch
  1669                     ^ self reportLastMatch
  1631                 ].
  1670                 ].
  1632                 (currentCharacter == $c) ifTrue:[
  1671                 (currentCharacter == $c) ifTrue:[
  1633                     self recordMatch:#( 33 36 ).
  1672                     self recordMatch:#( 34 37 ).
  1634                     self step.
  1673                     self step.
  1635                     ((currentCharacter between:$0 and:$9) 
  1674                     ((currentCharacter between:$0 and:$9) 
  1636                         or:[
  1675                         or:[
  1637                             (currentCharacter between:$A and:$Z) 
  1676                             (currentCharacter between:$A and:$Z) 
  1638                                 or:[
  1677                                 or:[
  1644                                 ]
  1683                                 ]
  1645                         ]) 
  1684                         ]) 
  1646                             ifTrue:[ ^ self scan1 ].
  1685                             ifTrue:[ ^ self scan1 ].
  1647                     (currentCharacter between:$- and:$/) ifTrue:[
  1686                     (currentCharacter between:$- and:$/) ifTrue:[
  1648                         [
  1687                         [
  1649                             self recordMatch:#( 36 ).
  1688                             self recordMatch:#( 37 ).
  1650                             self step.
  1689                             self step.
  1651                             (currentCharacter isLetterOrDigit 
  1690                             (currentCharacter isLetterOrDigit 
  1652                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1691                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1653                         ] whileTrue.
  1692                         ] whileTrue.
  1654                         ^ self reportLastMatch
  1693                         ^ self reportLastMatch
  1655                     ].
  1694                     ].
  1656                     (currentCharacter == $t) ifTrue:[
  1695                     (currentCharacter == $t) ifTrue:[
  1657                         self recordMatch:#( 33 36 ).
  1696                         self recordMatch:#( 34 37 ).
  1658                         self step.
  1697                         self step.
  1659                         (currentCharacter isXMLDigit 
  1698                         (currentCharacter isXMLDigit 
  1660                             or:[
  1699                             or:[
  1661                                 (currentCharacter between:$A and:$Z) 
  1700                                 (currentCharacter between:$A and:$Z) 
  1662                                     or:[
  1701                                     or:[
  1668                                     ]
  1707                                     ]
  1669                             ]) 
  1708                             ]) 
  1670                                 ifTrue:[ ^ self scan1 ].
  1709                                 ifTrue:[ ^ self scan1 ].
  1671                         (currentCharacter between:$- and:$/) ifTrue:[
  1710                         (currentCharacter between:$- and:$/) ifTrue:[
  1672                             [
  1711                             [
  1673                                 self recordMatch:#( 36 ).
  1712                                 self recordMatch:#( 37 ).
  1674                                 self step.
  1713                                 self step.
  1675                                 (currentCharacter isLetterOrDigit 
  1714                                 (currentCharacter isLetterOrDigit 
  1676                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1715                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1677                             ] whileTrue.
  1716                             ] whileTrue.
  1678                             ^ self reportLastMatch
  1717                             ^ self reportLastMatch
  1679                         ].
  1718                         ].
  1680                         (currentCharacter == $i) ifTrue:[
  1719                         (currentCharacter == $i) ifTrue:[
  1681                             self recordMatch:#( 33 36 ).
  1720                             self recordMatch:#( 34 37 ).
  1682                             self step.
  1721                             self step.
  1683                             (currentCharacter isXMLDigit 
  1722                             (currentCharacter isXMLDigit 
  1684                                 or:[
  1723                                 or:[
  1685                                     (currentCharacter between:$A and:$Z) 
  1724                                     (currentCharacter between:$A and:$Z) 
  1686                                         or:[
  1725                                         or:[
  1692                                         ]
  1731                                         ]
  1693                                 ]) 
  1732                                 ]) 
  1694                                     ifTrue:[ ^ self scan1 ].
  1733                                     ifTrue:[ ^ self scan1 ].
  1695                             (currentCharacter between:$- and:$/) ifTrue:[
  1734                             (currentCharacter between:$- and:$/) ifTrue:[
  1696                                 [
  1735                                 [
  1697                                     self recordMatch:#( 36 ).
  1736                                     self recordMatch:#( 37 ).
  1698                                     self step.
  1737                                     self step.
  1699                                     (currentCharacter isLetterOrDigit 
  1738                                     (currentCharacter isLetterOrDigit 
  1700                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1739                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1701                                 ] whileTrue.
  1740                                 ] whileTrue.
  1702                                 ^ self reportLastMatch
  1741                                 ^ self reportLastMatch
  1703                             ].
  1742                             ].
  1704                             (currentCharacter == $o) ifTrue:[
  1743                             (currentCharacter == $o) ifTrue:[
  1705                                 self recordMatch:#( 33 36 ).
  1744                                 self recordMatch:#( 34 37 ).
  1706                                 self step.
  1745                                 self step.
  1707                                 ((currentCharacter between:$0 and:$9) 
  1746                                 ((currentCharacter between:$0 and:$9) 
  1708                                     or:[
  1747                                     or:[
  1709                                         (currentCharacter between:$A and:$Z) 
  1748                                         (currentCharacter between:$A and:$Z) 
  1710                                             or:[
  1749                                             or:[
  1716                                             ]
  1755                                             ]
  1717                                     ]) 
  1756                                     ]) 
  1718                                         ifTrue:[ ^ self scan1 ].
  1757                                         ifTrue:[ ^ self scan1 ].
  1719                                 (currentCharacter between:$- and:$/) ifTrue:[
  1758                                 (currentCharacter between:$- and:$/) ifTrue:[
  1720                                     [
  1759                                     [
  1721                                         self recordMatch:#( 36 ).
  1760                                         self recordMatch:#( 37 ).
  1722                                         self step.
  1761                                         self step.
  1723                                         (currentCharacter isLetterOrDigit 
  1762                                         (currentCharacter isLetterOrDigit 
  1724                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1763                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1725                                     ] whileTrue.
  1764                                     ] whileTrue.
  1726                                     ^ self reportLastMatch
  1765                                     ^ self reportLastMatch
  1727                                 ].
  1766                                 ].
  1728                                 (currentCharacter == $n) ifTrue:[
  1767                                 (currentCharacter == $n) ifTrue:[
  1729                                     self recordMatch:#( 33 36 ).
  1768                                     self recordMatch:#( 34 37 ).
  1730                                     self step.
  1769                                     self step.
  1731                                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  1770                                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  1732                                         ^ self scan1
  1771                                         ^ self scan1
  1733                                     ].
  1772                                     ].
  1734                                     (currentCharacter between:$. and:$/) ifTrue:[
  1773                                     (currentCharacter between:$. and:$/) ifTrue:[
  1735                                         [
  1774                                         [
  1736                                             self recordMatch:#( 36 ).
  1775                                             self recordMatch:#( 37 ).
  1737                                             self step.
  1776                                             self step.
  1738                                             (currentCharacter isLetterOrDigit 
  1777                                             (currentCharacter isLetterOrDigit 
  1739                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1778                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1740                                         ] whileTrue.
  1779                                         ] whileTrue.
  1741                                         ^ self reportLastMatch
  1780                                         ^ self reportLastMatch
  1742                                     ].
  1781                                     ].
  1743                                     (currentCharacter == $-) ifTrue:[
  1782                                     (currentCharacter == $-) ifTrue:[
  1744                                         self recordMatch:#( 36 ).
  1783                                         self recordMatch:#( 37 ).
  1745                                         self step.
  1784                                         self step.
  1746                                         ((currentCharacter between:$- and:$9) 
  1785                                         ((currentCharacter between:$- and:$9) 
  1747                                             or:[
  1786                                             or:[
  1748                                                 (currentCharacter between:$A and:$Z) 
  1787                                                 (currentCharacter between:$A and:$Z) 
  1749                                                     or:[
  1788                                                     or:[
  1754                                                             ]
  1793                                                             ]
  1755                                                     ]
  1794                                                     ]
  1756                                             ]) 
  1795                                             ]) 
  1757                                                 ifTrue:[
  1796                                                 ifTrue:[
  1758                                                     [
  1797                                                     [
  1759                                                         self recordMatch:#( 36 ).
  1798                                                         self recordMatch:#( 37 ).
  1760                                                         self step.
  1799                                                         self step.
  1761                                                         (currentCharacter isLetterOrDigit 
  1800                                                         (currentCharacter isLetterOrDigit 
  1762                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1801                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1763                                                     ] whileTrue.
  1802                                                     ] whileTrue.
  1764                                                     ^ self reportLastMatch
  1803                                                     ^ self reportLastMatch
  1765                                                 ].
  1804                                                 ].
  1766                                         (currentCharacter == $t) ifTrue:[
  1805                                         (currentCharacter == $t) ifTrue:[
  1767                                             self recordMatch:#( 36 ).
  1806                                             self recordMatch:#( 37 ).
  1768                                             self step.
  1807                                             self step.
  1769                                             ((currentCharacter between:$- and:$9) 
  1808                                             ((currentCharacter between:$- and:$9) 
  1770                                                 or:[
  1809                                                 or:[
  1771                                                     (currentCharacter between:$A and:$Z) 
  1810                                                     (currentCharacter between:$A and:$Z) 
  1772                                                         or:[
  1811                                                         or:[
  1774                                                                 or:[ (currentCharacter between:$a and:$x) or:[ currentCharacter == $z ] ]
  1813                                                                 or:[ (currentCharacter between:$a and:$x) or:[ currentCharacter == $z ] ]
  1775                                                         ]
  1814                                                         ]
  1776                                                 ]) 
  1815                                                 ]) 
  1777                                                     ifTrue:[
  1816                                                     ifTrue:[
  1778                                                         [
  1817                                                         [
  1779                                                             self recordMatch:#( 36 ).
  1818                                                             self recordMatch:#( 37 ).
  1780                                                             self step.
  1819                                                             self step.
  1781                                                             (currentCharacter isLetterOrDigit 
  1820                                                             (currentCharacter isLetterOrDigit 
  1782                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1821                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1783                                                         ] whileTrue.
  1822                                                         ] whileTrue.
  1784                                                         ^ self reportLastMatch
  1823                                                         ^ self reportLastMatch
  1785                                                     ].
  1824                                                     ].
  1786                                             (currentCharacter == $y) ifTrue:[
  1825                                             (currentCharacter == $y) ifTrue:[
  1787                                                 self recordMatch:#( 36 ).
  1826                                                 self recordMatch:#( 37 ).
  1788                                                 self step.
  1827                                                 self step.
  1789                                                 ((currentCharacter between:$- and:$9) 
  1828                                                 ((currentCharacter between:$- and:$9) 
  1790                                                     or:[
  1829                                                     or:[
  1791                                                         (currentCharacter between:$A and:$Z) 
  1830                                                         (currentCharacter between:$A and:$Z) 
  1792                                                             or:[
  1831                                                             or:[
  1797                                                                     ]
  1836                                                                     ]
  1798                                                             ]
  1837                                                             ]
  1799                                                     ]) 
  1838                                                     ]) 
  1800                                                         ifTrue:[
  1839                                                         ifTrue:[
  1801                                                             [
  1840                                                             [
  1802                                                                 self recordMatch:#( 36 ).
  1841                                                                 self recordMatch:#( 37 ).
  1803                                                                 self step.
  1842                                                                 self step.
  1804                                                                 (currentCharacter isLetterOrDigit 
  1843                                                                 (currentCharacter isLetterOrDigit 
  1805                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1844                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1806                                                             ] whileTrue.
  1845                                                             ] whileTrue.
  1807                                                             ^ self reportLastMatch
  1846                                                             ^ self reportLastMatch
  1808                                                         ].
  1847                                                         ].
  1809                                                 (currentCharacter == $p) ifTrue:[
  1848                                                 (currentCharacter == $p) ifTrue:[
  1810                                                     self recordMatch:#( 36 ).
  1849                                                     self recordMatch:#( 37 ).
  1811                                                     self step.
  1850                                                     self step.
  1812                                                     (currentCharacter isXMLDigit 
  1851                                                     (currentCharacter isXMLDigit 
  1813                                                         or:[
  1852                                                         or:[
  1814                                                             (currentCharacter between:$- and:$/) 
  1853                                                             (currentCharacter between:$- and:$/) 
  1815                                                                 or:[
  1854                                                                 or:[
  1823                                                                         ]
  1862                                                                         ]
  1824                                                                 ]
  1863                                                                 ]
  1825                                                         ]) 
  1864                                                         ]) 
  1826                                                             ifTrue:[
  1865                                                             ifTrue:[
  1827                                                                 [
  1866                                                                 [
  1828                                                                     self recordMatch:#( 36 ).
  1867                                                                     self recordMatch:#( 37 ).
  1829                                                                     self step.
  1868                                                                     self step.
  1830                                                                     (currentCharacter isLetterOrDigit 
  1869                                                                     (currentCharacter isLetterOrDigit 
  1831                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1870                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1832                                                                 ] whileTrue.
  1871                                                                 ] whileTrue.
  1833                                                                 ^ self reportLastMatch
  1872                                                                 ^ self reportLastMatch
  1834                                                             ].
  1873                                                             ].
  1835                                                     (currentCharacter == $e) ifTrue:[
  1874                                                     (currentCharacter == $e) ifTrue:[
  1836                                                         self recordMatch:#( 1 36 ).
  1875                                                         self recordMatch:#( 2 37 ).
  1837                                                         self step.
  1876                                                         self step.
  1838                                                         (currentCharacter isLetterOrDigit 
  1877                                                         (currentCharacter isLetterOrDigit 
  1839                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  1878                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  1840                                                                 ifTrue:[
  1879                                                                 ifTrue:[
  1841                                                                     [
  1880                                                                     [
  1842                                                                         self recordMatch:#( 36 ).
  1881                                                                         self recordMatch:#( 37 ).
  1843                                                                         self step.
  1882                                                                         self step.
  1844                                                                         (currentCharacter isLetterOrDigit 
  1883                                                                         (currentCharacter isLetterOrDigit 
  1845                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1884                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1846                                                                     ] whileTrue.
  1885                                                                     ] whileTrue.
  1847                                                                     ^ self reportLastMatch
  1886                                                                     ^ self reportLastMatch
  1871             ^ self reportLastMatch
  1910             ^ self reportLastMatch
  1872         ].
  1911         ].
  1873         ^ self reportLastMatch
  1912         ^ self reportLastMatch
  1874     ].
  1913     ].
  1875     (currentCharacter == $p) ifTrue:[
  1914     (currentCharacter == $p) ifTrue:[
  1876         self recordMatch:#( 33 36 ).
  1915         self recordMatch:#( 34 37 ).
  1877         self step.
  1916         self step.
  1878         (currentCharacter isXMLDigit 
  1917         (currentCharacter isXMLDigit 
  1879             or:[
  1918             or:[
  1880                 (currentCharacter between:$A and:$Z) 
  1919                 (currentCharacter between:$A and:$Z) 
  1881                     or:[
  1920                     or:[
  1887                     ]
  1926                     ]
  1888             ]) 
  1927             ]) 
  1889                 ifTrue:[ ^ self scan1 ].
  1928                 ifTrue:[ ^ self scan1 ].
  1890         (currentCharacter between:$- and:$/) ifTrue:[
  1929         (currentCharacter between:$- and:$/) ifTrue:[
  1891             [
  1930             [
  1892                 self recordMatch:#( 36 ).
  1931                 self recordMatch:#( 37 ).
  1893                 self step.
  1932                 self step.
  1894                 (currentCharacter isLetterOrDigit 
  1933                 (currentCharacter isLetterOrDigit 
  1895                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1934                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1896             ] whileTrue.
  1935             ] whileTrue.
  1897             ^ self reportLastMatch
  1936             ^ self reportLastMatch
  1898         ].
  1937         ].
  1899         (currentCharacter == $o) ifTrue:[
  1938         (currentCharacter == $o) ifTrue:[
  1900             self recordMatch:#( 33 36 ).
  1939             self recordMatch:#( 34 37 ).
  1901             self step.
  1940             self step.
  1902             (currentCharacter isXMLDigit 
  1941             (currentCharacter isXMLDigit 
  1903                 or:[
  1942                 or:[
  1904                     (currentCharacter between:$A and:$Z) 
  1943                     (currentCharacter between:$A and:$Z) 
  1905                         or:[
  1944                         or:[
  1911                         ]
  1950                         ]
  1912                 ]) 
  1951                 ]) 
  1913                     ifTrue:[ ^ self scan1 ].
  1952                     ifTrue:[ ^ self scan1 ].
  1914             (currentCharacter between:$- and:$/) ifTrue:[
  1953             (currentCharacter between:$- and:$/) ifTrue:[
  1915                 [
  1954                 [
  1916                     self recordMatch:#( 36 ).
  1955                     self recordMatch:#( 37 ).
  1917                     self step.
  1956                     self step.
  1918                     (currentCharacter isLetterOrDigit 
  1957                     (currentCharacter isLetterOrDigit 
  1919                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1958                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1920                 ] whileTrue.
  1959                 ] whileTrue.
  1921                 ^ self reportLastMatch
  1960                 ^ self reportLastMatch
  1922             ].
  1961             ].
  1923             (currentCharacter == $i) ifTrue:[
  1962             (currentCharacter == $i) ifTrue:[
  1924                 self recordMatch:#( 33 36 ).
  1963                 self recordMatch:#( 34 37 ).
  1925                 self step.
  1964                 self step.
  1926                 ((currentCharacter between:$0 and:$9) 
  1965                 ((currentCharacter between:$0 and:$9) 
  1927                     or:[
  1966                     or:[
  1928                         (currentCharacter between:$A and:$Z) 
  1967                         (currentCharacter between:$A and:$Z) 
  1929                             or:[
  1968                             or:[
  1935                             ]
  1974                             ]
  1936                     ]) 
  1975                     ]) 
  1937                         ifTrue:[ ^ self scan1 ].
  1976                         ifTrue:[ ^ self scan1 ].
  1938                 (currentCharacter between:$- and:$/) ifTrue:[
  1977                 (currentCharacter between:$- and:$/) ifTrue:[
  1939                     [
  1978                     [
  1940                         self recordMatch:#( 36 ).
  1979                         self recordMatch:#( 37 ).
  1941                         self step.
  1980                         self step.
  1942                         (currentCharacter isLetterOrDigit 
  1981                         (currentCharacter isLetterOrDigit 
  1943                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1982                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1944                     ] whileTrue.
  1983                     ] whileTrue.
  1945                     ^ self reportLastMatch
  1984                     ^ self reportLastMatch
  1946                 ].
  1985                 ].
  1947                 (currentCharacter == $n) ifTrue:[
  1986                 (currentCharacter == $n) ifTrue:[
  1948                     self recordMatch:#( 33 36 ).
  1987                     self recordMatch:#( 34 37 ).
  1949                     self step.
  1988                     self step.
  1950                     ((currentCharacter between:$0 and:$9) 
  1989                     ((currentCharacter between:$0 and:$9) 
  1951                         or:[
  1990                         or:[
  1952                             (currentCharacter between:$A and:$Z) 
  1991                             (currentCharacter between:$A and:$Z) 
  1953                                 or:[
  1992                                 or:[
  1959                                 ]
  1998                                 ]
  1960                         ]) 
  1999                         ]) 
  1961                             ifTrue:[ ^ self scan1 ].
  2000                             ifTrue:[ ^ self scan1 ].
  1962                     (currentCharacter between:$- and:$/) ifTrue:[
  2001                     (currentCharacter between:$- and:$/) ifTrue:[
  1963                         [
  2002                         [
  1964                             self recordMatch:#( 36 ).
  2003                             self recordMatch:#( 37 ).
  1965                             self step.
  2004                             self step.
  1966                             (currentCharacter isLetterOrDigit 
  2005                             (currentCharacter isLetterOrDigit 
  1967                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2006                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1968                         ] whileTrue.
  2007                         ] whileTrue.
  1969                         ^ self reportLastMatch
  2008                         ^ self reportLastMatch
  1970                     ].
  2009                     ].
  1971                     (currentCharacter == $t) ifTrue:[
  2010                     (currentCharacter == $t) ifTrue:[
  1972                         self recordMatch:#( 33 36 ).
  2011                         self recordMatch:#( 34 37 ).
  1973                         self step.
  2012                         self step.
  1974                         (currentCharacter isXMLDigit 
  2013                         (currentCharacter isXMLDigit 
  1975                             or:[
  2014                             or:[
  1976                                 (currentCharacter between:$A and:$Z) 
  2015                                 (currentCharacter between:$A and:$Z) 
  1977                                     or:[
  2016                                     or:[
  1983                                     ]
  2022                                     ]
  1984                             ]) 
  2023                             ]) 
  1985                                 ifTrue:[ ^ self scan1 ].
  2024                                 ifTrue:[ ^ self scan1 ].
  1986                         (currentCharacter between:$- and:$/) ifTrue:[
  2025                         (currentCharacter between:$- and:$/) ifTrue:[
  1987                             [
  2026                             [
  1988                                 self recordMatch:#( 36 ).
  2027                                 self recordMatch:#( 37 ).
  1989                                 self step.
  2028                                 self step.
  1990                                 (currentCharacter isLetterOrDigit 
  2029                                 (currentCharacter isLetterOrDigit 
  1991                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2030                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  1992                             ] whileTrue.
  2031                             ] whileTrue.
  1993                             ^ self reportLastMatch
  2032                             ^ self reportLastMatch
  1994                         ].
  2033                         ].
  1995                         (currentCharacter == $e) ifTrue:[
  2034                         (currentCharacter == $e) ifTrue:[
  1996                             self recordMatch:#( 33 36 ).
  2035                             self recordMatch:#( 34 37 ).
  1997                             self step.
  2036                             self step.
  1998                             ((currentCharacter between:$0 and:$9) 
  2037                             ((currentCharacter between:$0 and:$9) 
  1999                                 or:[
  2038                                 or:[
  2000                                     (currentCharacter between:$A and:$Z) 
  2039                                     (currentCharacter between:$A and:$Z) 
  2001                                         or:[
  2040                                         or:[
  2007                                         ]
  2046                                         ]
  2008                                 ]) 
  2047                                 ]) 
  2009                                     ifTrue:[ ^ self scan1 ].
  2048                                     ifTrue:[ ^ self scan1 ].
  2010                             (currentCharacter between:$- and:$/) ifTrue:[
  2049                             (currentCharacter between:$- and:$/) ifTrue:[
  2011                                 [
  2050                                 [
  2012                                     self recordMatch:#( 36 ).
  2051                                     self recordMatch:#( 37 ).
  2013                                     self step.
  2052                                     self step.
  2014                                     (currentCharacter isLetterOrDigit 
  2053                                     (currentCharacter isLetterOrDigit 
  2015                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2054                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2016                                 ] whileTrue.
  2055                                 ] whileTrue.
  2017                                 ^ self reportLastMatch
  2056                                 ^ self reportLastMatch
  2018                             ].
  2057                             ].
  2019                             (currentCharacter == $r) ifTrue:[
  2058                             (currentCharacter == $r) ifTrue:[
  2020                                 self recordMatch:#( 33 36 ).
  2059                                 self recordMatch:#( 34 37 ).
  2021                                 self step.
  2060                                 self step.
  2022                                 (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2061                                 (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2023                                     ^ self scan1
  2062                                     ^ self scan1
  2024                                 ].
  2063                                 ].
  2025                                 (currentCharacter between:$. and:$/) ifTrue:[
  2064                                 (currentCharacter between:$. and:$/) ifTrue:[
  2026                                     [
  2065                                     [
  2027                                         self recordMatch:#( 36 ).
  2066                                         self recordMatch:#( 37 ).
  2028                                         self step.
  2067                                         self step.
  2029                                         (currentCharacter isLetterOrDigit 
  2068                                         (currentCharacter isLetterOrDigit 
  2030                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2069                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2031                                     ] whileTrue.
  2070                                     ] whileTrue.
  2032                                     ^ self reportLastMatch
  2071                                     ^ self reportLastMatch
  2033                                 ].
  2072                                 ].
  2034                                 (currentCharacter == $-) ifTrue:[
  2073                                 (currentCharacter == $-) ifTrue:[
  2035                                     self recordMatch:#( 36 ).
  2074                                     self recordMatch:#( 37 ).
  2036                                     self step.
  2075                                     self step.
  2037                                     ((currentCharacter between:$- and:$9) 
  2076                                     ((currentCharacter between:$- and:$9) 
  2038                                         or:[
  2077                                         or:[
  2039                                             (currentCharacter between:$A and:$Z) 
  2078                                             (currentCharacter between:$A and:$Z) 
  2040                                                 or:[
  2079                                                 or:[
  2045                                                         ]
  2084                                                         ]
  2046                                                 ]
  2085                                                 ]
  2047                                         ]) 
  2086                                         ]) 
  2048                                             ifTrue:[
  2087                                             ifTrue:[
  2049                                                 [
  2088                                                 [
  2050                                                     self recordMatch:#( 36 ).
  2089                                                     self recordMatch:#( 37 ).
  2051                                                     self step.
  2090                                                     self step.
  2052                                                     (currentCharacter isLetterOrDigit 
  2091                                                     (currentCharacter isLetterOrDigit 
  2053                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2092                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2054                                                 ] whileTrue.
  2093                                                 ] whileTrue.
  2055                                                 ^ self reportLastMatch
  2094                                                 ^ self reportLastMatch
  2056                                             ].
  2095                                             ].
  2057                                     (currentCharacter == $t) ifTrue:[
  2096                                     (currentCharacter == $t) ifTrue:[
  2058                                         self recordMatch:#( 36 ).
  2097                                         self recordMatch:#( 37 ).
  2059                                         self step.
  2098                                         self step.
  2060                                         (currentCharacter isXMLDigit 
  2099                                         (currentCharacter isXMLDigit 
  2061                                             or:[
  2100                                             or:[
  2062                                                 (currentCharacter between:$- and:$/) 
  2101                                                 (currentCharacter between:$- and:$/) 
  2063                                                     or:[
  2102                                                     or:[
  2071                                                             ]
  2110                                                             ]
  2072                                                     ]
  2111                                                     ]
  2073                                             ]) 
  2112                                             ]) 
  2074                                                 ifTrue:[
  2113                                                 ifTrue:[
  2075                                                     [
  2114                                                     [
  2076                                                         self recordMatch:#( 36 ).
  2115                                                         self recordMatch:#( 37 ).
  2077                                                         self step.
  2116                                                         self step.
  2078                                                         (currentCharacter isLetterOrDigit 
  2117                                                         (currentCharacter isLetterOrDigit 
  2079                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2118                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2080                                                     ] whileTrue.
  2119                                                     ] whileTrue.
  2081                                                     ^ self reportLastMatch
  2120                                                     ^ self reportLastMatch
  2082                                                 ].
  2121                                                 ].
  2083                                         (currentCharacter == $o) ifTrue:[
  2122                                         (currentCharacter == $o) ifTrue:[
  2084                                             self recordMatch:#( 32 36 ).
  2123                                             self recordMatch:#( 33 37 ).
  2085                                             self step.
  2124                                             self step.
  2086                                             (currentCharacter isLetterOrDigit 
  2125                                             (currentCharacter isLetterOrDigit 
  2087                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  2126                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  2088                                                     ifTrue:[
  2127                                                     ifTrue:[
  2089                                                         [
  2128                                                         [
  2090                                                             self recordMatch:#( 36 ).
  2129                                                             self recordMatch:#( 37 ).
  2091                                                             self step.
  2130                                                             self step.
  2092                                                             (currentCharacter isLetterOrDigit 
  2131                                                             (currentCharacter isLetterOrDigit 
  2093                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2132                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2094                                                         ] whileTrue.
  2133                                                         ] whileTrue.
  2095                                                         ^ self reportLastMatch
  2134                                                         ^ self reportLastMatch
  2113             ^ self reportLastMatch
  2152             ^ self reportLastMatch
  2114         ].
  2153         ].
  2115         ^ self reportLastMatch
  2154         ^ self reportLastMatch
  2116     ].
  2155     ].
  2117     (currentCharacter == $s) ifTrue:[
  2156     (currentCharacter == $s) ifTrue:[
  2118         self recordMatch:#( 33 36 ).
  2157         self recordMatch:#( 34 37 ).
  2119         self step.
  2158         self step.
  2120         ((currentCharacter between:$0 and:$9) 
  2159         ((currentCharacter between:$0 and:$9) 
  2121             or:[
  2160             or:[
  2122                 (currentCharacter between:$A and:$Z) 
  2161                 (currentCharacter between:$A and:$Z) 
  2123                     or:[
  2162                     or:[
  2129                     ]
  2168                     ]
  2130             ]) 
  2169             ]) 
  2131                 ifTrue:[ ^ self scan1 ].
  2170                 ifTrue:[ ^ self scan1 ].
  2132         (currentCharacter between:$- and:$/) ifTrue:[
  2171         (currentCharacter between:$- and:$/) ifTrue:[
  2133             [
  2172             [
  2134                 self recordMatch:#( 36 ).
  2173                 self recordMatch:#( 37 ).
  2135                 self step.
  2174                 self step.
  2136                 (currentCharacter isLetterOrDigit 
  2175                 (currentCharacter isLetterOrDigit 
  2137                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2176                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2138             ] whileTrue.
  2177             ] whileTrue.
  2139             ^ self reportLastMatch
  2178             ^ self reportLastMatch
  2140         ].
  2179         ].
  2141         (currentCharacter == $t) ifTrue:[
  2180         (currentCharacter == $t) ifTrue:[
  2142             self recordMatch:#( 33 36 ).
  2181             self recordMatch:#( 34 37 ).
  2143             self step.
  2182             self step.
  2144             ((currentCharacter between:$0 and:$9) 
  2183             ((currentCharacter between:$0 and:$9) 
  2145                 or:[
  2184                 or:[
  2146                     (currentCharacter between:$A and:$Z) 
  2185                     (currentCharacter between:$A and:$Z) 
  2147                         or:[
  2186                         or:[
  2153                         ]
  2192                         ]
  2154                 ]) 
  2193                 ]) 
  2155                     ifTrue:[ ^ self scan1 ].
  2194                     ifTrue:[ ^ self scan1 ].
  2156             (currentCharacter between:$- and:$/) ifTrue:[
  2195             (currentCharacter between:$- and:$/) ifTrue:[
  2157                 [
  2196                 [
  2158                     self recordMatch:#( 36 ).
  2197                     self recordMatch:#( 37 ).
  2159                     self step.
  2198                     self step.
  2160                     (currentCharacter isLetterOrDigit 
  2199                     (currentCharacter isLetterOrDigit 
  2161                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2200                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2162                 ] whileTrue.
  2201                 ] whileTrue.
  2163                 ^ self reportLastMatch
  2202                 ^ self reportLastMatch
  2164             ].
  2203             ].
  2165             (currentCharacter == $r) ifTrue:[
  2204             (currentCharacter == $r) ifTrue:[
  2166                 self recordMatch:#( 33 36 ).
  2205                 self recordMatch:#( 34 37 ).
  2167                 self step.
  2206                 self step.
  2168                 (currentCharacter isXMLDigit 
  2207                 (currentCharacter isXMLDigit 
  2169                     or:[
  2208                     or:[
  2170                         (currentCharacter between:$A and:$Z) 
  2209                         (currentCharacter between:$A and:$Z) 
  2171                             or:[
  2210                             or:[
  2177                             ]
  2216                             ]
  2178                     ]) 
  2217                     ]) 
  2179                         ifTrue:[ ^ self scan1 ].
  2218                         ifTrue:[ ^ self scan1 ].
  2180                 (currentCharacter between:$- and:$/) ifTrue:[
  2219                 (currentCharacter between:$- and:$/) ifTrue:[
  2181                     [
  2220                     [
  2182                         self recordMatch:#( 36 ).
  2221                         self recordMatch:#( 37 ).
  2183                         self step.
  2222                         self step.
  2184                         (currentCharacter isLetterOrDigit 
  2223                         (currentCharacter isLetterOrDigit 
  2185                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2224                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2186                     ] whileTrue.
  2225                     ] whileTrue.
  2187                     ^ self reportLastMatch
  2226                     ^ self reportLastMatch
  2188                 ].
  2227                 ].
  2189                 (currentCharacter == $u) ifTrue:[
  2228                 (currentCharacter == $u) ifTrue:[
  2190                     self recordMatch:#( 33 36 ).
  2229                     self recordMatch:#( 34 37 ).
  2191                     self step.
  2230                     self step.
  2192                     ((currentCharacter between:$0 and:$9) 
  2231                     ((currentCharacter between:$0 and:$9) 
  2193                         or:[
  2232                         or:[
  2194                             (currentCharacter between:$A and:$Z) 
  2233                             (currentCharacter between:$A and:$Z) 
  2195                                 or:[
  2234                                 or:[
  2201                                 ]
  2240                                 ]
  2202                         ]) 
  2241                         ]) 
  2203                             ifTrue:[ ^ self scan1 ].
  2242                             ifTrue:[ ^ self scan1 ].
  2204                     (currentCharacter between:$- and:$/) ifTrue:[
  2243                     (currentCharacter between:$- and:$/) ifTrue:[
  2205                         [
  2244                         [
  2206                             self recordMatch:#( 36 ).
  2245                             self recordMatch:#( 37 ).
  2207                             self step.
  2246                             self step.
  2208                             (currentCharacter isLetterOrDigit 
  2247                             (currentCharacter isLetterOrDigit 
  2209                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2248                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2210                         ] whileTrue.
  2249                         ] whileTrue.
  2211                         ^ self reportLastMatch
  2250                         ^ self reportLastMatch
  2212                     ].
  2251                     ].
  2213                     (currentCharacter == $c) ifTrue:[
  2252                     (currentCharacter == $c) ifTrue:[
  2214                         self recordMatch:#( 33 36 ).
  2253                         self recordMatch:#( 34 37 ).
  2215                         self step.
  2254                         self step.
  2216                         ((currentCharacter between:$0 and:$9) 
  2255                         ((currentCharacter between:$0 and:$9) 
  2217                             or:[
  2256                             or:[
  2218                                 (currentCharacter between:$A and:$Z) 
  2257                                 (currentCharacter between:$A and:$Z) 
  2219                                     or:[
  2258                                     or:[
  2225                                     ]
  2264                                     ]
  2226                             ]) 
  2265                             ]) 
  2227                                 ifTrue:[ ^ self scan1 ].
  2266                                 ifTrue:[ ^ self scan1 ].
  2228                         (currentCharacter between:$- and:$/) ifTrue:[
  2267                         (currentCharacter between:$- and:$/) ifTrue:[
  2229                             [
  2268                             [
  2230                                 self recordMatch:#( 36 ).
  2269                                 self recordMatch:#( 37 ).
  2231                                 self step.
  2270                                 self step.
  2232                                 (currentCharacter isLetterOrDigit 
  2271                                 (currentCharacter isLetterOrDigit 
  2233                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2272                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2234                             ] whileTrue.
  2273                             ] whileTrue.
  2235                             ^ self reportLastMatch
  2274                             ^ self reportLastMatch
  2236                         ].
  2275                         ].
  2237                         (currentCharacter == $t) ifTrue:[
  2276                         (currentCharacter == $t) ifTrue:[
  2238                             self recordMatch:#( 33 36 ).
  2277                             self recordMatch:#( 34 37 ).
  2239                             self step.
  2278                             self step.
  2240                             (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2279                             (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2241                                 ^ self scan1
  2280                                 ^ self scan1
  2242                             ].
  2281                             ].
  2243                             (currentCharacter between:$. and:$/) ifTrue:[
  2282                             (currentCharacter between:$. and:$/) ifTrue:[
  2244                                 [
  2283                                 [
  2245                                     self recordMatch:#( 36 ).
  2284                                     self recordMatch:#( 37 ).
  2246                                     self step.
  2285                                     self step.
  2247                                     (currentCharacter isLetterOrDigit 
  2286                                     (currentCharacter isLetterOrDigit 
  2248                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2287                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2249                                 ] whileTrue.
  2288                                 ] whileTrue.
  2250                                 ^ self reportLastMatch
  2289                                 ^ self reportLastMatch
  2251                             ].
  2290                             ].
  2252                             (currentCharacter == $-) ifTrue:[
  2291                             (currentCharacter == $-) ifTrue:[
  2253                                 self recordMatch:#( 36 ).
  2292                                 self recordMatch:#( 37 ).
  2254                                 self step.
  2293                                 self step.
  2255                                 ((currentCharacter between:$- and:$9) 
  2294                                 ((currentCharacter between:$- and:$9) 
  2256                                     or:[
  2295                                     or:[
  2257                                         (currentCharacter between:$A and:$Z) 
  2296                                         (currentCharacter between:$A and:$Z) 
  2258                                             or:[
  2297                                             or:[
  2263                                                     ]
  2302                                                     ]
  2264                                             ]
  2303                                             ]
  2265                                     ]) 
  2304                                     ]) 
  2266                                         ifTrue:[
  2305                                         ifTrue:[
  2267                                             [
  2306                                             [
  2268                                                 self recordMatch:#( 36 ).
  2307                                                 self recordMatch:#( 37 ).
  2269                                                 self step.
  2308                                                 self step.
  2270                                                 (currentCharacter isLetterOrDigit 
  2309                                                 (currentCharacter isLetterOrDigit 
  2271                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2310                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2272                                             ] whileTrue.
  2311                                             ] whileTrue.
  2273                                             ^ self reportLastMatch
  2312                                             ^ self reportLastMatch
  2274                                         ].
  2313                                         ].
  2275                                 (currentCharacter == $f) ifTrue:[
  2314                                 (currentCharacter == $f) ifTrue:[
  2276                                     self recordMatch:#( 36 ).
  2315                                     self recordMatch:#( 37 ).
  2277                                     self step.
  2316                                     self step.
  2278                                     (currentCharacter isXMLDigit 
  2317                                     (currentCharacter isXMLDigit 
  2279                                         or:[
  2318                                         or:[
  2280                                             (currentCharacter between:$- and:$/) 
  2319                                             (currentCharacter between:$- and:$/) 
  2281                                                 or:[
  2320                                                 or:[
  2289                                                         ]
  2328                                                         ]
  2290                                                 ]
  2329                                                 ]
  2291                                         ]) 
  2330                                         ]) 
  2292                                             ifTrue:[
  2331                                             ifTrue:[
  2293                                                 [
  2332                                                 [
  2294                                                     self recordMatch:#( 36 ).
  2333                                                     self recordMatch:#( 37 ).
  2295                                                     self step.
  2334                                                     self step.
  2296                                                     (currentCharacter isLetterOrDigit 
  2335                                                     (currentCharacter isLetterOrDigit 
  2297                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2336                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2298                                                 ] whileTrue.
  2337                                                 ] whileTrue.
  2299                                                 ^ self reportLastMatch
  2338                                                 ^ self reportLastMatch
  2300                                             ].
  2339                                             ].
  2301                                     (currentCharacter == $o) ifTrue:[
  2340                                     (currentCharacter == $o) ifTrue:[
  2302                                         self recordMatch:#( 36 ).
  2341                                         self recordMatch:#( 37 ).
  2303                                         self step.
  2342                                         self step.
  2304                                         ((currentCharacter between:$- and:$9) 
  2343                                         ((currentCharacter between:$- and:$9) 
  2305                                             or:[
  2344                                             or:[
  2306                                                 (currentCharacter between:$A and:$Z) 
  2345                                                 (currentCharacter between:$A and:$Z) 
  2307                                                     or:[
  2346                                                     or:[
  2312                                                             ]
  2351                                                             ]
  2313                                                     ]
  2352                                                     ]
  2314                                             ]) 
  2353                                             ]) 
  2315                                                 ifTrue:[
  2354                                                 ifTrue:[
  2316                                                     [
  2355                                                     [
  2317                                                         self recordMatch:#( 36 ).
  2356                                                         self recordMatch:#( 37 ).
  2318                                                         self step.
  2357                                                         self step.
  2319                                                         (currentCharacter isLetterOrDigit 
  2358                                                         (currentCharacter isLetterOrDigit 
  2320                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2359                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2321                                                     ] whileTrue.
  2360                                                     ] whileTrue.
  2322                                                     ^ self reportLastMatch
  2361                                                     ^ self reportLastMatch
  2323                                                 ].
  2362                                                 ].
  2324                                         (currentCharacter == $r) ifTrue:[
  2363                                         (currentCharacter == $r) ifTrue:[
  2325                                             self recordMatch:#( 36 ).
  2364                                             self recordMatch:#( 37 ).
  2326                                             self step.
  2365                                             self step.
  2327                                             (currentCharacter isXMLDigit 
  2366                                             (currentCharacter isXMLDigit 
  2328                                                 or:[
  2367                                                 or:[
  2329                                                     (currentCharacter between:$- and:$/) 
  2368                                                     (currentCharacter between:$- and:$/) 
  2330                                                         or:[
  2369                                                         or:[
  2338                                                                 ]
  2377                                                                 ]
  2339                                                         ]
  2378                                                         ]
  2340                                                 ]) 
  2379                                                 ]) 
  2341                                                     ifTrue:[
  2380                                                     ifTrue:[
  2342                                                         [
  2381                                                         [
  2343                                                             self recordMatch:#( 36 ).
  2382                                                             self recordMatch:#( 37 ).
  2344                                                             self step.
  2383                                                             self step.
  2345                                                             (currentCharacter isLetterOrDigit 
  2384                                                             (currentCharacter isLetterOrDigit 
  2346                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2385                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2347                                                         ] whileTrue.
  2386                                                         ] whileTrue.
  2348                                                         ^ self reportLastMatch
  2387                                                         ^ self reportLastMatch
  2349                                                     ].
  2388                                                     ].
  2350                                             (currentCharacter == $e) ifTrue:[
  2389                                             (currentCharacter == $e) ifTrue:[
  2351                                                 self recordMatch:#( 36 ).
  2390                                                 self recordMatch:#( 37 ).
  2352                                                 self step.
  2391                                                 self step.
  2353                                                 (currentCharacter isXMLDigit 
  2392                                                 (currentCharacter isXMLDigit 
  2354                                                     or:[
  2393                                                     or:[
  2355                                                         (currentCharacter between:$- and:$/) 
  2394                                                         (currentCharacter between:$- and:$/) 
  2356                                                             or:[
  2395                                                             or:[
  2364                                                                     ]
  2403                                                                     ]
  2365                                                             ]
  2404                                                             ]
  2366                                                     ]) 
  2405                                                     ]) 
  2367                                                         ifTrue:[
  2406                                                         ifTrue:[
  2368                                                             [
  2407                                                             [
  2369                                                                 self recordMatch:#( 36 ).
  2408                                                                 self recordMatch:#( 37 ).
  2370                                                                 self step.
  2409                                                                 self step.
  2371                                                                 (currentCharacter isLetterOrDigit 
  2410                                                                 (currentCharacter isLetterOrDigit 
  2372                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2411                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2373                                                             ] whileTrue.
  2412                                                             ] whileTrue.
  2374                                                             ^ self reportLastMatch
  2413                                                             ^ self reportLastMatch
  2375                                                         ].
  2414                                                         ].
  2376                                                 (currentCharacter == $i) ifTrue:[
  2415                                                 (currentCharacter == $i) ifTrue:[
  2377                                                     self recordMatch:#( 36 ).
  2416                                                     self recordMatch:#( 37 ).
  2378                                                     self step.
  2417                                                     self step.
  2379                                                     ((currentCharacter between:$- and:$9) 
  2418                                                     ((currentCharacter between:$- and:$9) 
  2380                                                         or:[
  2419                                                         or:[
  2381                                                             (currentCharacter between:$A and:$Z) 
  2420                                                             (currentCharacter between:$A and:$Z) 
  2382                                                                 or:[
  2421                                                                 or:[
  2387                                                                         ]
  2426                                                                         ]
  2388                                                                 ]
  2427                                                                 ]
  2389                                                         ]) 
  2428                                                         ]) 
  2390                                                             ifTrue:[
  2429                                                             ifTrue:[
  2391                                                                 [
  2430                                                                 [
  2392                                                                     self recordMatch:#( 36 ).
  2431                                                                     self recordMatch:#( 37 ).
  2393                                                                     self step.
  2432                                                                     self step.
  2394                                                                     (currentCharacter isLetterOrDigit 
  2433                                                                     (currentCharacter isLetterOrDigit 
  2395                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2434                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2396                                                                 ] whileTrue.
  2435                                                                 ] whileTrue.
  2397                                                                 ^ self reportLastMatch
  2436                                                                 ^ self reportLastMatch
  2398                                                             ].
  2437                                                             ].
  2399                                                     (currentCharacter == $g) ifTrue:[
  2438                                                     (currentCharacter == $g) ifTrue:[
  2400                                                         self recordMatch:#( 36 ).
  2439                                                         self recordMatch:#( 37 ).
  2401                                                         self step.
  2440                                                         self step.
  2402                                                         ((currentCharacter between:$- and:$9) 
  2441                                                         ((currentCharacter between:$- and:$9) 
  2403                                                             or:[
  2442                                                             or:[
  2404                                                                 (currentCharacter between:$A and:$Z) 
  2443                                                                 (currentCharacter between:$A and:$Z) 
  2405                                                                     or:[
  2444                                                                     or:[
  2410                                                                             ]
  2449                                                                             ]
  2411                                                                     ]
  2450                                                                     ]
  2412                                                             ]) 
  2451                                                             ]) 
  2413                                                                 ifTrue:[
  2452                                                                 ifTrue:[
  2414                                                                     [
  2453                                                                     [
  2415                                                                         self recordMatch:#( 36 ).
  2454                                                                         self recordMatch:#( 37 ).
  2416                                                                         self step.
  2455                                                                         self step.
  2417                                                                         (currentCharacter isLetterOrDigit 
  2456                                                                         (currentCharacter isLetterOrDigit 
  2418                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2457                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2419                                                                     ] whileTrue.
  2458                                                                     ] whileTrue.
  2420                                                                     ^ self reportLastMatch
  2459                                                                     ^ self reportLastMatch
  2421                                                                 ].
  2460                                                                 ].
  2422                                                         (currentCharacter == $n) ifTrue:[
  2461                                                         (currentCharacter == $n) ifTrue:[
  2423                                                             self recordMatch:#( 29 36 ).
  2462                                                             self recordMatch:#( 25 37 ).
  2424                                                             self step.
  2463                                                             self step.
  2425                                                             (currentCharacter isLetterOrDigit 
  2464                                                             (currentCharacter isLetterOrDigit 
  2426                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  2465                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  2427                                                                     ifTrue:[
  2466                                                                     ifTrue:[
  2428                                                                         [
  2467                                                                         [
  2429                                                                             self recordMatch:#( 36 ).
  2468                                                                             self recordMatch:#( 37 ).
  2430                                                                             self step.
  2469                                                                             self step.
  2431                                                                             (currentCharacter isLetterOrDigit 
  2470                                                                             (currentCharacter isLetterOrDigit 
  2432                                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2471                                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2433                                                                         ] whileTrue.
  2472                                                                         ] whileTrue.
  2434                                                                         ^ self reportLastMatch
  2473                                                                         ^ self reportLastMatch
  2460             ^ self reportLastMatch
  2499             ^ self reportLastMatch
  2461         ].
  2500         ].
  2462         ^ self reportLastMatch
  2501         ^ self reportLastMatch
  2463     ].
  2502     ].
  2464     (currentCharacter == $t) ifTrue:[
  2503     (currentCharacter == $t) ifTrue:[
  2465         self recordMatch:#( 33 36 ).
  2504         self recordMatch:#( 34 37 ).
  2466         self step.
  2505         self step.
  2467         ((currentCharacter between:$0 and:$9) 
  2506         ((currentCharacter between:$0 and:$9) 
  2468             or:[
  2507             or:[
  2469                 (currentCharacter between:$A and:$Z) 
  2508                 (currentCharacter between:$A and:$Z) 
  2470                     or:[
  2509                     or:[
  2473                     ]
  2512                     ]
  2474             ]) 
  2513             ]) 
  2475                 ifTrue:[ ^ self scan1 ].
  2514                 ifTrue:[ ^ self scan1 ].
  2476         (currentCharacter between:$- and:$/) ifTrue:[
  2515         (currentCharacter between:$- and:$/) ifTrue:[
  2477             [
  2516             [
  2478                 self recordMatch:#( 36 ).
  2517                 self recordMatch:#( 37 ).
  2479                 self step.
  2518                 self step.
  2480                 (currentCharacter isLetterOrDigit 
  2519                 (currentCharacter isLetterOrDigit 
  2481                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2520                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2482             ] whileTrue.
  2521             ] whileTrue.
  2483             ^ self reportLastMatch
  2522             ^ self reportLastMatch
  2484         ].
  2523         ].
  2485         (currentCharacter == $y) ifTrue:[
  2524         (currentCharacter == $y) ifTrue:[
  2486             self recordMatch:#( 33 36 ).
  2525             self recordMatch:#( 34 37 ).
  2487             self step.
  2526             self step.
  2488             ((currentCharacter between:$0 and:$9) 
  2527             ((currentCharacter between:$0 and:$9) 
  2489                 or:[
  2528                 or:[
  2490                     (currentCharacter between:$A and:$Z) 
  2529                     (currentCharacter between:$A and:$Z) 
  2491                         or:[
  2530                         or:[
  2497                         ]
  2536                         ]
  2498                 ]) 
  2537                 ]) 
  2499                     ifTrue:[ ^ self scan1 ].
  2538                     ifTrue:[ ^ self scan1 ].
  2500             (currentCharacter between:$- and:$/) ifTrue:[
  2539             (currentCharacter between:$- and:$/) ifTrue:[
  2501                 [
  2540                 [
  2502                     self recordMatch:#( 36 ).
  2541                     self recordMatch:#( 37 ).
  2503                     self step.
  2542                     self step.
  2504                     (currentCharacter isLetterOrDigit 
  2543                     (currentCharacter isLetterOrDigit 
  2505                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2544                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2506                 ] whileTrue.
  2545                 ] whileTrue.
  2507                 ^ self reportLastMatch
  2546                 ^ self reportLastMatch
  2508             ].
  2547             ].
  2509             (currentCharacter == $p) ifTrue:[
  2548             (currentCharacter == $p) ifTrue:[
  2510                 self recordMatch:#( 33 36 ).
  2549                 self recordMatch:#( 34 37 ).
  2511                 self step.
  2550                 self step.
  2512                 (currentCharacter isXMLDigit 
  2551                 (currentCharacter isXMLDigit 
  2513                     or:[
  2552                     or:[
  2514                         (currentCharacter between:$A and:$Z) 
  2553                         (currentCharacter between:$A and:$Z) 
  2515                             or:[
  2554                             or:[
  2521                             ]
  2560                             ]
  2522                     ]) 
  2561                     ]) 
  2523                         ifTrue:[ ^ self scan1 ].
  2562                         ifTrue:[ ^ self scan1 ].
  2524                 (currentCharacter between:$- and:$/) ifTrue:[
  2563                 (currentCharacter between:$- and:$/) ifTrue:[
  2525                     [
  2564                     [
  2526                         self recordMatch:#( 36 ).
  2565                         self recordMatch:#( 37 ).
  2527                         self step.
  2566                         self step.
  2528                         (currentCharacter isLetterOrDigit 
  2567                         (currentCharacter isLetterOrDigit 
  2529                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2568                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2530                     ] whileTrue.
  2569                     ] whileTrue.
  2531                     ^ self reportLastMatch
  2570                     ^ self reportLastMatch
  2532                 ].
  2571                 ].
  2533                 (currentCharacter == $e) ifTrue:[
  2572                 (currentCharacter == $e) ifTrue:[
  2534                     self recordMatch:#( 33 36 ).
  2573                     self recordMatch:#( 34 37 ).
  2535                     self step.
  2574                     self step.
  2536                     ((currentCharacter between:$0 and:$9) 
  2575                     ((currentCharacter between:$0 and:$9) 
  2537                         or:[
  2576                         or:[
  2538                             (currentCharacter between:$A and:$Z) 
  2577                             (currentCharacter between:$A and:$Z) 
  2539                                 or:[
  2578                                 or:[
  2545                                 ]
  2584                                 ]
  2546                         ]) 
  2585                         ]) 
  2547                             ifTrue:[ ^ self scan1 ].
  2586                             ifTrue:[ ^ self scan1 ].
  2548                     (currentCharacter between:$- and:$/) ifTrue:[
  2587                     (currentCharacter between:$- and:$/) ifTrue:[
  2549                         [
  2588                         [
  2550                             self recordMatch:#( 36 ).
  2589                             self recordMatch:#( 37 ).
  2551                             self step.
  2590                             self step.
  2552                             (currentCharacter isLetterOrDigit 
  2591                             (currentCharacter isLetterOrDigit 
  2553                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2592                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2554                         ] whileTrue.
  2593                         ] whileTrue.
  2555                         ^ self reportLastMatch
  2594                         ^ self reportLastMatch
  2556                     ].
  2595                     ].
  2557                     (currentCharacter == $d) ifTrue:[
  2596                     (currentCharacter == $d) ifTrue:[
  2558                         self recordMatch:#( 33 36 ).
  2597                         self recordMatch:#( 34 37 ).
  2559                         self step.
  2598                         self step.
  2560                         (currentCharacter isXMLDigit 
  2599                         (currentCharacter isXMLDigit 
  2561                             or:[
  2600                             or:[
  2562                                 (currentCharacter between:$A and:$Z) 
  2601                                 (currentCharacter between:$A and:$Z) 
  2563                                     or:[
  2602                                     or:[
  2569                                     ]
  2608                                     ]
  2570                             ]) 
  2609                             ]) 
  2571                                 ifTrue:[ ^ self scan1 ].
  2610                                 ifTrue:[ ^ self scan1 ].
  2572                         (currentCharacter between:$- and:$/) ifTrue:[
  2611                         (currentCharacter between:$- and:$/) ifTrue:[
  2573                             [
  2612                             [
  2574                                 self recordMatch:#( 36 ).
  2613                                 self recordMatch:#( 37 ).
  2575                                 self step.
  2614                                 self step.
  2576                                 (currentCharacter isLetterOrDigit 
  2615                                 (currentCharacter isLetterOrDigit 
  2577                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2616                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2578                             ] whileTrue.
  2617                             ] whileTrue.
  2579                             ^ self reportLastMatch
  2618                             ^ self reportLastMatch
  2580                         ].
  2619                         ].
  2581                         (currentCharacter == $e) ifTrue:[
  2620                         (currentCharacter == $e) ifTrue:[
  2582                             self recordMatch:#( 33 36 ).
  2621                             self recordMatch:#( 34 37 ).
  2583                             self step.
  2622                             self step.
  2584                             ((currentCharacter between:$0 and:$9) 
  2623                             ((currentCharacter between:$0 and:$9) 
  2585                                 or:[
  2624                                 or:[
  2586                                     (currentCharacter between:$A and:$Z) 
  2625                                     (currentCharacter between:$A and:$Z) 
  2587                                         or:[
  2626                                         or:[
  2593                                         ]
  2632                                         ]
  2594                                 ]) 
  2633                                 ]) 
  2595                                     ifTrue:[ ^ self scan1 ].
  2634                                     ifTrue:[ ^ self scan1 ].
  2596                             (currentCharacter between:$- and:$/) ifTrue:[
  2635                             (currentCharacter between:$- and:$/) ifTrue:[
  2597                                 [
  2636                                 [
  2598                                     self recordMatch:#( 36 ).
  2637                                     self recordMatch:#( 37 ).
  2599                                     self step.
  2638                                     self step.
  2600                                     (currentCharacter isLetterOrDigit 
  2639                                     (currentCharacter isLetterOrDigit 
  2601                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2640                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2602                                 ] whileTrue.
  2641                                 ] whileTrue.
  2603                                 ^ self reportLastMatch
  2642                                 ^ self reportLastMatch
  2604                             ].
  2643                             ].
  2605                             (currentCharacter == $f) ifTrue:[
  2644                             (currentCharacter == $f) ifTrue:[
  2606                                 self recordMatch:#( 33 36 ).
  2645                                 self recordMatch:#( 34 37 ).
  2607                                 self step.
  2646                                 self step.
  2608                                 (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2647                                 (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2609                                     ^ self scan1
  2648                                     ^ self scan1
  2610                                 ].
  2649                                 ].
  2611                                 (currentCharacter between:$. and:$/) ifTrue:[
  2650                                 (currentCharacter between:$. and:$/) ifTrue:[
  2612                                     [
  2651                                     [
  2613                                         self recordMatch:#( 36 ).
  2652                                         self recordMatch:#( 37 ).
  2614                                         self step.
  2653                                         self step.
  2615                                         (currentCharacter isLetterOrDigit 
  2654                                         (currentCharacter isLetterOrDigit 
  2616                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2655                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2617                                     ] whileTrue.
  2656                                     ] whileTrue.
  2618                                     ^ self reportLastMatch
  2657                                     ^ self reportLastMatch
  2619                                 ].
  2658                                 ].
  2620                                 (currentCharacter == $-) ifTrue:[
  2659                                 (currentCharacter == $-) ifTrue:[
  2621                                     self recordMatch:#( 36 ).
  2660                                     self recordMatch:#( 37 ).
  2622                                     self step.
  2661                                     self step.
  2623                                     ((currentCharacter between:$- and:$9) 
  2662                                     ((currentCharacter between:$- and:$9) 
  2624                                         or:[
  2663                                         or:[
  2625                                             (currentCharacter between:$A and:$Z) 
  2664                                             (currentCharacter between:$A and:$Z) 
  2626                                                 or:[
  2665                                                 or:[
  2631                                                         ]
  2670                                                         ]
  2632                                                 ]
  2671                                                 ]
  2633                                         ]) 
  2672                                         ]) 
  2634                                             ifTrue:[
  2673                                             ifTrue:[
  2635                                                 [
  2674                                                 [
  2636                                                     self recordMatch:#( 36 ).
  2675                                                     self recordMatch:#( 37 ).
  2637                                                     self step.
  2676                                                     self step.
  2638                                                     (currentCharacter isLetterOrDigit 
  2677                                                     (currentCharacter isLetterOrDigit 
  2639                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2678                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2640                                                 ] whileTrue.
  2679                                                 ] whileTrue.
  2641                                                 ^ self reportLastMatch
  2680                                                 ^ self reportLastMatch
  2642                                             ].
  2681                                             ].
  2643                                     (currentCharacter == $f) ifTrue:[
  2682                                     (currentCharacter == $f) ifTrue:[
  2644                                         self recordMatch:#( 36 ).
  2683                                         self recordMatch:#( 37 ).
  2645                                         self step.
  2684                                         self step.
  2646                                         (currentCharacter isXMLDigit 
  2685                                         (currentCharacter isXMLDigit 
  2647                                             or:[
  2686                                             or:[
  2648                                                 (currentCharacter between:$- and:$/) 
  2687                                                 (currentCharacter between:$- and:$/) 
  2649                                                     or:[
  2688                                                     or:[
  2657                                                             ]
  2696                                                             ]
  2658                                                     ]
  2697                                                     ]
  2659                                             ]) 
  2698                                             ]) 
  2660                                                 ifTrue:[
  2699                                                 ifTrue:[
  2661                                                     [
  2700                                                     [
  2662                                                         self recordMatch:#( 36 ).
  2701                                                         self recordMatch:#( 37 ).
  2663                                                         self step.
  2702                                                         self step.
  2664                                                         (currentCharacter isLetterOrDigit 
  2703                                                         (currentCharacter isLetterOrDigit 
  2665                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2704                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2666                                                     ] whileTrue.
  2705                                                     ] whileTrue.
  2667                                                     ^ self reportLastMatch
  2706                                                     ^ self reportLastMatch
  2668                                                 ].
  2707                                                 ].
  2669                                         (currentCharacter == $o) ifTrue:[
  2708                                         (currentCharacter == $o) ifTrue:[
  2670                                             self recordMatch:#( 36 ).
  2709                                             self recordMatch:#( 37 ).
  2671                                             self step.
  2710                                             self step.
  2672                                             ((currentCharacter between:$- and:$9) 
  2711                                             ((currentCharacter between:$- and:$9) 
  2673                                                 or:[
  2712                                                 or:[
  2674                                                     (currentCharacter between:$A and:$Z) 
  2713                                                     (currentCharacter between:$A and:$Z) 
  2675                                                         or:[
  2714                                                         or:[
  2680                                                                 ]
  2719                                                                 ]
  2681                                                         ]
  2720                                                         ]
  2682                                                 ]) 
  2721                                                 ]) 
  2683                                                     ifTrue:[
  2722                                                     ifTrue:[
  2684                                                         [
  2723                                                         [
  2685                                                             self recordMatch:#( 36 ).
  2724                                                             self recordMatch:#( 37 ).
  2686                                                             self step.
  2725                                                             self step.
  2687                                                             (currentCharacter isLetterOrDigit 
  2726                                                             (currentCharacter isLetterOrDigit 
  2688                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2727                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2689                                                         ] whileTrue.
  2728                                                         ] whileTrue.
  2690                                                         ^ self reportLastMatch
  2729                                                         ^ self reportLastMatch
  2691                                                     ].
  2730                                                     ].
  2692                                             (currentCharacter == $r) ifTrue:[
  2731                                             (currentCharacter == $r) ifTrue:[
  2693                                                 self recordMatch:#( 36 ).
  2732                                                 self recordMatch:#( 37 ).
  2694                                                 self step.
  2733                                                 self step.
  2695                                                 (currentCharacter isXMLDigit 
  2734                                                 (currentCharacter isXMLDigit 
  2696                                                     or:[
  2735                                                     or:[
  2697                                                         (currentCharacter between:$- and:$/) 
  2736                                                         (currentCharacter between:$- and:$/) 
  2698                                                             or:[
  2737                                                             or:[
  2706                                                                     ]
  2745                                                                     ]
  2707                                                             ]
  2746                                                             ]
  2708                                                     ]) 
  2747                                                     ]) 
  2709                                                         ifTrue:[
  2748                                                         ifTrue:[
  2710                                                             [
  2749                                                             [
  2711                                                                 self recordMatch:#( 36 ).
  2750                                                                 self recordMatch:#( 37 ).
  2712                                                                 self step.
  2751                                                                 self step.
  2713                                                                 (currentCharacter isLetterOrDigit 
  2752                                                                 (currentCharacter isLetterOrDigit 
  2714                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2753                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2715                                                             ] whileTrue.
  2754                                                             ] whileTrue.
  2716                                                             ^ self reportLastMatch
  2755                                                             ^ self reportLastMatch
  2717                                                         ].
  2756                                                         ].
  2718                                                 (currentCharacter == $e) ifTrue:[
  2757                                                 (currentCharacter == $e) ifTrue:[
  2719                                                     self recordMatch:#( 36 ).
  2758                                                     self recordMatch:#( 37 ).
  2720                                                     self step.
  2759                                                     self step.
  2721                                                     (currentCharacter isXMLDigit 
  2760                                                     (currentCharacter isXMLDigit 
  2722                                                         or:[
  2761                                                         or:[
  2723                                                             (currentCharacter between:$- and:$/) 
  2762                                                             (currentCharacter between:$- and:$/) 
  2724                                                                 or:[
  2763                                                                 or:[
  2732                                                                         ]
  2771                                                                         ]
  2733                                                                 ]
  2772                                                                 ]
  2734                                                         ]) 
  2773                                                         ]) 
  2735                                                             ifTrue:[
  2774                                                             ifTrue:[
  2736                                                                 [
  2775                                                                 [
  2737                                                                     self recordMatch:#( 36 ).
  2776                                                                     self recordMatch:#( 37 ).
  2738                                                                     self step.
  2777                                                                     self step.
  2739                                                                     (currentCharacter isLetterOrDigit 
  2778                                                                     (currentCharacter isLetterOrDigit 
  2740                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2779                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2741                                                                 ] whileTrue.
  2780                                                                 ] whileTrue.
  2742                                                                 ^ self reportLastMatch
  2781                                                                 ^ self reportLastMatch
  2743                                                             ].
  2782                                                             ].
  2744                                                     (currentCharacter == $i) ifTrue:[
  2783                                                     (currentCharacter == $i) ifTrue:[
  2745                                                         self recordMatch:#( 36 ).
  2784                                                         self recordMatch:#( 37 ).
  2746                                                         self step.
  2785                                                         self step.
  2747                                                         ((currentCharacter between:$- and:$9) 
  2786                                                         ((currentCharacter between:$- and:$9) 
  2748                                                             or:[
  2787                                                             or:[
  2749                                                                 (currentCharacter between:$A and:$Z) 
  2788                                                                 (currentCharacter between:$A and:$Z) 
  2750                                                                     or:[
  2789                                                                     or:[
  2755                                                                             ]
  2794                                                                             ]
  2756                                                                     ]
  2795                                                                     ]
  2757                                                             ]) 
  2796                                                             ]) 
  2758                                                                 ifTrue:[
  2797                                                                 ifTrue:[
  2759                                                                     [
  2798                                                                     [
  2760                                                                         self recordMatch:#( 36 ).
  2799                                                                         self recordMatch:#( 37 ).
  2761                                                                         self step.
  2800                                                                         self step.
  2762                                                                         (currentCharacter isLetterOrDigit 
  2801                                                                         (currentCharacter isLetterOrDigit 
  2763                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2802                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2764                                                                     ] whileTrue.
  2803                                                                     ] whileTrue.
  2765                                                                     ^ self reportLastMatch
  2804                                                                     ^ self reportLastMatch
  2766                                                                 ].
  2805                                                                 ].
  2767                                                         (currentCharacter == $g) ifTrue:[
  2806                                                         (currentCharacter == $g) ifTrue:[
  2768                                                             self recordMatch:#( 36 ).
  2807                                                             self recordMatch:#( 37 ).
  2769                                                             self step.
  2808                                                             self step.
  2770                                                             ((currentCharacter between:$- and:$9) 
  2809                                                             ((currentCharacter between:$- and:$9) 
  2771                                                                 or:[
  2810                                                                 or:[
  2772                                                                     (currentCharacter between:$A and:$Z) 
  2811                                                                     (currentCharacter between:$A and:$Z) 
  2773                                                                         or:[
  2812                                                                         or:[
  2778                                                                                 ]
  2817                                                                                 ]
  2779                                                                         ]
  2818                                                                         ]
  2780                                                                 ]) 
  2819                                                                 ]) 
  2781                                                                     ifTrue:[
  2820                                                                     ifTrue:[
  2782                                                                         [
  2821                                                                         [
  2783                                                                             self recordMatch:#( 36 ).
  2822                                                                             self recordMatch:#( 37 ).
  2784                                                                             self step.
  2823                                                                             self step.
  2785                                                                             (currentCharacter isLetterOrDigit 
  2824                                                                             (currentCharacter isLetterOrDigit 
  2786                                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2825                                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2787                                                                         ] whileTrue.
  2826                                                                         ] whileTrue.
  2788                                                                         ^ self reportLastMatch
  2827                                                                         ^ self reportLastMatch
  2789                                                                     ].
  2828                                                                     ].
  2790                                                             (currentCharacter == $n) ifTrue:[
  2829                                                             (currentCharacter == $n) ifTrue:[
  2791                                                                 self recordMatch:#( 17 36 ).
  2830                                                                 self recordMatch:#( 9 37 ).
  2792                                                                 self step.
  2831                                                                 self step.
  2793                                                                 (currentCharacter isLetterOrDigit 
  2832                                                                 (currentCharacter isLetterOrDigit 
  2794                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  2833                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  2795                                                                         ifTrue:[
  2834                                                                         ifTrue:[
  2796                                                                             [
  2835                                                                             [
  2797                                                                                 self recordMatch:#( 36 ).
  2836                                                                                 self recordMatch:#( 37 ).
  2798                                                                                 self step.
  2837                                                                                 self step.
  2799                                                                                 (currentCharacter isLetterOrDigit 
  2838                                                                                 (currentCharacter isLetterOrDigit 
  2800                                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2839                                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2801                                                                             ] whileTrue.
  2840                                                                             ] whileTrue.
  2802                                                                             ^ self reportLastMatch
  2841                                                                             ^ self reportLastMatch
  2830             ^ self reportLastMatch
  2869             ^ self reportLastMatch
  2831         ].
  2870         ].
  2832         ^ self reportLastMatch
  2871         ^ self reportLastMatch
  2833     ].
  2872     ].
  2834     (currentCharacter == $u) ifTrue:[
  2873     (currentCharacter == $u) ifTrue:[
  2835         self recordMatch:#( 33 36 ).
  2874         self recordMatch:#( 34 37 ).
  2836         self step.
  2875         self step.
  2837         ((currentCharacter between:$0 and:$9) 
  2876         ((currentCharacter between:$0 and:$9) 
  2838             or:[
  2877             or:[
  2839                 (currentCharacter between:$A and:$Z) 
  2878                 (currentCharacter between:$A and:$Z) 
  2840                     or:[
  2879                     or:[
  2846                     ]
  2885                     ]
  2847             ]) 
  2886             ]) 
  2848                 ifTrue:[ ^ self scan1 ].
  2887                 ifTrue:[ ^ self scan1 ].
  2849         (currentCharacter between:$- and:$/) ifTrue:[
  2888         (currentCharacter between:$- and:$/) ifTrue:[
  2850             [
  2889             [
  2851                 self recordMatch:#( 36 ).
  2890                 self recordMatch:#( 37 ).
  2852                 self step.
  2891                 self step.
  2853                 (currentCharacter isLetterOrDigit 
  2892                 (currentCharacter isLetterOrDigit 
  2854                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2893                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2855             ] whileTrue.
  2894             ] whileTrue.
  2856             ^ self reportLastMatch
  2895             ^ self reportLastMatch
  2857         ].
  2896         ].
  2858         (currentCharacter == $n) ifTrue:[
  2897         (currentCharacter == $n) ifTrue:[
  2859             self recordMatch:#( 33 36 ).
  2898             self recordMatch:#( 34 37 ).
  2860             self step.
  2899             self step.
  2861             (currentCharacter isXMLDigit 
  2900             (currentCharacter isXMLDigit 
  2862                 or:[
  2901                 or:[
  2863                     (currentCharacter between:$A and:$Z) 
  2902                     (currentCharacter between:$A and:$Z) 
  2864                         or:[
  2903                         or:[
  2870                         ]
  2909                         ]
  2871                 ]) 
  2910                 ]) 
  2872                     ifTrue:[ ^ self scan1 ].
  2911                     ifTrue:[ ^ self scan1 ].
  2873             (currentCharacter between:$- and:$/) ifTrue:[
  2912             (currentCharacter between:$- and:$/) ifTrue:[
  2874                 [
  2913                 [
  2875                     self recordMatch:#( 36 ).
  2914                     self recordMatch:#( 37 ).
  2876                     self step.
  2915                     self step.
  2877                     (currentCharacter isLetterOrDigit 
  2916                     (currentCharacter isLetterOrDigit 
  2878                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2917                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2879                 ] whileTrue.
  2918                 ] whileTrue.
  2880                 ^ self reportLastMatch
  2919                 ^ self reportLastMatch
  2881             ].
  2920             ].
  2882             (currentCharacter == $i) ifTrue:[
  2921             (currentCharacter == $i) ifTrue:[
  2883                 self recordMatch:#( 33 36 ).
  2922                 self recordMatch:#( 34 37 ).
  2884                 self step.
  2923                 self step.
  2885                 (currentCharacter isXMLDigit 
  2924                 (currentCharacter isXMLDigit 
  2886                     or:[
  2925                     or:[
  2887                         (currentCharacter between:$A and:$Z) 
  2926                         (currentCharacter between:$A and:$Z) 
  2888                             or:[
  2927                             or:[
  2894                             ]
  2933                             ]
  2895                     ]) 
  2934                     ]) 
  2896                         ifTrue:[ ^ self scan1 ].
  2935                         ifTrue:[ ^ self scan1 ].
  2897                 (currentCharacter between:$- and:$/) ifTrue:[
  2936                 (currentCharacter between:$- and:$/) ifTrue:[
  2898                     [
  2937                     [
  2899                         self recordMatch:#( 36 ).
  2938                         self recordMatch:#( 37 ).
  2900                         self step.
  2939                         self step.
  2901                         (currentCharacter isLetterOrDigit 
  2940                         (currentCharacter isLetterOrDigit 
  2902                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2941                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2903                     ] whileTrue.
  2942                     ] whileTrue.
  2904                     ^ self reportLastMatch
  2943                     ^ self reportLastMatch
  2905                 ].
  2944                 ].
  2906                 (currentCharacter == $o) ifTrue:[
  2945                 (currentCharacter == $o) ifTrue:[
  2907                     self recordMatch:#( 33 36 ).
  2946                     self recordMatch:#( 34 37 ).
  2908                     self step.
  2947                     self step.
  2909                     ((currentCharacter between:$0 and:$9) 
  2948                     ((currentCharacter between:$0 and:$9) 
  2910                         or:[
  2949                         or:[
  2911                             (currentCharacter between:$A and:$Z) 
  2950                             (currentCharacter between:$A and:$Z) 
  2912                                 or:[
  2951                                 or:[
  2918                                 ]
  2957                                 ]
  2919                         ]) 
  2958                         ]) 
  2920                             ifTrue:[ ^ self scan1 ].
  2959                             ifTrue:[ ^ self scan1 ].
  2921                     (currentCharacter between:$- and:$/) ifTrue:[
  2960                     (currentCharacter between:$- and:$/) ifTrue:[
  2922                         [
  2961                         [
  2923                             self recordMatch:#( 36 ).
  2962                             self recordMatch:#( 37 ).
  2924                             self step.
  2963                             self step.
  2925                             (currentCharacter isLetterOrDigit 
  2964                             (currentCharacter isLetterOrDigit 
  2926                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2965                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2927                         ] whileTrue.
  2966                         ] whileTrue.
  2928                         ^ self reportLastMatch
  2967                         ^ self reportLastMatch
  2929                     ].
  2968                     ].
  2930                     (currentCharacter == $n) ifTrue:[
  2969                     (currentCharacter == $n) ifTrue:[
  2931                         self recordMatch:#( 33 36 ).
  2970                         self recordMatch:#( 34 37 ).
  2932                         self step.
  2971                         self step.
  2933                         (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2972                         (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
  2934                             ^ self scan1
  2973                             ^ self scan1
  2935                         ].
  2974                         ].
  2936                         (currentCharacter between:$. and:$/) ifTrue:[
  2975                         (currentCharacter between:$. and:$/) ifTrue:[
  2937                             [
  2976                             [
  2938                                 self recordMatch:#( 36 ).
  2977                                 self recordMatch:#( 37 ).
  2939                                 self step.
  2978                                 self step.
  2940                                 (currentCharacter isLetterOrDigit 
  2979                                 (currentCharacter isLetterOrDigit 
  2941                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2980                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2942                             ] whileTrue.
  2981                             ] whileTrue.
  2943                             ^ self reportLastMatch
  2982                             ^ self reportLastMatch
  2944                         ].
  2983                         ].
  2945                         (currentCharacter == $-) ifTrue:[
  2984                         (currentCharacter == $-) ifTrue:[
  2946                             self recordMatch:#( 36 ).
  2985                             self recordMatch:#( 37 ).
  2947                             self step.
  2986                             self step.
  2948                             ((currentCharacter between:$- and:$9) 
  2987                             ((currentCharacter between:$- and:$9) 
  2949                                 or:[
  2988                                 or:[
  2950                                     (currentCharacter between:$A and:$Z) 
  2989                                     (currentCharacter between:$A and:$Z) 
  2951                                         or:[
  2990                                         or:[
  2956                                                 ]
  2995                                                 ]
  2957                                         ]
  2996                                         ]
  2958                                 ]) 
  2997                                 ]) 
  2959                                     ifTrue:[
  2998                                     ifTrue:[
  2960                                         [
  2999                                         [
  2961                                             self recordMatch:#( 36 ).
  3000                                             self recordMatch:#( 37 ).
  2962                                             self step.
  3001                                             self step.
  2963                                             (currentCharacter isLetterOrDigit 
  3002                                             (currentCharacter isLetterOrDigit 
  2964                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3003                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2965                                         ] whileTrue.
  3004                                         ] whileTrue.
  2966                                         ^ self reportLastMatch
  3005                                         ^ self reportLastMatch
  2967                                     ].
  3006                                     ].
  2968                             (currentCharacter == $f) ifTrue:[
  3007                             (currentCharacter == $f) ifTrue:[
  2969                                 self recordMatch:#( 36 ).
  3008                                 self recordMatch:#( 37 ).
  2970                                 self step.
  3009                                 self step.
  2971                                 (currentCharacter isXMLDigit 
  3010                                 (currentCharacter isXMLDigit 
  2972                                     or:[
  3011                                     or:[
  2973                                         (currentCharacter between:$- and:$/) 
  3012                                         (currentCharacter between:$- and:$/) 
  2974                                             or:[
  3013                                             or:[
  2982                                                     ]
  3021                                                     ]
  2983                                             ]
  3022                                             ]
  2984                                     ]) 
  3023                                     ]) 
  2985                                         ifTrue:[
  3024                                         ifTrue:[
  2986                                             [
  3025                                             [
  2987                                                 self recordMatch:#( 36 ).
  3026                                                 self recordMatch:#( 37 ).
  2988                                                 self step.
  3027                                                 self step.
  2989                                                 (currentCharacter isLetterOrDigit 
  3028                                                 (currentCharacter isLetterOrDigit 
  2990                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3029                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  2991                                             ] whileTrue.
  3030                                             ] whileTrue.
  2992                                             ^ self reportLastMatch
  3031                                             ^ self reportLastMatch
  2993                                         ].
  3032                                         ].
  2994                                 (currentCharacter == $o) ifTrue:[
  3033                                 (currentCharacter == $o) ifTrue:[
  2995                                     self recordMatch:#( 36 ).
  3034                                     self recordMatch:#( 37 ).
  2996                                     self step.
  3035                                     self step.
  2997                                     ((currentCharacter between:$- and:$9) 
  3036                                     ((currentCharacter between:$- and:$9) 
  2998                                         or:[
  3037                                         or:[
  2999                                             (currentCharacter between:$A and:$Z) 
  3038                                             (currentCharacter between:$A and:$Z) 
  3000                                                 or:[
  3039                                                 or:[
  3005                                                         ]
  3044                                                         ]
  3006                                                 ]
  3045                                                 ]
  3007                                         ]) 
  3046                                         ]) 
  3008                                             ifTrue:[
  3047                                             ifTrue:[
  3009                                                 [
  3048                                                 [
  3010                                                     self recordMatch:#( 36 ).
  3049                                                     self recordMatch:#( 37 ).
  3011                                                     self step.
  3050                                                     self step.
  3012                                                     (currentCharacter isLetterOrDigit 
  3051                                                     (currentCharacter isLetterOrDigit 
  3013                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3052                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3014                                                 ] whileTrue.
  3053                                                 ] whileTrue.
  3015                                                 ^ self reportLastMatch
  3054                                                 ^ self reportLastMatch
  3016                                             ].
  3055                                             ].
  3017                                     (currentCharacter == $r) ifTrue:[
  3056                                     (currentCharacter == $r) ifTrue:[
  3018                                         self recordMatch:#( 36 ).
  3057                                         self recordMatch:#( 37 ).
  3019                                         self step.
  3058                                         self step.
  3020                                         (currentCharacter isXMLDigit 
  3059                                         (currentCharacter isXMLDigit 
  3021                                             or:[
  3060                                             or:[
  3022                                                 (currentCharacter between:$- and:$/) 
  3061                                                 (currentCharacter between:$- and:$/) 
  3023                                                     or:[
  3062                                                     or:[
  3031                                                             ]
  3070                                                             ]
  3032                                                     ]
  3071                                                     ]
  3033                                             ]) 
  3072                                             ]) 
  3034                                                 ifTrue:[
  3073                                                 ifTrue:[
  3035                                                     [
  3074                                                     [
  3036                                                         self recordMatch:#( 36 ).
  3075                                                         self recordMatch:#( 37 ).
  3037                                                         self step.
  3076                                                         self step.
  3038                                                         (currentCharacter isLetterOrDigit 
  3077                                                         (currentCharacter isLetterOrDigit 
  3039                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3078                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3040                                                     ] whileTrue.
  3079                                                     ] whileTrue.
  3041                                                     ^ self reportLastMatch
  3080                                                     ^ self reportLastMatch
  3042                                                 ].
  3081                                                 ].
  3043                                         (currentCharacter == $e) ifTrue:[
  3082                                         (currentCharacter == $e) ifTrue:[
  3044                                             self recordMatch:#( 36 ).
  3083                                             self recordMatch:#( 37 ).
  3045                                             self step.
  3084                                             self step.
  3046                                             (currentCharacter isXMLDigit 
  3085                                             (currentCharacter isXMLDigit 
  3047                                                 or:[
  3086                                                 or:[
  3048                                                     (currentCharacter between:$- and:$/) 
  3087                                                     (currentCharacter between:$- and:$/) 
  3049                                                         or:[
  3088                                                         or:[
  3057                                                                 ]
  3096                                                                 ]
  3058                                                         ]
  3097                                                         ]
  3059                                                 ]) 
  3098                                                 ]) 
  3060                                                     ifTrue:[
  3099                                                     ifTrue:[
  3061                                                         [
  3100                                                         [
  3062                                                             self recordMatch:#( 36 ).
  3101                                                             self recordMatch:#( 37 ).
  3063                                                             self step.
  3102                                                             self step.
  3064                                                             (currentCharacter isLetterOrDigit 
  3103                                                             (currentCharacter isLetterOrDigit 
  3065                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3104                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3066                                                         ] whileTrue.
  3105                                                         ] whileTrue.
  3067                                                         ^ self reportLastMatch
  3106                                                         ^ self reportLastMatch
  3068                                                     ].
  3107                                                     ].
  3069                                             (currentCharacter == $i) ifTrue:[
  3108                                             (currentCharacter == $i) ifTrue:[
  3070                                                 self recordMatch:#( 36 ).
  3109                                                 self recordMatch:#( 37 ).
  3071                                                 self step.
  3110                                                 self step.
  3072                                                 ((currentCharacter between:$- and:$9) 
  3111                                                 ((currentCharacter between:$- and:$9) 
  3073                                                     or:[
  3112                                                     or:[
  3074                                                         (currentCharacter between:$A and:$Z) 
  3113                                                         (currentCharacter between:$A and:$Z) 
  3075                                                             or:[
  3114                                                             or:[
  3080                                                                     ]
  3119                                                                     ]
  3081                                                             ]
  3120                                                             ]
  3082                                                     ]) 
  3121                                                     ]) 
  3083                                                         ifTrue:[
  3122                                                         ifTrue:[
  3084                                                             [
  3123                                                             [
  3085                                                                 self recordMatch:#( 36 ).
  3124                                                                 self recordMatch:#( 37 ).
  3086                                                                 self step.
  3125                                                                 self step.
  3087                                                                 (currentCharacter isLetterOrDigit 
  3126                                                                 (currentCharacter isLetterOrDigit 
  3088                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3127                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3089                                                             ] whileTrue.
  3128                                                             ] whileTrue.
  3090                                                             ^ self reportLastMatch
  3129                                                             ^ self reportLastMatch
  3091                                                         ].
  3130                                                         ].
  3092                                                 (currentCharacter == $g) ifTrue:[
  3131                                                 (currentCharacter == $g) ifTrue:[
  3093                                                     self recordMatch:#( 36 ).
  3132                                                     self recordMatch:#( 37 ).
  3094                                                     self step.
  3133                                                     self step.
  3095                                                     ((currentCharacter between:$- and:$9) 
  3134                                                     ((currentCharacter between:$- and:$9) 
  3096                                                         or:[
  3135                                                         or:[
  3097                                                             (currentCharacter between:$A and:$Z) 
  3136                                                             (currentCharacter between:$A and:$Z) 
  3098                                                                 or:[
  3137                                                                 or:[
  3103                                                                         ]
  3142                                                                         ]
  3104                                                                 ]
  3143                                                                 ]
  3105                                                         ]) 
  3144                                                         ]) 
  3106                                                             ifTrue:[
  3145                                                             ifTrue:[
  3107                                                                 [
  3146                                                                 [
  3108                                                                     self recordMatch:#( 36 ).
  3147                                                                     self recordMatch:#( 37 ).
  3109                                                                     self step.
  3148                                                                     self step.
  3110                                                                     (currentCharacter isLetterOrDigit 
  3149                                                                     (currentCharacter isLetterOrDigit 
  3111                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3150                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3112                                                                 ] whileTrue.
  3151                                                                 ] whileTrue.
  3113                                                                 ^ self reportLastMatch
  3152                                                                 ^ self reportLastMatch
  3114                                                             ].
  3153                                                             ].
  3115                                                     (currentCharacter == $n) ifTrue:[
  3154                                                     (currentCharacter == $n) ifTrue:[
  3116                                                         self recordMatch:#( 19 36 ).
  3155                                                         self recordMatch:#( 19 37 ).
  3117                                                         self step.
  3156                                                         self step.
  3118                                                         (currentCharacter isLetterOrDigit 
  3157                                                         (currentCharacter isLetterOrDigit 
  3119                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  3158                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
  3120                                                                 ifTrue:[
  3159                                                                 ifTrue:[
  3121                                                                     [
  3160                                                                     [
  3122                                                                         self recordMatch:#( 36 ).
  3161                                                                         self recordMatch:#( 37 ).
  3123                                                                         self step.
  3162                                                                         self step.
  3124                                                                         (currentCharacter isLetterOrDigit 
  3163                                                                         (currentCharacter isLetterOrDigit 
  3125                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3164                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
  3126                                                                     ] whileTrue.
  3165                                                                     ] whileTrue.
  3127                                                                     ^ self reportLastMatch
  3166                                                                     ^ self reportLastMatch
  3152         ].
  3191         ].
  3153         ^ self reportLastMatch
  3192         ^ self reportLastMatch
  3154     ].
  3193     ].
  3155     ^ self reportLastMatch
  3194     ^ self reportLastMatch
  3156 
  3195 
  3157     "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
  3196     "Modified: / 09-09-2008 / 17:05:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
  3158 ! !
  3197 ! !
  3159 
  3198 
  3160 !CDefinitionScanner methodsFor:'generated-tokens'!
  3199 !CDefinitionScanner methodsFor:'generated-tokens'!
  3161 
  3200 
  3162 emptySymbolTokenId
  3201 emptySymbolTokenId
  3163 	^63
  3202 	^64
  3164 
  3203 
  3165     "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
  3204     "Modified: / 09-09-2008 / 17:05:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
  3166 !
  3205 !
  3167 
  3206 
  3168 errorTokenId
  3207 errorTokenId
  3169 	^64
  3208 	^65
  3170 
  3209 
  3171     "Modified: / 10-07-2008 / 19:55:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
  3210     "Modified: / 09-09-2008 / 17:05:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
  3172 ! !
  3211 ! !
  3173 
  3212 
  3174 !CDefinitionScanner class methodsFor:'documentation'!
  3213 !CDefinitionScanner class methodsFor:'documentation'!
  3175 
  3214 
  3176 version
  3215 version