"{ Package: 'cvut:fel/cface' }"
"{ NameSpace: Cface }"
SmaCC::SmaCCScanner subclass:#CDefinitionScanner
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Cface-Parser'
!
!CDefinitionScanner class methodsFor:'accessing'!
needsLineNumbers
^true
"Created: / 10-02-2008 / 10:17:03 / janfrog"
! !
!CDefinitionScanner class methodsFor:'generated-comments'!
scannerDefinitionComment
"<name> : [a-zA-Z_] \w* ;
<number> : \-? [0-9]+ [a-zA-Z]* ;
<whitespace> : \s+ ;
<file> : [\w-_/] [\w-_/.]* ;
"
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !
!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 'enum' 17)
#(30 'field' 16)
#(30 'float' 22)
#(30 'function' 11)
#(30 'int' 13)
#(30 'long' 3)
#(30 'return' 6)
#(30 'short' 4)
#(30 'struct' 21)
#(30 'typedef' 7)
#(30 'union' 15)
#(30 'unsigned' 2)
#(30 'value' 18)
#(30 '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"
! !
!CDefinitionScanner methodsFor:'generated-scanner'!
scan1
[
self recordMatch:#( 27 30 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
!
scan2
[
self recordMatch:#( 28 30 ).
self step.
(currentCharacter isLetter) ifTrue:[
[
self recordMatch:#( 28 30 ).
self step.
(currentCharacter isLetter)
] whileTrue.
(currentCharacter isXMLDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter isXMLDigit)
] whileTrue.
((currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ]) ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
!
scan3
[
self recordMatch:#( 30 32 ).
self step.
(currentCharacter isLetter) ifTrue:[
[
self recordMatch:#( 30 32 ).
self step.
(currentCharacter isLetter)
] whileTrue.
(currentCharacter isXMLDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter isXMLDigit)
] whileTrue.
((currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ]) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
"Modified: / 12-02-2008 / 23:05:21 / janfrog"
!
scan4
self recordMatch:#( 29 32 ).
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 recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $p) ifTrue:[
^ self scan5
].
^ self reportLastMatch
"Modified: / 12-02-2008 / 23:05:21 / janfrog"
!
scan5
self recordMatch:#( 29 32 ).
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 recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $e) ifTrue:[
^ self scan6
].
^ self reportLastMatch
"Modified: / 12-02-2008 / 23:05:21 / janfrog"
!
scan6
self recordMatch:#( 29 32 ).
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 recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $d) ifTrue:[
^ self scan7
].
^ self reportLastMatch
"Modified: / 12-02-2008 / 23:05:21 / janfrog"
!
scan7
self recordMatch:#( 29 32 ).
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 recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $e) ifTrue:[
self recordMatch:#( 29 32 ).
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 recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $f) ifTrue:[
self recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
[
self recordMatch:#( 29 32 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ])
] whileTrue.
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter between:$. and:$/) ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $-) ifTrue:[
self recordMatch:#( 32 ).
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:$r)
or:[ currentCharacter == $t or:[ (currentCharacter between:$v and:$z) ] ]
]
]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $e) ifTrue:[
self recordMatch:#( 32 ).
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:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 32 ).
self step.
(currentCharacter isXMLDigit
or:[
(currentCharacter between:$- and:$/)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$t)
or:[ (currentCharacter between:$v and:$z) ]
]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $u) ifTrue:[
self recordMatch:#( 32 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$l)
or:[ (currentCharacter between:$n and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $m) ifTrue:[
self recordMatch:#( 18 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter == $s) ifTrue:[
self recordMatch:#( 32 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$s)
or:[ (currentCharacter between:$u and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
self recordMatch:#( 32 ).
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:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $r) ifTrue:[
self recordMatch:#( 32 ).
self step.
(currentCharacter isXMLDigit
or:[
(currentCharacter between:$- and:$/)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$t)
or:[ (currentCharacter between:$v and:$z) ]
]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $u) ifTrue:[
self recordMatch:#( 32 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$b)
or:[ (currentCharacter between:$d and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $c) ifTrue:[
self recordMatch:#( 32 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$s)
or:[ (currentCharacter between:$u and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
self recordMatch:#( 28 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 32 ).
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
].
(currentCharacter == $u) ifTrue:[
self recordMatch:#( 32 ).
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:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 32 ).
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:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $i) ifTrue:[
self recordMatch:#( 32 ).
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:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
self recordMatch:#( 32 ).
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:#( 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 21 32 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 32 ).
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
"Modified: / 12-02-2008 / 23:05:21 / janfrog"
!
scanForToken
self step.
((currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$e)
or:[
(currentCharacter between:$g and:$o)
or:[ (currentCharacter between:$q and:$z) ]
]
]
])
ifTrue:[ ^ self scan1 ].
(currentCharacter isXMLDigit) ifTrue:[
^ self scan2
].
(currentCharacter isSeparator
or:[ currentCharacter == (Character value:16rB) ])
ifTrue:[
[
self recordMatch:#whitespace.
self step.
(currentCharacter isSeparator
or:[ currentCharacter == (Character value:16rB) ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $#) ifTrue:[
self step.
(currentCharacter == $G) ifTrue:[
self step.
(currentCharacter == $e) ifTrue:[
self step.
(currentCharacter == $n) ifTrue:[
self step.
(currentCharacter == $e) ifTrue:[
self step.
(currentCharacter == $r) ifTrue:[
self step.
(currentCharacter == $a) ifTrue:[
self step.
(currentCharacter == $t) ifTrue:[
self step.
(currentCharacter == $e) ifTrue:[
self step.
(currentCharacter == $d) ifTrue:[
^ self recordAndReportMatch:#( 8 ).
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter == $() ifTrue:[
^ self recordAndReportMatch:#( 10 ).
].
(currentCharacter == $)) ifTrue:[
^ self recordAndReportMatch:#( 12 ).
].
(currentCharacter == $-) ifTrue:[
self recordMatch:#( 30 ).
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) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter isXMLDigit) ifTrue:[
^ self scan2
].
(currentCharacter == $f) 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:$n)
or:[ (currentCharacter between:$p and:$z) ]
]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
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)
or:[
currentCharacter == $_
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)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$h)
or:[ (currentCharacter between:$j and:$z) ]
]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $i) ifTrue:[
self recordMatch:#( 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $g) ifTrue:[
self recordMatch:#( 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 19 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 30 ).
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
].
(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 step.
(currentCharacter isXMLDigit
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$q)
or:[
(currentCharacter between:$s and:$t)
or:[ (currentCharacter between:$v and:$z) ]
]
]
]
])
ifTrue:[ ^ self scan1 ].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $r) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $m) ifTrue:[
self recordMatch:#( 27 30 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
^ self scan1
].
(currentCharacter between:$- and:$/) ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $:) ifTrue:[
^ self recordAndReportMatch:#( 9 ).
].
^ self reportLastMatch
].
^ self reportLastMatch
].
^ self reportLastMatch
].
(currentCharacter == $u) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $c) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $i) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 27 30 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
^ self scan1
].
(currentCharacter between:$. and:$/) ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $-) ifTrue:[
self recordMatch:#( 30 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$s)
or:[ (currentCharacter between:$u and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
self recordMatch:#( 30 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[ (currentCharacter between:$a and:$x) or:[ currentCharacter == $z ] ]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $y) ifTrue:[
self recordMatch:#( 30 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$o)
or:[ (currentCharacter between:$q and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $p) 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:#( 1 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 30 ).
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
].
(currentCharacter == $p) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $i) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $n) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $t) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $e) ifTrue:[
self recordMatch:#( 27 30 ).
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:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $r) ifTrue:[
self recordMatch:#( 27 30 ).
self step.
(currentCharacter isLetterOrDigit or:[ currentCharacter == $_ ]) ifTrue:[
^ self scan1
].
(currentCharacter between:$. and:$/) ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $-) ifTrue:[
self recordMatch:#( 30 ).
self step.
((currentCharacter between:$- and:$9)
or:[
(currentCharacter between:$A and:$Z)
or:[
currentCharacter == $_
or:[
(currentCharacter between:$a and:$s)
or:[ (currentCharacter between:$u and:$z) ]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $t) 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:$n)
or:[ (currentCharacter between:$p and:$z) ]
]
]
]
])
ifTrue:[
[
self recordMatch:#( 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
] whileTrue.
^ self reportLastMatch
].
(currentCharacter == $o) ifTrue:[
self recordMatch:#( 23 30 ).
self step.
(currentCharacter isLetterOrDigit
or:[ (currentCharacter between:$- and:$/) or:[ currentCharacter == $_ ] ])
ifTrue:[
[
self recordMatch:#( 30 ).
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
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !
!CDefinitionScanner methodsFor:'generated-tokens'!
emptySymbolTokenId
^59
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
!
errorTokenId
^60
"Modified: / 17-02-2008 / 18:45:28 / janfrog"
! !
!CDefinitionScanner class methodsFor:'documentation'!
version
^ '$Header: /opt/data/cvs/cvut-fel/cface/Cface__CDefinitionScanner.st,v 1.1 2008/02/26 16:00:43 vranyj1 Exp $'
! !