Cface__CDefinitionScanner.st
changeset 3 110a9cbf8594
parent 1 b6c0180314d1
child 4 fc74bd43a3eb
--- a/Cface__CDefinitionScanner.st	Thu Jul 03 22:00:07 2008 +0000
+++ b/Cface__CDefinitionScanner.st	Fri Jul 04 08:35:55 2008 +0000
@@ -31,71 +31,71 @@
 <file>                  :       [\w-_/] [\w-_/.]* ;
 "
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner class methodsFor:'generated-initialization'!
 
 initializeKeywordMap
     keywordMap := Dictionary new.
-    #( #(27 'argument' 5)
-     #(27 'array' 26)
-     #(27 'char' 14)
-     #(27 'const' 25)
-     #(27 'double' 20)
-     #(27 'enum' 17)
-     #(27 'field' 16)
-     #(27 'float' 22)
-     #(27 'function' 11)
-     #(27 'int' 13)
-     #(27 'long' 3)
-     #(27 'return' 6)
-     #(27 'short' 4)
-     #(27 'struct' 21)
-     #(27 'typedef' 7)
-     #(27 'union' 15)
-     #(27 'unsigned' 2)
-     #(27 'value' 18)
-     #(27 'void' 24)
-     #(30 'argument' 5)
-     #(30 'array' 26)
-     #(30 'char' 14)
-     #(30 'const' 25)
-     #(30 'double' 20)
+    #( #(30 'argument' 14)
+     #(30 'array' 25)
+     #(30 'char' 5)
+     #(30 'const' 26)
+     #(30 'double' 12)
      #(30 'enum' 17)
      #(30 'field' 16)
-     #(30 'float' 22)
-     #(30 'function' 11)
-     #(30 'int' 13)
-     #(30 'long' 3)
+     #(30 'float' 23)
+     #(30 'function' 15)
+     #(30 'int' 7)
+     #(30 'long' 2)
      #(30 'return' 6)
-     #(30 'short' 4)
-     #(30 'struct' 21)
-     #(30 'typedef' 7)
-     #(30 'union' 15)
-     #(30 'unsigned' 2)
-     #(30 'value' 18)
-     #(30 'void' 24) ) 
+     #(30 'short' 3)
+     #(30 'struct' 28)
+     #(30 'typedef' 20)
+     #(30 'union' 21)
+     #(30 'unsigned' 1)
+     #(30 'value' 22)
+     #(30 'void' 24)
+     #(33 'argument' 14)
+     #(33 'array' 25)
+     #(33 'char' 5)
+     #(33 'const' 26)
+     #(33 'double' 12)
+     #(33 'enum' 17)
+     #(33 'field' 16)
+     #(33 'float' 23)
+     #(33 'function' 15)
+     #(33 'int' 7)
+     #(33 'long' 2)
+     #(33 'return' 6)
+     #(33 'short' 3)
+     #(33 'struct' 28)
+     #(33 'typedef' 20)
+     #(33 'union' 21)
+     #(33 'unsigned' 1)
+     #(33 'value' 22)
+     #(33 'void' 24) ) 
             do:[:each | 
                 (keywordMap at:each first ifAbsentPut:[ Dictionary new ]) at:(each at:2)
                     put:each last
             ].
     ^ keywordMap
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner methodsFor:'generated-scanner'!
 
 scan1
     [
-        self recordMatch:#( 27 30 ).
+        self recordMatch:#( 30 33 ).
         self step.
         (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
     ] whileTrue.
     (currentCharacter between:$- and:$/) ifTrue:[
         [
-            self recordMatch:#( 30 ).
+            self recordMatch:#( 33 ).
             self step.
             (currentCharacter isLetterOrDigit 
                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -104,16 +104,16 @@
     ].
     ^ self reportLastMatch
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 scan2
     [
-        self recordMatch:#( 28 30 ).
+        self recordMatch:#( 31 33 ).
         self step.
         (currentCharacter isLetter) ifTrue:[
             [
-                self recordMatch:#( 28 30 ).
+                self recordMatch:#( 31 33 ).
                 self step.
                 (currentCharacter isLetter)
             ] whileTrue.
@@ -121,7 +121,7 @@
                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
                     ifTrue:[
                         [
-                            self recordMatch:#( 30 ).
+                            self recordMatch:#( 33 ).
                             self step.
                             (currentCharacter isLetterOrDigit 
                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -134,7 +134,7 @@
     ] whileTrue.
     ((currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ]) ifTrue:[
         [
-            self recordMatch:#( 30 ).
+            self recordMatch:#( 33 ).
             self step.
             (currentCharacter isLetterOrDigit 
                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -143,7 +143,7 @@
     ].
     ^ self reportLastMatch
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 scan3
@@ -844,10 +844,13 @@
         or:[
             currentCharacter == $_ 
                 or:[
-                    (currentCharacter between:$a and:$e) 
+                    (currentCharacter between:$a and:$d) 
                         or:[
                             (currentCharacter between:$g and:$o) 
-                                or:[ (currentCharacter between:$q and:$z) ]
+                                or:[
+                                    (currentCharacter between:$q and:$r) 
+                                        or:[ (currentCharacter between:$v and:$z) ]
+                                ]
                         ]
                 ]
         ]) 
@@ -885,7 +888,7 @@
                                     (currentCharacter == $e) ifTrue:[
                                         self step.
                                         (currentCharacter == $d) ifTrue:[
-                                            ^ self recordAndReportMatch:#( 8 ).
+                                            ^ self recordAndReportMatch:#( 9 ).
                                         ].
                                         ^ self reportLastMatch
                                     ].
@@ -906,28 +909,19 @@
         ^ self reportLastMatch
     ].
     (currentCharacter == $() ifTrue:[
-        ^ self recordAndReportMatch:#( 10 ).
+        ^ self recordAndReportMatch:#( 11 ).
     ].
     (currentCharacter == $)) ifTrue:[
-        ^ self recordAndReportMatch:#( 12 ).
+        ^ self recordAndReportMatch:#( 13 ).
     ].
     (currentCharacter == $-) ifTrue:[
-        self recordMatch:#( 30 ).
+        self recordMatch:#( 33 ).
         self step.
-        ((currentCharacter between:$- and:$/) 
-            or:[
-                (currentCharacter between:$A and:$Z) 
-                    or:[
-                        currentCharacter == $_ 
-                            or:[
-                                (currentCharacter between:$a and:$e) 
-                                    or:[ (currentCharacter between:$g and:$z) ]
-                            ]
-                    ]
-            ]) 
+        (currentCharacter isLetter 
+            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
                 ifTrue:[
                     [
-                        self recordMatch:#( 30 ).
+                        self recordMatch:#( 33 ).
                         self step.
                         (currentCharacter isLetterOrDigit 
                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -937,132 +931,155 @@
         (currentCharacter isXMLDigit) ifTrue:[
             ^ self scan2
         ].
-        (currentCharacter == $f) ifTrue:[
-            self recordMatch:#( 30 ).
+        ^ self reportLastMatch
+    ].
+    (currentCharacter == $/) ifTrue:[
+        [
+            self recordMatch:#( 33 ).
+            self step.
+            (currentCharacter isLetterOrDigit 
+                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+        ] whileTrue.
+        ^ self reportLastMatch
+    ].
+    (currentCharacter == $e) ifTrue:[
+        self recordMatch:#( 30 33 ).
+        self step.
+        ((currentCharacter between:$0 and:$9) 
+            or:[
+                (currentCharacter between:$A and:$Z) 
+                    or:[
+                        currentCharacter == $_ 
+                            or:[
+                                (currentCharacter between:$a and:$m) 
+                                    or:[ (currentCharacter between:$o and:$z) ]
+                            ]
+                    ]
+            ]) 
+                ifTrue:[ ^ self scan1 ].
+        (currentCharacter between:$- and:$/) ifTrue:[
+            [
+                self recordMatch:#( 33 ).
+                self step.
+                (currentCharacter isLetterOrDigit 
+                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+            ] whileTrue.
+            ^ self reportLastMatch
+        ].
+        (currentCharacter == $n) ifTrue:[
+            self recordMatch:#( 30 33 ).
             self step.
             (currentCharacter isXMLDigit 
                 or:[
-                    (currentCharacter between:$- and:$/) 
+                    (currentCharacter between:$A and:$Z) 
                         or:[
-                            (currentCharacter between:$A and:$Z) 
+                            currentCharacter == $_ 
                                 or:[
-                                    currentCharacter == $_ 
-                                        or:[
-                                            (currentCharacter between:$a and:$n) 
-                                                or:[ (currentCharacter between:$p and:$z) ]
-                                        ]
+                                    (currentCharacter between:$a and:$t) 
+                                        or:[ (currentCharacter between:$v and:$z) ]
                                 ]
                         ]
                 ]) 
-                    ifTrue:[
+                    ifTrue:[ ^ self scan1 ].
+            (currentCharacter between:$- and:$/) ifTrue:[
+                [
+                    self recordMatch:#( 33 ).
+                    self step.
+                    (currentCharacter isLetterOrDigit 
+                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                ] whileTrue.
+                ^ self reportLastMatch
+            ].
+            (currentCharacter == $u) ifTrue:[
+                self recordMatch:#( 30 33 ).
+                self step.
+                ((currentCharacter between:$0 and:$9) 
+                    or:[
+                        (currentCharacter between:$A and:$Z) 
+                            or:[
+                                currentCharacter == $_ 
+                                    or:[
+                                        (currentCharacter between:$a and:$l) 
+                                            or:[ (currentCharacter between:$n and:$z) ]
+                                    ]
+                            ]
+                    ]) 
+                        ifTrue:[ ^ self scan1 ].
+                (currentCharacter between:$- and:$/) ifTrue:[
+                    [
+                        self recordMatch:#( 33 ).
+                        self step.
+                        (currentCharacter isLetterOrDigit 
+                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                    ] whileTrue.
+                    ^ self reportLastMatch
+                ].
+                (currentCharacter == $m) ifTrue:[
+                    self recordMatch:#( 30 33 ).
+                    self step.
+                    (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+                        ^ self scan1
+                    ].
+                    (currentCharacter between:$. and:$/) ifTrue:[
                         [
-                            self recordMatch:#( 30 ).
+                            self recordMatch:#( 33 ).
                             self step.
                             (currentCharacter isLetterOrDigit 
                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
                         ] whileTrue.
                         ^ self reportLastMatch
                     ].
-            (currentCharacter == $o) ifTrue:[
-                self recordMatch:#( 30 ).
-                self step.
-                ((currentCharacter between:$- and:$9) 
-                    or:[
-                        (currentCharacter between:$A and:$Z) 
+                    (currentCharacter == $-) ifTrue:[
+                        self recordMatch:#( 33 ).
+                        self step.
+                        ((currentCharacter between:$- and:$9) 
                             or:[
-                                currentCharacter == $_ 
+                                (currentCharacter between:$A and:$Z) 
                                     or:[
-                                        (currentCharacter between:$a and:$q) 
-                                            or:[ (currentCharacter between:$s and:$z) ]
-                                    ]
-                            ]
-                    ]) 
-                        ifTrue:[
-                            [
-                                self recordMatch:#( 30 ).
-                                self step.
-                                (currentCharacter isLetterOrDigit 
-                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
-                            ] whileTrue.
-                            ^ self reportLastMatch
-                        ].
-                (currentCharacter == $r) ifTrue:[
-                    self recordMatch:#( 30 ).
-                    self step.
-                    (currentCharacter isXMLDigit 
-                        or:[
-                            (currentCharacter between:$- and:$/) 
-                                or:[
-                                    (currentCharacter between:$A and:$Z) 
-                                        or:[
-                                            currentCharacter == $_ 
-                                                or:[
-                                                    (currentCharacter between:$a and:$d) 
-                                                        or:[ (currentCharacter between:$f and:$z) ]
-                                                ]
-                                        ]
-                                ]
-                        ]) 
-                            ifTrue:[
-                                [
-                                    self recordMatch:#( 30 ).
-                                    self step.
-                                    (currentCharacter isLetterOrDigit 
-                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
-                                ] whileTrue.
-                                ^ self reportLastMatch
-                            ].
-                    (currentCharacter == $e) ifTrue:[
-                        self recordMatch:#( 30 ).
-                        self step.
-                        (currentCharacter isXMLDigit 
-                            or:[
-                                (currentCharacter between:$- and:$/) 
-                                    or:[
-                                        (currentCharacter between:$A and:$Z) 
+                                        currentCharacter == $_ 
                                             or:[
-                                                currentCharacter == $_ 
-                                                    or:[
-                                                        (currentCharacter between:$a and:$h) 
-                                                            or:[ (currentCharacter between:$j and:$z) ]
-                                                    ]
+                                                (currentCharacter between:$a and:$e) 
+                                                    or:[ (currentCharacter between:$g and:$z) ]
                                             ]
                                     ]
                             ]) 
                                 ifTrue:[
                                     [
-                                        self recordMatch:#( 30 ).
+                                        self recordMatch:#( 33 ).
                                         self step.
                                         (currentCharacter isLetterOrDigit 
                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
                                     ] whileTrue.
                                     ^ self reportLastMatch
                                 ].
-                        (currentCharacter == $i) ifTrue:[
-                            self recordMatch:#( 30 ).
+                        (currentCharacter == $f) ifTrue:[
+                            self recordMatch:#( 33 ).
                             self step.
-                            ((currentCharacter between:$- and:$9) 
+                            (currentCharacter isXMLDigit 
                                 or:[
-                                    (currentCharacter between:$A and:$Z) 
+                                    (currentCharacter between:$- and:$/) 
                                         or:[
-                                            currentCharacter == $_ 
+                                            (currentCharacter between:$A and:$Z) 
                                                 or:[
-                                                    (currentCharacter between:$a and:$f) 
-                                                        or:[ (currentCharacter between:$h and:$z) ]
+                                                    currentCharacter == $_ 
+                                                        or:[
+                                                            (currentCharacter between:$a and:$n) 
+                                                                or:[ (currentCharacter between:$p and:$z) ]
+                                                        ]
                                                 ]
                                         ]
                                 ]) 
                                     ifTrue:[
                                         [
-                                            self recordMatch:#( 30 ).
+                                            self recordMatch:#( 33 ).
                                             self step.
                                             (currentCharacter isLetterOrDigit 
                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
                                         ] whileTrue.
                                         ^ self reportLastMatch
                                     ].
-                            (currentCharacter == $g) ifTrue:[
-                                self recordMatch:#( 30 ).
+                            (currentCharacter == $o) ifTrue:[
+                                self recordMatch:#( 33 ).
                                 self step.
                                 ((currentCharacter between:$- and:$9) 
                                     or:[
@@ -1070,34 +1087,140 @@
                                             or:[
                                                 currentCharacter == $_ 
                                                     or:[
-                                                        (currentCharacter between:$a and:$m) 
-                                                            or:[ (currentCharacter between:$o and:$z) ]
+                                                        (currentCharacter between:$a and:$q) 
+                                                            or:[ (currentCharacter between:$s and:$z) ]
                                                     ]
                                             ]
                                     ]) 
                                         ifTrue:[
                                             [
-                                                self recordMatch:#( 30 ).
+                                                self recordMatch:#( 33 ).
                                                 self step.
                                                 (currentCharacter isLetterOrDigit 
                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
                                             ] whileTrue.
                                             ^ self reportLastMatch
                                         ].
-                                (currentCharacter == $n) ifTrue:[
-                                    self recordMatch:#( 19 30 ).
+                                (currentCharacter == $r) ifTrue:[
+                                    self recordMatch:#( 33 ).
                                     self step.
-                                    (currentCharacter isLetterOrDigit 
-                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
+                                    (currentCharacter isXMLDigit 
+                                        or:[
+                                            (currentCharacter between:$- and:$/) 
+                                                or:[
+                                                    (currentCharacter between:$A and:$Z) 
+                                                        or:[
+                                                            currentCharacter == $_ 
+                                                                or:[
+                                                                    (currentCharacter between:$a and:$d) 
+                                                                        or:[ (currentCharacter between:$f and:$z) ]
+                                                                ]
+                                                        ]
+                                                ]
+                                        ]) 
                                             ifTrue:[
                                                 [
-                                                    self recordMatch:#( 30 ).
+                                                    self recordMatch:#( 33 ).
                                                     self step.
                                                     (currentCharacter isLetterOrDigit 
                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
                                                 ] whileTrue.
                                                 ^ self reportLastMatch
                                             ].
+                                    (currentCharacter == $e) ifTrue:[
+                                        self recordMatch:#( 33 ).
+                                        self step.
+                                        (currentCharacter isXMLDigit 
+                                            or:[
+                                                (currentCharacter between:$- and:$/) 
+                                                    or:[
+                                                        (currentCharacter between:$A and:$Z) 
+                                                            or:[
+                                                                currentCharacter == $_ 
+                                                                    or:[
+                                                                        (currentCharacter between:$a and:$h) 
+                                                                            or:[ (currentCharacter between:$j and:$z) ]
+                                                                    ]
+                                                            ]
+                                                    ]
+                                            ]) 
+                                                ifTrue:[
+                                                    [
+                                                        self recordMatch:#( 33 ).
+                                                        self step.
+                                                        (currentCharacter isLetterOrDigit 
+                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                    ] whileTrue.
+                                                    ^ self reportLastMatch
+                                                ].
+                                        (currentCharacter == $i) ifTrue:[
+                                            self recordMatch:#( 33 ).
+                                            self step.
+                                            ((currentCharacter between:$- and:$9) 
+                                                or:[
+                                                    (currentCharacter between:$A and:$Z) 
+                                                        or:[
+                                                            currentCharacter == $_ 
+                                                                or:[
+                                                                    (currentCharacter between:$a and:$f) 
+                                                                        or:[ (currentCharacter between:$h and:$z) ]
+                                                                ]
+                                                        ]
+                                                ]) 
+                                                    ifTrue:[
+                                                        [
+                                                            self recordMatch:#( 33 ).
+                                                            self step.
+                                                            (currentCharacter isLetterOrDigit 
+                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                        ] whileTrue.
+                                                        ^ self reportLastMatch
+                                                    ].
+                                            (currentCharacter == $g) ifTrue:[
+                                                self recordMatch:#( 33 ).
+                                                self step.
+                                                ((currentCharacter between:$- and:$9) 
+                                                    or:[
+                                                        (currentCharacter between:$A and:$Z) 
+                                                            or:[
+                                                                currentCharacter == $_ 
+                                                                    or:[
+                                                                        (currentCharacter between:$a and:$m) 
+                                                                            or:[ (currentCharacter between:$o and:$z) ]
+                                                                    ]
+                                                            ]
+                                                    ]) 
+                                                        ifTrue:[
+                                                            [
+                                                                self recordMatch:#( 33 ).
+                                                                self step.
+                                                                (currentCharacter isLetterOrDigit 
+                                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                            ] whileTrue.
+                                                            ^ self reportLastMatch
+                                                        ].
+                                                (currentCharacter == $n) ifTrue:[
+                                                    self recordMatch:#( 18 33 ).
+                                                    self step.
+                                                    (currentCharacter isLetterOrDigit 
+                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
+                                                            ifTrue:[
+                                                                [
+                                                                    self recordMatch:#( 33 ).
+                                                                    self step.
+                                                                    (currentCharacter isLetterOrDigit 
+                                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                ] whileTrue.
+                                                                ^ self reportLastMatch
+                                                            ].
+                                                    ^ self reportLastMatch
+                                                ].
+                                                ^ self reportLastMatch
+                                            ].
+                                            ^ self reportLastMatch
+                                        ].
+                                        ^ self reportLastMatch
+                                    ].
                                     ^ self reportLastMatch
                                 ].
                                 ^ self reportLastMatch
@@ -1114,17 +1237,8 @@
         ].
         ^ self reportLastMatch
     ].
-    (currentCharacter == $/) ifTrue:[
-        [
-            self recordMatch:#( 30 ).
-            self step.
-            (currentCharacter isLetterOrDigit 
-                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
-        ] whileTrue.
-        ^ self reportLastMatch
-    ].
     (currentCharacter == $f) ifTrue:[
-        self recordMatch:#( 27 30 ).
+        self recordMatch:#( 30 33 ).
         self step.
         (currentCharacter isXMLDigit 
             or:[
@@ -1143,7 +1257,7 @@
                 ifTrue:[ ^ self scan1 ].
         (currentCharacter between:$- and:$/) ifTrue:[
             [
-                self recordMatch:#( 30 ).
+                self recordMatch:#( 33 ).
                 self step.
                 (currentCharacter isLetterOrDigit 
                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1151,7 +1265,7 @@
             ^ self reportLastMatch
         ].
         (currentCharacter == $r) ifTrue:[
-            self recordMatch:#( 27 30 ).
+            self recordMatch:#( 30 33 ).
             self step.
             (currentCharacter isXMLDigit 
                 or:[
@@ -1167,7 +1281,7 @@
                     ifTrue:[ ^ self scan1 ].
             (currentCharacter between:$- and:$/) ifTrue:[
                 [
-                    self recordMatch:#( 30 ).
+                    self recordMatch:#( 33 ).
                     self step.
                     (currentCharacter isLetterOrDigit 
                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1175,7 +1289,7 @@
                 ^ self reportLastMatch
             ].
             (currentCharacter == $o) ifTrue:[
-                self recordMatch:#( 27 30 ).
+                self recordMatch:#( 30 33 ).
                 self step.
                 ((currentCharacter between:$0 and:$9) 
                     or:[
@@ -1191,7 +1305,7 @@
                         ifTrue:[ ^ self scan1 ].
                 (currentCharacter between:$- and:$/) ifTrue:[
                     [
-                        self recordMatch:#( 30 ).
+                        self recordMatch:#( 33 ).
                         self step.
                         (currentCharacter isLetterOrDigit 
                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1199,14 +1313,14 @@
                     ^ self reportLastMatch
                 ].
                 (currentCharacter == $m) ifTrue:[
-                    self recordMatch:#( 27 30 ).
+                    self recordMatch:#( 30 33 ).
                     self step.
                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
                         ^ self scan1
                     ].
                     (currentCharacter between:$- and:$/) ifTrue:[
                         [
-                            self recordMatch:#( 30 ).
+                            self recordMatch:#( 33 ).
                             self step.
                             (currentCharacter isLetterOrDigit 
                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1214,7 +1328,7 @@
                         ^ self reportLastMatch
                     ].
                     (currentCharacter == $:) ifTrue:[
-                        ^ self recordAndReportMatch:#( 9 ).
+                        ^ self recordAndReportMatch:#( 10 ).
                     ].
                     ^ self reportLastMatch
                 ].
@@ -1223,7 +1337,7 @@
             ^ self reportLastMatch
         ].
         (currentCharacter == $u) ifTrue:[
-            self recordMatch:#( 27 30 ).
+            self recordMatch:#( 30 33 ).
             self step.
             ((currentCharacter between:$0 and:$9) 
                 or:[
@@ -1239,7 +1353,7 @@
                     ifTrue:[ ^ self scan1 ].
             (currentCharacter between:$- and:$/) ifTrue:[
                 [
-                    self recordMatch:#( 30 ).
+                    self recordMatch:#( 33 ).
                     self step.
                     (currentCharacter isLetterOrDigit 
                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1247,7 +1361,7 @@
                 ^ self reportLastMatch
             ].
             (currentCharacter == $n) ifTrue:[
-                self recordMatch:#( 27 30 ).
+                self recordMatch:#( 30 33 ).
                 self step.
                 ((currentCharacter between:$0 and:$9) 
                     or:[
@@ -1263,7 +1377,7 @@
                         ifTrue:[ ^ self scan1 ].
                 (currentCharacter between:$- and:$/) ifTrue:[
                     [
-                        self recordMatch:#( 30 ).
+                        self recordMatch:#( 33 ).
                         self step.
                         (currentCharacter isLetterOrDigit 
                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1271,7 +1385,7 @@
                     ^ self reportLastMatch
                 ].
                 (currentCharacter == $c) ifTrue:[
-                    self recordMatch:#( 27 30 ).
+                    self recordMatch:#( 30 33 ).
                     self step.
                     ((currentCharacter between:$0 and:$9) 
                         or:[
@@ -1287,7 +1401,7 @@
                             ifTrue:[ ^ self scan1 ].
                     (currentCharacter between:$- and:$/) ifTrue:[
                         [
-                            self recordMatch:#( 30 ).
+                            self recordMatch:#( 33 ).
                             self step.
                             (currentCharacter isLetterOrDigit 
                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1295,7 +1409,7 @@
                         ^ self reportLastMatch
                     ].
                     (currentCharacter == $t) ifTrue:[
-                        self recordMatch:#( 27 30 ).
+                        self recordMatch:#( 30 33 ).
                         self step.
                         (currentCharacter isXMLDigit 
                             or:[
@@ -1311,7 +1425,7 @@
                                 ifTrue:[ ^ self scan1 ].
                         (currentCharacter between:$- and:$/) ifTrue:[
                             [
-                                self recordMatch:#( 30 ).
+                                self recordMatch:#( 33 ).
                                 self step.
                                 (currentCharacter isLetterOrDigit 
                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1319,7 +1433,7 @@
                             ^ self reportLastMatch
                         ].
                         (currentCharacter == $i) ifTrue:[
-                            self recordMatch:#( 27 30 ).
+                            self recordMatch:#( 30 33 ).
                             self step.
                             (currentCharacter isXMLDigit 
                                 or:[
@@ -1335,7 +1449,7 @@
                                     ifTrue:[ ^ self scan1 ].
                             (currentCharacter between:$- and:$/) ifTrue:[
                                 [
-                                    self recordMatch:#( 30 ).
+                                    self recordMatch:#( 33 ).
                                     self step.
                                     (currentCharacter isLetterOrDigit 
                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1343,7 +1457,7 @@
                                 ^ self reportLastMatch
                             ].
                             (currentCharacter == $o) ifTrue:[
-                                self recordMatch:#( 27 30 ).
+                                self recordMatch:#( 30 33 ).
                                 self step.
                                 ((currentCharacter between:$0 and:$9) 
                                     or:[
@@ -1359,7 +1473,7 @@
                                         ifTrue:[ ^ self scan1 ].
                                 (currentCharacter between:$- and:$/) ifTrue:[
                                     [
-                                        self recordMatch:#( 30 ).
+                                        self recordMatch:#( 33 ).
                                         self step.
                                         (currentCharacter isLetterOrDigit 
                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1367,14 +1481,14 @@
                                     ^ self reportLastMatch
                                 ].
                                 (currentCharacter == $n) ifTrue:[
-                                    self recordMatch:#( 27 30 ).
+                                    self recordMatch:#( 30 33 ).
                                     self step.
                                     (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
                                         ^ self scan1
                                     ].
                                     (currentCharacter between:$. and:$/) ifTrue:[
                                         [
-                                            self recordMatch:#( 30 ).
+                                            self recordMatch:#( 33 ).
                                             self step.
                                             (currentCharacter isLetterOrDigit 
                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1382,7 +1496,7 @@
                                         ^ self reportLastMatch
                                     ].
                                     (currentCharacter == $-) ifTrue:[
-                                        self recordMatch:#( 30 ).
+                                        self recordMatch:#( 33 ).
                                         self step.
                                         ((currentCharacter between:$- and:$9) 
                                             or:[
@@ -1397,7 +1511,7 @@
                                             ]) 
                                                 ifTrue:[
                                                     [
-                                                        self recordMatch:#( 30 ).
+                                                        self recordMatch:#( 33 ).
                                                         self step.
                                                         (currentCharacter isLetterOrDigit 
                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1405,7 +1519,7 @@
                                                     ^ self reportLastMatch
                                                 ].
                                         (currentCharacter == $t) ifTrue:[
-                                            self recordMatch:#( 30 ).
+                                            self recordMatch:#( 33 ).
                                             self step.
                                             ((currentCharacter between:$- and:$9) 
                                                 or:[
@@ -1417,7 +1531,7 @@
                                                 ]) 
                                                     ifTrue:[
                                                         [
-                                                            self recordMatch:#( 30 ).
+                                                            self recordMatch:#( 33 ).
                                                             self step.
                                                             (currentCharacter isLetterOrDigit 
                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1425,7 +1539,7 @@
                                                         ^ self reportLastMatch
                                                     ].
                                             (currentCharacter == $y) ifTrue:[
-                                                self recordMatch:#( 30 ).
+                                                self recordMatch:#( 33 ).
                                                 self step.
                                                 ((currentCharacter between:$- and:$9) 
                                                     or:[
@@ -1440,7 +1554,7 @@
                                                     ]) 
                                                         ifTrue:[
                                                             [
-                                                                self recordMatch:#( 30 ).
+                                                                self recordMatch:#( 33 ).
                                                                 self step.
                                                                 (currentCharacter isLetterOrDigit 
                                                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1448,7 +1562,7 @@
                                                             ^ self reportLastMatch
                                                         ].
                                                 (currentCharacter == $p) ifTrue:[
-                                                    self recordMatch:#( 30 ).
+                                                    self recordMatch:#( 33 ).
                                                     self step.
                                                     (currentCharacter isXMLDigit 
                                                         or:[
@@ -1466,7 +1580,7 @@
                                                         ]) 
                                                             ifTrue:[
                                                                 [
-                                                                    self recordMatch:#( 30 ).
+                                                                    self recordMatch:#( 33 ).
                                                                     self step.
                                                                     (currentCharacter isLetterOrDigit 
                                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1474,13 +1588,13 @@
                                                                 ^ self reportLastMatch
                                                             ].
                                                     (currentCharacter == $e) ifTrue:[
-                                                        self recordMatch:#( 1 30 ).
+                                                        self recordMatch:#( 4 33 ).
                                                         self step.
                                                         (currentCharacter isLetterOrDigit 
                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
                                                                 ifTrue:[
                                                                     [
-                                                                        self recordMatch:#( 30 ).
+                                                                        self recordMatch:#( 33 ).
                                                                         self step.
                                                                         (currentCharacter isLetterOrDigit 
                                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1514,7 +1628,7 @@
         ^ self reportLastMatch
     ].
     (currentCharacter == $p) ifTrue:[
-        self recordMatch:#( 27 30 ).
+        self recordMatch:#( 30 33 ).
         self step.
         (currentCharacter isXMLDigit 
             or:[
@@ -1530,7 +1644,7 @@
                 ifTrue:[ ^ self scan1 ].
         (currentCharacter between:$- and:$/) ifTrue:[
             [
-                self recordMatch:#( 30 ).
+                self recordMatch:#( 33 ).
                 self step.
                 (currentCharacter isLetterOrDigit 
                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1538,7 +1652,7 @@
             ^ self reportLastMatch
         ].
         (currentCharacter == $o) ifTrue:[
-            self recordMatch:#( 27 30 ).
+            self recordMatch:#( 30 33 ).
             self step.
             (currentCharacter isXMLDigit 
                 or:[
@@ -1554,7 +1668,7 @@
                     ifTrue:[ ^ self scan1 ].
             (currentCharacter between:$- and:$/) ifTrue:[
                 [
-                    self recordMatch:#( 30 ).
+                    self recordMatch:#( 33 ).
                     self step.
                     (currentCharacter isLetterOrDigit 
                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1562,7 +1676,7 @@
                 ^ self reportLastMatch
             ].
             (currentCharacter == $i) ifTrue:[
-                self recordMatch:#( 27 30 ).
+                self recordMatch:#( 30 33 ).
                 self step.
                 ((currentCharacter between:$0 and:$9) 
                     or:[
@@ -1578,7 +1692,7 @@
                         ifTrue:[ ^ self scan1 ].
                 (currentCharacter between:$- and:$/) ifTrue:[
                     [
-                        self recordMatch:#( 30 ).
+                        self recordMatch:#( 33 ).
                         self step.
                         (currentCharacter isLetterOrDigit 
                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1586,7 +1700,7 @@
                     ^ self reportLastMatch
                 ].
                 (currentCharacter == $n) ifTrue:[
-                    self recordMatch:#( 27 30 ).
+                    self recordMatch:#( 30 33 ).
                     self step.
                     ((currentCharacter between:$0 and:$9) 
                         or:[
@@ -1602,7 +1716,7 @@
                             ifTrue:[ ^ self scan1 ].
                     (currentCharacter between:$- and:$/) ifTrue:[
                         [
-                            self recordMatch:#( 30 ).
+                            self recordMatch:#( 33 ).
                             self step.
                             (currentCharacter isLetterOrDigit 
                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1610,7 +1724,7 @@
                         ^ self reportLastMatch
                     ].
                     (currentCharacter == $t) ifTrue:[
-                        self recordMatch:#( 27 30 ).
+                        self recordMatch:#( 30 33 ).
                         self step.
                         (currentCharacter isXMLDigit 
                             or:[
@@ -1626,7 +1740,7 @@
                                 ifTrue:[ ^ self scan1 ].
                         (currentCharacter between:$- and:$/) ifTrue:[
                             [
-                                self recordMatch:#( 30 ).
+                                self recordMatch:#( 33 ).
                                 self step.
                                 (currentCharacter isLetterOrDigit 
                                     or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1634,7 +1748,7 @@
                             ^ self reportLastMatch
                         ].
                         (currentCharacter == $e) ifTrue:[
-                            self recordMatch:#( 27 30 ).
+                            self recordMatch:#( 30 33 ).
                             self step.
                             ((currentCharacter between:$0 and:$9) 
                                 or:[
@@ -1650,7 +1764,7 @@
                                     ifTrue:[ ^ self scan1 ].
                             (currentCharacter between:$- and:$/) ifTrue:[
                                 [
-                                    self recordMatch:#( 30 ).
+                                    self recordMatch:#( 33 ).
                                     self step.
                                     (currentCharacter isLetterOrDigit 
                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1658,14 +1772,14 @@
                                 ^ self reportLastMatch
                             ].
                             (currentCharacter == $r) ifTrue:[
-                                self recordMatch:#( 27 30 ).
+                                self recordMatch:#( 30 33 ).
                                 self step.
                                 (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
                                     ^ self scan1
                                 ].
                                 (currentCharacter between:$. and:$/) ifTrue:[
                                     [
-                                        self recordMatch:#( 30 ).
+                                        self recordMatch:#( 33 ).
                                         self step.
                                         (currentCharacter isLetterOrDigit 
                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1673,7 +1787,7 @@
                                     ^ self reportLastMatch
                                 ].
                                 (currentCharacter == $-) ifTrue:[
-                                    self recordMatch:#( 30 ).
+                                    self recordMatch:#( 33 ).
                                     self step.
                                     ((currentCharacter between:$- and:$9) 
                                         or:[
@@ -1688,7 +1802,7 @@
                                         ]) 
                                             ifTrue:[
                                                 [
-                                                    self recordMatch:#( 30 ).
+                                                    self recordMatch:#( 33 ).
                                                     self step.
                                                     (currentCharacter isLetterOrDigit 
                                                         or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1696,7 +1810,7 @@
                                                 ^ self reportLastMatch
                                             ].
                                     (currentCharacter == $t) ifTrue:[
-                                        self recordMatch:#( 30 ).
+                                        self recordMatch:#( 33 ).
                                         self step.
                                         (currentCharacter isXMLDigit 
                                             or:[
@@ -1714,7 +1828,7 @@
                                             ]) 
                                                 ifTrue:[
                                                     [
-                                                        self recordMatch:#( 30 ).
+                                                        self recordMatch:#( 33 ).
                                                         self step.
                                                         (currentCharacter isLetterOrDigit 
                                                             or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1722,13 +1836,13 @@
                                                     ^ self reportLastMatch
                                                 ].
                                         (currentCharacter == $o) ifTrue:[
-                                            self recordMatch:#( 23 30 ).
+                                            self recordMatch:#( 29 33 ).
                                             self step.
                                             (currentCharacter isLetterOrDigit 
                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
                                                     ifTrue:[
                                                         [
-                                                            self recordMatch:#( 30 ).
+                                                            self recordMatch:#( 33 ).
                                                             self step.
                                                             (currentCharacter isLetterOrDigit 
                                                                 or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
@@ -1755,23 +1869,1061 @@
         ].
         ^ self reportLastMatch
     ].
+    (currentCharacter == $s) ifTrue:[
+        self recordMatch:#( 30 33 ).
+        self step.
+        ((currentCharacter between:$0 and:$9) 
+            or:[
+                (currentCharacter between:$A and:$Z) 
+                    or:[
+                        currentCharacter == $_ 
+                            or:[
+                                (currentCharacter between:$a and:$s) 
+                                    or:[ (currentCharacter between:$u and:$z) ]
+                            ]
+                    ]
+            ]) 
+                ifTrue:[ ^ self scan1 ].
+        (currentCharacter between:$- and:$/) ifTrue:[
+            [
+                self recordMatch:#( 33 ).
+                self step.
+                (currentCharacter isLetterOrDigit 
+                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+            ] whileTrue.
+            ^ self reportLastMatch
+        ].
+        (currentCharacter == $t) ifTrue:[
+            self recordMatch:#( 30 33 ).
+            self step.
+            ((currentCharacter between:$0 and:$9) 
+                or:[
+                    (currentCharacter between:$A and:$Z) 
+                        or:[
+                            currentCharacter == $_ 
+                                or:[
+                                    (currentCharacter between:$a and:$q) 
+                                        or:[ (currentCharacter between:$s and:$z) ]
+                                ]
+                        ]
+                ]) 
+                    ifTrue:[ ^ self scan1 ].
+            (currentCharacter between:$- and:$/) ifTrue:[
+                [
+                    self recordMatch:#( 33 ).
+                    self step.
+                    (currentCharacter isLetterOrDigit 
+                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                ] whileTrue.
+                ^ self reportLastMatch
+            ].
+            (currentCharacter == $r) ifTrue:[
+                self recordMatch:#( 30 33 ).
+                self step.
+                (currentCharacter isXMLDigit 
+                    or:[
+                        (currentCharacter between:$A and:$Z) 
+                            or:[
+                                currentCharacter == $_ 
+                                    or:[
+                                        (currentCharacter between:$a and:$t) 
+                                            or:[ (currentCharacter between:$v and:$z) ]
+                                    ]
+                            ]
+                    ]) 
+                        ifTrue:[ ^ self scan1 ].
+                (currentCharacter between:$- and:$/) ifTrue:[
+                    [
+                        self recordMatch:#( 33 ).
+                        self step.
+                        (currentCharacter isLetterOrDigit 
+                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                    ] whileTrue.
+                    ^ self reportLastMatch
+                ].
+                (currentCharacter == $u) ifTrue:[
+                    self recordMatch:#( 30 33 ).
+                    self step.
+                    ((currentCharacter between:$0 and:$9) 
+                        or:[
+                            (currentCharacter between:$A and:$Z) 
+                                or:[
+                                    currentCharacter == $_ 
+                                        or:[
+                                            (currentCharacter between:$a and:$b) 
+                                                or:[ (currentCharacter between:$d and:$z) ]
+                                        ]
+                                ]
+                        ]) 
+                            ifTrue:[ ^ self scan1 ].
+                    (currentCharacter between:$- and:$/) ifTrue:[
+                        [
+                            self recordMatch:#( 33 ).
+                            self step.
+                            (currentCharacter isLetterOrDigit 
+                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                        ] whileTrue.
+                        ^ self reportLastMatch
+                    ].
+                    (currentCharacter == $c) ifTrue:[
+                        self recordMatch:#( 30 33 ).
+                        self step.
+                        ((currentCharacter between:$0 and:$9) 
+                            or:[
+                                (currentCharacter between:$A and:$Z) 
+                                    or:[
+                                        currentCharacter == $_ 
+                                            or:[
+                                                (currentCharacter between:$a and:$s) 
+                                                    or:[ (currentCharacter between:$u and:$z) ]
+                                            ]
+                                    ]
+                            ]) 
+                                ifTrue:[ ^ self scan1 ].
+                        (currentCharacter between:$- and:$/) ifTrue:[
+                            [
+                                self recordMatch:#( 33 ).
+                                self step.
+                                (currentCharacter isLetterOrDigit 
+                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                            ] whileTrue.
+                            ^ self reportLastMatch
+                        ].
+                        (currentCharacter == $t) ifTrue:[
+                            self recordMatch:#( 30 33 ).
+                            self step.
+                            (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+                                ^ self scan1
+                            ].
+                            (currentCharacter between:$. and:$/) ifTrue:[
+                                [
+                                    self recordMatch:#( 33 ).
+                                    self step.
+                                    (currentCharacter isLetterOrDigit 
+                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                ] whileTrue.
+                                ^ self reportLastMatch
+                            ].
+                            (currentCharacter == $-) ifTrue:[
+                                self recordMatch:#( 33 ).
+                                self step.
+                                ((currentCharacter between:$- and:$9) 
+                                    or:[
+                                        (currentCharacter between:$A and:$Z) 
+                                            or:[
+                                                currentCharacter == $_ 
+                                                    or:[
+                                                        (currentCharacter between:$a and:$e) 
+                                                            or:[ (currentCharacter between:$g and:$z) ]
+                                                    ]
+                                            ]
+                                    ]) 
+                                        ifTrue:[
+                                            [
+                                                self recordMatch:#( 33 ).
+                                                self step.
+                                                (currentCharacter isLetterOrDigit 
+                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                            ] whileTrue.
+                                            ^ self reportLastMatch
+                                        ].
+                                (currentCharacter == $f) ifTrue:[
+                                    self recordMatch:#( 33 ).
+                                    self step.
+                                    (currentCharacter isXMLDigit 
+                                        or:[
+                                            (currentCharacter between:$- and:$/) 
+                                                or:[
+                                                    (currentCharacter between:$A and:$Z) 
+                                                        or:[
+                                                            currentCharacter == $_ 
+                                                                or:[
+                                                                    (currentCharacter between:$a and:$n) 
+                                                                        or:[ (currentCharacter between:$p and:$z) ]
+                                                                ]
+                                                        ]
+                                                ]
+                                        ]) 
+                                            ifTrue:[
+                                                [
+                                                    self recordMatch:#( 33 ).
+                                                    self step.
+                                                    (currentCharacter isLetterOrDigit 
+                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                ] whileTrue.
+                                                ^ self reportLastMatch
+                                            ].
+                                    (currentCharacter == $o) ifTrue:[
+                                        self recordMatch:#( 33 ).
+                                        self step.
+                                        ((currentCharacter between:$- and:$9) 
+                                            or:[
+                                                (currentCharacter between:$A and:$Z) 
+                                                    or:[
+                                                        currentCharacter == $_ 
+                                                            or:[
+                                                                (currentCharacter between:$a and:$q) 
+                                                                    or:[ (currentCharacter between:$s and:$z) ]
+                                                            ]
+                                                    ]
+                                            ]) 
+                                                ifTrue:[
+                                                    [
+                                                        self recordMatch:#( 33 ).
+                                                        self step.
+                                                        (currentCharacter isLetterOrDigit 
+                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                    ] whileTrue.
+                                                    ^ self reportLastMatch
+                                                ].
+                                        (currentCharacter == $r) ifTrue:[
+                                            self recordMatch:#( 33 ).
+                                            self step.
+                                            (currentCharacter isXMLDigit 
+                                                or:[
+                                                    (currentCharacter between:$- and:$/) 
+                                                        or:[
+                                                            (currentCharacter between:$A and:$Z) 
+                                                                or:[
+                                                                    currentCharacter == $_ 
+                                                                        or:[
+                                                                            (currentCharacter between:$a and:$d) 
+                                                                                or:[ (currentCharacter between:$f and:$z) ]
+                                                                        ]
+                                                                ]
+                                                        ]
+                                                ]) 
+                                                    ifTrue:[
+                                                        [
+                                                            self recordMatch:#( 33 ).
+                                                            self step.
+                                                            (currentCharacter isLetterOrDigit 
+                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                        ] whileTrue.
+                                                        ^ self reportLastMatch
+                                                    ].
+                                            (currentCharacter == $e) ifTrue:[
+                                                self recordMatch:#( 33 ).
+                                                self step.
+                                                (currentCharacter isXMLDigit 
+                                                    or:[
+                                                        (currentCharacter between:$- and:$/) 
+                                                            or:[
+                                                                (currentCharacter between:$A and:$Z) 
+                                                                    or:[
+                                                                        currentCharacter == $_ 
+                                                                            or:[
+                                                                                (currentCharacter between:$a and:$h) 
+                                                                                    or:[ (currentCharacter between:$j and:$z) ]
+                                                                            ]
+                                                                    ]
+                                                            ]
+                                                    ]) 
+                                                        ifTrue:[
+                                                            [
+                                                                self recordMatch:#( 33 ).
+                                                                self step.
+                                                                (currentCharacter isLetterOrDigit 
+                                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                            ] whileTrue.
+                                                            ^ self reportLastMatch
+                                                        ].
+                                                (currentCharacter == $i) ifTrue:[
+                                                    self recordMatch:#( 33 ).
+                                                    self step.
+                                                    ((currentCharacter between:$- and:$9) 
+                                                        or:[
+                                                            (currentCharacter between:$A and:$Z) 
+                                                                or:[
+                                                                    currentCharacter == $_ 
+                                                                        or:[
+                                                                            (currentCharacter between:$a and:$f) 
+                                                                                or:[ (currentCharacter between:$h and:$z) ]
+                                                                        ]
+                                                                ]
+                                                        ]) 
+                                                            ifTrue:[
+                                                                [
+                                                                    self recordMatch:#( 33 ).
+                                                                    self step.
+                                                                    (currentCharacter isLetterOrDigit 
+                                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                ] whileTrue.
+                                                                ^ self reportLastMatch
+                                                            ].
+                                                    (currentCharacter == $g) ifTrue:[
+                                                        self recordMatch:#( 33 ).
+                                                        self step.
+                                                        ((currentCharacter between:$- and:$9) 
+                                                            or:[
+                                                                (currentCharacter between:$A and:$Z) 
+                                                                    or:[
+                                                                        currentCharacter == $_ 
+                                                                            or:[
+                                                                                (currentCharacter between:$a and:$m) 
+                                                                                    or:[ (currentCharacter between:$o and:$z) ]
+                                                                            ]
+                                                                    ]
+                                                            ]) 
+                                                                ifTrue:[
+                                                                    [
+                                                                        self recordMatch:#( 33 ).
+                                                                        self step.
+                                                                        (currentCharacter isLetterOrDigit 
+                                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                    ] whileTrue.
+                                                                    ^ self reportLastMatch
+                                                                ].
+                                                        (currentCharacter == $n) ifTrue:[
+                                                            self recordMatch:#( 27 33 ).
+                                                            self step.
+                                                            (currentCharacter isLetterOrDigit 
+                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
+                                                                    ifTrue:[
+                                                                        [
+                                                                            self recordMatch:#( 33 ).
+                                                                            self step.
+                                                                            (currentCharacter isLetterOrDigit 
+                                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                        ] whileTrue.
+                                                                        ^ self reportLastMatch
+                                                                    ].
+                                                            ^ self reportLastMatch
+                                                        ].
+                                                        ^ self reportLastMatch
+                                                    ].
+                                                    ^ self reportLastMatch
+                                                ].
+                                                ^ self reportLastMatch
+                                            ].
+                                            ^ self reportLastMatch
+                                        ].
+                                        ^ self reportLastMatch
+                                    ].
+                                    ^ self reportLastMatch
+                                ].
+                                ^ self reportLastMatch
+                            ].
+                            ^ self reportLastMatch
+                        ].
+                        ^ self reportLastMatch
+                    ].
+                    ^ self reportLastMatch
+                ].
+                ^ self reportLastMatch
+            ].
+            ^ self reportLastMatch
+        ].
+        ^ self reportLastMatch
+    ].
+    (currentCharacter == $t) ifTrue:[
+        self recordMatch:#( 30 33 ).
+        self step.
+        ((currentCharacter between:$0 and:$9) 
+            or:[
+                (currentCharacter between:$A and:$Z) 
+                    or:[
+                        currentCharacter == $_ 
+                            or:[ (currentCharacter between:$a and:$x) or:[ currentCharacter == $z ] ]
+                    ]
+            ]) 
+                ifTrue:[ ^ self scan1 ].
+        (currentCharacter between:$- and:$/) ifTrue:[
+            [
+                self recordMatch:#( 33 ).
+                self step.
+                (currentCharacter isLetterOrDigit 
+                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+            ] whileTrue.
+            ^ self reportLastMatch
+        ].
+        (currentCharacter == $y) ifTrue:[
+            self recordMatch:#( 30 33 ).
+            self step.
+            ((currentCharacter between:$0 and:$9) 
+                or:[
+                    (currentCharacter between:$A and:$Z) 
+                        or:[
+                            currentCharacter == $_ 
+                                or:[
+                                    (currentCharacter between:$a and:$o) 
+                                        or:[ (currentCharacter between:$q and:$z) ]
+                                ]
+                        ]
+                ]) 
+                    ifTrue:[ ^ self scan1 ].
+            (currentCharacter between:$- and:$/) ifTrue:[
+                [
+                    self recordMatch:#( 33 ).
+                    self step.
+                    (currentCharacter isLetterOrDigit 
+                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                ] whileTrue.
+                ^ self reportLastMatch
+            ].
+            (currentCharacter == $p) ifTrue:[
+                self recordMatch:#( 30 33 ).
+                self step.
+                (currentCharacter isXMLDigit 
+                    or:[
+                        (currentCharacter between:$A and:$Z) 
+                            or:[
+                                currentCharacter == $_ 
+                                    or:[
+                                        (currentCharacter between:$a and:$d) 
+                                            or:[ (currentCharacter between:$f and:$z) ]
+                                    ]
+                            ]
+                    ]) 
+                        ifTrue:[ ^ self scan1 ].
+                (currentCharacter between:$- and:$/) ifTrue:[
+                    [
+                        self recordMatch:#( 33 ).
+                        self step.
+                        (currentCharacter isLetterOrDigit 
+                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                    ] whileTrue.
+                    ^ self reportLastMatch
+                ].
+                (currentCharacter == $e) ifTrue:[
+                    self recordMatch:#( 30 33 ).
+                    self step.
+                    ((currentCharacter between:$0 and:$9) 
+                        or:[
+                            (currentCharacter between:$A and:$Z) 
+                                or:[
+                                    currentCharacter == $_ 
+                                        or:[
+                                            (currentCharacter between:$a and:$c) 
+                                                or:[ (currentCharacter between:$e and:$z) ]
+                                        ]
+                                ]
+                        ]) 
+                            ifTrue:[ ^ self scan1 ].
+                    (currentCharacter between:$- and:$/) ifTrue:[
+                        [
+                            self recordMatch:#( 33 ).
+                            self step.
+                            (currentCharacter isLetterOrDigit 
+                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                        ] whileTrue.
+                        ^ self reportLastMatch
+                    ].
+                    (currentCharacter == $d) ifTrue:[
+                        self recordMatch:#( 30 33 ).
+                        self step.
+                        (currentCharacter isXMLDigit 
+                            or:[
+                                (currentCharacter between:$A and:$Z) 
+                                    or:[
+                                        currentCharacter == $_ 
+                                            or:[
+                                                (currentCharacter between:$a and:$d) 
+                                                    or:[ (currentCharacter between:$f and:$z) ]
+                                            ]
+                                    ]
+                            ]) 
+                                ifTrue:[ ^ self scan1 ].
+                        (currentCharacter between:$- and:$/) ifTrue:[
+                            [
+                                self recordMatch:#( 33 ).
+                                self step.
+                                (currentCharacter isLetterOrDigit 
+                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                            ] whileTrue.
+                            ^ self reportLastMatch
+                        ].
+                        (currentCharacter == $e) ifTrue:[
+                            self recordMatch:#( 30 33 ).
+                            self step.
+                            ((currentCharacter between:$0 and:$9) 
+                                or:[
+                                    (currentCharacter between:$A and:$Z) 
+                                        or:[
+                                            currentCharacter == $_ 
+                                                or:[
+                                                    (currentCharacter between:$a and:$e) 
+                                                        or:[ (currentCharacter between:$g and:$z) ]
+                                                ]
+                                        ]
+                                ]) 
+                                    ifTrue:[ ^ self scan1 ].
+                            (currentCharacter between:$- and:$/) ifTrue:[
+                                [
+                                    self recordMatch:#( 33 ).
+                                    self step.
+                                    (currentCharacter isLetterOrDigit 
+                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                ] whileTrue.
+                                ^ self reportLastMatch
+                            ].
+                            (currentCharacter == $f) ifTrue:[
+                                self recordMatch:#( 30 33 ).
+                                self step.
+                                (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+                                    ^ self scan1
+                                ].
+                                (currentCharacter between:$. and:$/) ifTrue:[
+                                    [
+                                        self recordMatch:#( 33 ).
+                                        self step.
+                                        (currentCharacter isLetterOrDigit 
+                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                    ] whileTrue.
+                                    ^ self reportLastMatch
+                                ].
+                                (currentCharacter == $-) ifTrue:[
+                                    self recordMatch:#( 33 ).
+                                    self step.
+                                    ((currentCharacter between:$- and:$9) 
+                                        or:[
+                                            (currentCharacter between:$A and:$Z) 
+                                                or:[
+                                                    currentCharacter == $_ 
+                                                        or:[
+                                                            (currentCharacter between:$a and:$e) 
+                                                                or:[ (currentCharacter between:$g and:$z) ]
+                                                        ]
+                                                ]
+                                        ]) 
+                                            ifTrue:[
+                                                [
+                                                    self recordMatch:#( 33 ).
+                                                    self step.
+                                                    (currentCharacter isLetterOrDigit 
+                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                ] whileTrue.
+                                                ^ self reportLastMatch
+                                            ].
+                                    (currentCharacter == $f) ifTrue:[
+                                        self recordMatch:#( 33 ).
+                                        self step.
+                                        (currentCharacter isXMLDigit 
+                                            or:[
+                                                (currentCharacter between:$- and:$/) 
+                                                    or:[
+                                                        (currentCharacter between:$A and:$Z) 
+                                                            or:[
+                                                                currentCharacter == $_ 
+                                                                    or:[
+                                                                        (currentCharacter between:$a and:$n) 
+                                                                            or:[ (currentCharacter between:$p and:$z) ]
+                                                                    ]
+                                                            ]
+                                                    ]
+                                            ]) 
+                                                ifTrue:[
+                                                    [
+                                                        self recordMatch:#( 33 ).
+                                                        self step.
+                                                        (currentCharacter isLetterOrDigit 
+                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                    ] whileTrue.
+                                                    ^ self reportLastMatch
+                                                ].
+                                        (currentCharacter == $o) ifTrue:[
+                                            self recordMatch:#( 33 ).
+                                            self step.
+                                            ((currentCharacter between:$- and:$9) 
+                                                or:[
+                                                    (currentCharacter between:$A and:$Z) 
+                                                        or:[
+                                                            currentCharacter == $_ 
+                                                                or:[
+                                                                    (currentCharacter between:$a and:$q) 
+                                                                        or:[ (currentCharacter between:$s and:$z) ]
+                                                                ]
+                                                        ]
+                                                ]) 
+                                                    ifTrue:[
+                                                        [
+                                                            self recordMatch:#( 33 ).
+                                                            self step.
+                                                            (currentCharacter isLetterOrDigit 
+                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                        ] whileTrue.
+                                                        ^ self reportLastMatch
+                                                    ].
+                                            (currentCharacter == $r) ifTrue:[
+                                                self recordMatch:#( 33 ).
+                                                self step.
+                                                (currentCharacter isXMLDigit 
+                                                    or:[
+                                                        (currentCharacter between:$- and:$/) 
+                                                            or:[
+                                                                (currentCharacter between:$A and:$Z) 
+                                                                    or:[
+                                                                        currentCharacter == $_ 
+                                                                            or:[
+                                                                                (currentCharacter between:$a and:$d) 
+                                                                                    or:[ (currentCharacter between:$f and:$z) ]
+                                                                            ]
+                                                                    ]
+                                                            ]
+                                                    ]) 
+                                                        ifTrue:[
+                                                            [
+                                                                self recordMatch:#( 33 ).
+                                                                self step.
+                                                                (currentCharacter isLetterOrDigit 
+                                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                            ] whileTrue.
+                                                            ^ self reportLastMatch
+                                                        ].
+                                                (currentCharacter == $e) ifTrue:[
+                                                    self recordMatch:#( 33 ).
+                                                    self step.
+                                                    (currentCharacter isXMLDigit 
+                                                        or:[
+                                                            (currentCharacter between:$- and:$/) 
+                                                                or:[
+                                                                    (currentCharacter between:$A and:$Z) 
+                                                                        or:[
+                                                                            currentCharacter == $_ 
+                                                                                or:[
+                                                                                    (currentCharacter between:$a and:$h) 
+                                                                                        or:[ (currentCharacter between:$j and:$z) ]
+                                                                                ]
+                                                                        ]
+                                                                ]
+                                                        ]) 
+                                                            ifTrue:[
+                                                                [
+                                                                    self recordMatch:#( 33 ).
+                                                                    self step.
+                                                                    (currentCharacter isLetterOrDigit 
+                                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                ] whileTrue.
+                                                                ^ self reportLastMatch
+                                                            ].
+                                                    (currentCharacter == $i) ifTrue:[
+                                                        self recordMatch:#( 33 ).
+                                                        self step.
+                                                        ((currentCharacter between:$- and:$9) 
+                                                            or:[
+                                                                (currentCharacter between:$A and:$Z) 
+                                                                    or:[
+                                                                        currentCharacter == $_ 
+                                                                            or:[
+                                                                                (currentCharacter between:$a and:$f) 
+                                                                                    or:[ (currentCharacter between:$h and:$z) ]
+                                                                            ]
+                                                                    ]
+                                                            ]) 
+                                                                ifTrue:[
+                                                                    [
+                                                                        self recordMatch:#( 33 ).
+                                                                        self step.
+                                                                        (currentCharacter isLetterOrDigit 
+                                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                    ] whileTrue.
+                                                                    ^ self reportLastMatch
+                                                                ].
+                                                        (currentCharacter == $g) ifTrue:[
+                                                            self recordMatch:#( 33 ).
+                                                            self step.
+                                                            ((currentCharacter between:$- and:$9) 
+                                                                or:[
+                                                                    (currentCharacter between:$A and:$Z) 
+                                                                        or:[
+                                                                            currentCharacter == $_ 
+                                                                                or:[
+                                                                                    (currentCharacter between:$a and:$m) 
+                                                                                        or:[ (currentCharacter between:$o and:$z) ]
+                                                                                ]
+                                                                        ]
+                                                                ]) 
+                                                                    ifTrue:[
+                                                                        [
+                                                                            self recordMatch:#( 33 ).
+                                                                            self step.
+                                                                            (currentCharacter isLetterOrDigit 
+                                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                        ] whileTrue.
+                                                                        ^ self reportLastMatch
+                                                                    ].
+                                                            (currentCharacter == $n) ifTrue:[
+                                                                self recordMatch:#( 8 33 ).
+                                                                self step.
+                                                                (currentCharacter isLetterOrDigit 
+                                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
+                                                                        ifTrue:[
+                                                                            [
+                                                                                self recordMatch:#( 33 ).
+                                                                                self step.
+                                                                                (currentCharacter isLetterOrDigit 
+                                                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                            ] whileTrue.
+                                                                            ^ self reportLastMatch
+                                                                        ].
+                                                                ^ self reportLastMatch
+                                                            ].
+                                                            ^ self reportLastMatch
+                                                        ].
+                                                        ^ self reportLastMatch
+                                                    ].
+                                                    ^ self reportLastMatch
+                                                ].
+                                                ^ self reportLastMatch
+                                            ].
+                                            ^ self reportLastMatch
+                                        ].
+                                        ^ self reportLastMatch
+                                    ].
+                                    ^ self reportLastMatch
+                                ].
+                                ^ self reportLastMatch
+                            ].
+                            ^ self reportLastMatch
+                        ].
+                        ^ self reportLastMatch
+                    ].
+                    ^ self reportLastMatch
+                ].
+                ^ self reportLastMatch
+            ].
+            ^ self reportLastMatch
+        ].
+        ^ self reportLastMatch
+    ].
+    (currentCharacter == $u) ifTrue:[
+        self recordMatch:#( 30 33 ).
+        self step.
+        ((currentCharacter between:$0 and:$9) 
+            or:[
+                (currentCharacter between:$A and:$Z) 
+                    or:[
+                        currentCharacter == $_ 
+                            or:[
+                                (currentCharacter between:$a and:$m) 
+                                    or:[ (currentCharacter between:$o and:$z) ]
+                            ]
+                    ]
+            ]) 
+                ifTrue:[ ^ self scan1 ].
+        (currentCharacter between:$- and:$/) ifTrue:[
+            [
+                self recordMatch:#( 33 ).
+                self step.
+                (currentCharacter isLetterOrDigit 
+                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+            ] whileTrue.
+            ^ self reportLastMatch
+        ].
+        (currentCharacter == $n) ifTrue:[
+            self recordMatch:#( 30 33 ).
+            self step.
+            (currentCharacter isXMLDigit 
+                or:[
+                    (currentCharacter between:$A and:$Z) 
+                        or:[
+                            currentCharacter == $_ 
+                                or:[
+                                    (currentCharacter between:$a and:$h) 
+                                        or:[ (currentCharacter between:$j and:$z) ]
+                                ]
+                        ]
+                ]) 
+                    ifTrue:[ ^ self scan1 ].
+            (currentCharacter between:$- and:$/) ifTrue:[
+                [
+                    self recordMatch:#( 33 ).
+                    self step.
+                    (currentCharacter isLetterOrDigit 
+                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                ] whileTrue.
+                ^ self reportLastMatch
+            ].
+            (currentCharacter == $i) ifTrue:[
+                self recordMatch:#( 30 33 ).
+                self step.
+                (currentCharacter isXMLDigit 
+                    or:[
+                        (currentCharacter between:$A and:$Z) 
+                            or:[
+                                currentCharacter == $_ 
+                                    or:[
+                                        (currentCharacter between:$a and:$n) 
+                                            or:[ (currentCharacter between:$p and:$z) ]
+                                    ]
+                            ]
+                    ]) 
+                        ifTrue:[ ^ self scan1 ].
+                (currentCharacter between:$- and:$/) ifTrue:[
+                    [
+                        self recordMatch:#( 33 ).
+                        self step.
+                        (currentCharacter isLetterOrDigit 
+                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                    ] whileTrue.
+                    ^ self reportLastMatch
+                ].
+                (currentCharacter == $o) ifTrue:[
+                    self recordMatch:#( 30 33 ).
+                    self step.
+                    ((currentCharacter between:$0 and:$9) 
+                        or:[
+                            (currentCharacter between:$A and:$Z) 
+                                or:[
+                                    currentCharacter == $_ 
+                                        or:[
+                                            (currentCharacter between:$a and:$m) 
+                                                or:[ (currentCharacter between:$o and:$z) ]
+                                        ]
+                                ]
+                        ]) 
+                            ifTrue:[ ^ self scan1 ].
+                    (currentCharacter between:$- and:$/) ifTrue:[
+                        [
+                            self recordMatch:#( 33 ).
+                            self step.
+                            (currentCharacter isLetterOrDigit 
+                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                        ] whileTrue.
+                        ^ self reportLastMatch
+                    ].
+                    (currentCharacter == $n) ifTrue:[
+                        self recordMatch:#( 30 33 ).
+                        self step.
+                        (currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
+                            ^ self scan1
+                        ].
+                        (currentCharacter between:$. and:$/) ifTrue:[
+                            [
+                                self recordMatch:#( 33 ).
+                                self step.
+                                (currentCharacter isLetterOrDigit 
+                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                            ] whileTrue.
+                            ^ self reportLastMatch
+                        ].
+                        (currentCharacter == $-) ifTrue:[
+                            self recordMatch:#( 33 ).
+                            self step.
+                            ((currentCharacter between:$- and:$9) 
+                                or:[
+                                    (currentCharacter between:$A and:$Z) 
+                                        or:[
+                                            currentCharacter == $_ 
+                                                or:[
+                                                    (currentCharacter between:$a and:$e) 
+                                                        or:[ (currentCharacter between:$g and:$z) ]
+                                                ]
+                                        ]
+                                ]) 
+                                    ifTrue:[
+                                        [
+                                            self recordMatch:#( 33 ).
+                                            self step.
+                                            (currentCharacter isLetterOrDigit 
+                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                        ] whileTrue.
+                                        ^ self reportLastMatch
+                                    ].
+                            (currentCharacter == $f) ifTrue:[
+                                self recordMatch:#( 33 ).
+                                self step.
+                                (currentCharacter isXMLDigit 
+                                    or:[
+                                        (currentCharacter between:$- and:$/) 
+                                            or:[
+                                                (currentCharacter between:$A and:$Z) 
+                                                    or:[
+                                                        currentCharacter == $_ 
+                                                            or:[
+                                                                (currentCharacter between:$a and:$n) 
+                                                                    or:[ (currentCharacter between:$p and:$z) ]
+                                                            ]
+                                                    ]
+                                            ]
+                                    ]) 
+                                        ifTrue:[
+                                            [
+                                                self recordMatch:#( 33 ).
+                                                self step.
+                                                (currentCharacter isLetterOrDigit 
+                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                            ] whileTrue.
+                                            ^ self reportLastMatch
+                                        ].
+                                (currentCharacter == $o) ifTrue:[
+                                    self recordMatch:#( 33 ).
+                                    self step.
+                                    ((currentCharacter between:$- and:$9) 
+                                        or:[
+                                            (currentCharacter between:$A and:$Z) 
+                                                or:[
+                                                    currentCharacter == $_ 
+                                                        or:[
+                                                            (currentCharacter between:$a and:$q) 
+                                                                or:[ (currentCharacter between:$s and:$z) ]
+                                                        ]
+                                                ]
+                                        ]) 
+                                            ifTrue:[
+                                                [
+                                                    self recordMatch:#( 33 ).
+                                                    self step.
+                                                    (currentCharacter isLetterOrDigit 
+                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                ] whileTrue.
+                                                ^ self reportLastMatch
+                                            ].
+                                    (currentCharacter == $r) ifTrue:[
+                                        self recordMatch:#( 33 ).
+                                        self step.
+                                        (currentCharacter isXMLDigit 
+                                            or:[
+                                                (currentCharacter between:$- and:$/) 
+                                                    or:[
+                                                        (currentCharacter between:$A and:$Z) 
+                                                            or:[
+                                                                currentCharacter == $_ 
+                                                                    or:[
+                                                                        (currentCharacter between:$a and:$d) 
+                                                                            or:[ (currentCharacter between:$f and:$z) ]
+                                                                    ]
+                                                            ]
+                                                    ]
+                                            ]) 
+                                                ifTrue:[
+                                                    [
+                                                        self recordMatch:#( 33 ).
+                                                        self step.
+                                                        (currentCharacter isLetterOrDigit 
+                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                    ] whileTrue.
+                                                    ^ self reportLastMatch
+                                                ].
+                                        (currentCharacter == $e) ifTrue:[
+                                            self recordMatch:#( 33 ).
+                                            self step.
+                                            (currentCharacter isXMLDigit 
+                                                or:[
+                                                    (currentCharacter between:$- and:$/) 
+                                                        or:[
+                                                            (currentCharacter between:$A and:$Z) 
+                                                                or:[
+                                                                    currentCharacter == $_ 
+                                                                        or:[
+                                                                            (currentCharacter between:$a and:$h) 
+                                                                                or:[ (currentCharacter between:$j and:$z) ]
+                                                                        ]
+                                                                ]
+                                                        ]
+                                                ]) 
+                                                    ifTrue:[
+                                                        [
+                                                            self recordMatch:#( 33 ).
+                                                            self step.
+                                                            (currentCharacter isLetterOrDigit 
+                                                                or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                        ] whileTrue.
+                                                        ^ self reportLastMatch
+                                                    ].
+                                            (currentCharacter == $i) ifTrue:[
+                                                self recordMatch:#( 33 ).
+                                                self step.
+                                                ((currentCharacter between:$- and:$9) 
+                                                    or:[
+                                                        (currentCharacter between:$A and:$Z) 
+                                                            or:[
+                                                                currentCharacter == $_ 
+                                                                    or:[
+                                                                        (currentCharacter between:$a and:$f) 
+                                                                            or:[ (currentCharacter between:$h and:$z) ]
+                                                                    ]
+                                                            ]
+                                                    ]) 
+                                                        ifTrue:[
+                                                            [
+                                                                self recordMatch:#( 33 ).
+                                                                self step.
+                                                                (currentCharacter isLetterOrDigit 
+                                                                    or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                            ] whileTrue.
+                                                            ^ self reportLastMatch
+                                                        ].
+                                                (currentCharacter == $g) ifTrue:[
+                                                    self recordMatch:#( 33 ).
+                                                    self step.
+                                                    ((currentCharacter between:$- and:$9) 
+                                                        or:[
+                                                            (currentCharacter between:$A and:$Z) 
+                                                                or:[
+                                                                    currentCharacter == $_ 
+                                                                        or:[
+                                                                            (currentCharacter between:$a and:$m) 
+                                                                                or:[ (currentCharacter between:$o and:$z) ]
+                                                                        ]
+                                                                ]
+                                                        ]) 
+                                                            ifTrue:[
+                                                                [
+                                                                    self recordMatch:#( 33 ).
+                                                                    self step.
+                                                                    (currentCharacter isLetterOrDigit 
+                                                                        or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                ] whileTrue.
+                                                                ^ self reportLastMatch
+                                                            ].
+                                                    (currentCharacter == $n) ifTrue:[
+                                                        self recordMatch:#( 19 33 ).
+                                                        self step.
+                                                        (currentCharacter isLetterOrDigit 
+                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ]) 
+                                                                ifTrue:[
+                                                                    [
+                                                                        self recordMatch:#( 33 ).
+                                                                        self step.
+                                                                        (currentCharacter isLetterOrDigit 
+                                                                            or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
+                                                                    ] whileTrue.
+                                                                    ^ self reportLastMatch
+                                                                ].
+                                                        ^ self reportLastMatch
+                                                    ].
+                                                    ^ self reportLastMatch
+                                                ].
+                                                ^ self reportLastMatch
+                                            ].
+                                            ^ self reportLastMatch
+                                        ].
+                                        ^ self reportLastMatch
+                                    ].
+                                    ^ self reportLastMatch
+                                ].
+                                ^ self reportLastMatch
+                            ].
+                            ^ self reportLastMatch
+                        ].
+                        ^ self reportLastMatch
+                    ].
+                    ^ self reportLastMatch
+                ].
+                ^ self reportLastMatch
+            ].
+            ^ self reportLastMatch
+        ].
+        ^ self reportLastMatch
+    ].
     ^ self reportLastMatch
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner methodsFor:'generated-tokens'!
 
 emptySymbolTokenId
-	^59
+	^60
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 errorTokenId
-	^60
+	^61
 
-    "Modified: / 17-02-2008 / 18:45:28 / janfrog"
+    "Modified: / 04-07-2008 / 09:23:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
 !CDefinitionScanner class methodsFor:'documentation'!