SmaCC__JavaScanner.st
author vranyj1
Mon, 10 Sep 2012 09:07:46 +0000
changeset 23 11ad79f459e6
parent 1 b8cca2663544
child 25 5a6921729520
permissions -rw-r--r--
- stx_goodies_smaCC added: #svnRepositoryUrlString changed: #classNamesAndAttributes #extensionMethodNames #preRequisites - SmaCC::SmaCCRHS changed: #parseTreeRewriter
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     1
"{ Package: 'stx:goodies/smaCC' }"
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     2
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     3
"{ NameSpace: SmaCC }"
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     4
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     5
SmaCCScanner subclass:#JavaScanner
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     6
	instanceVariableNames:''
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     7
	classVariableNames:''
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     8
	poolDictionaries:''
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
     9
	category:'SmaCC-Example Parsers'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    10
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    11
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    12
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    13
!JavaScanner class methodsFor:'generated-comments'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    14
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    15
scannerDefinitionComment
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    16
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    17
	"<DECIMAL_INTEGER>: 0 | [1-9] [0-9]*    ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    18
<HEX_INTEGER>: 0[xX][0-9a-fA-F]+        ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    19
<OCTAL_INTEGER>: 0[0-7]+        ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    20
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    21
<EXPONENT>: [eE] [\-\+]? [0-9]+         ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    22
<FLOAT_TYPE>: [fFdD]    ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    23
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    24
<ESCAPE_SEQUENCE>: \\ ([btnfr\""\'\\] | ([0-3] [0-7]{0,2} | [4-7][0-7]?))       ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    25
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    26
<INTEGER_LITERAL>: (<DECIMAL_INTEGER> | <HEX_INTEGER> | <OCTAL_INTEGER>) [lL]?  ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    27
<FLOATING_POINT_LITERAL>: [0-9]+ \. [0-9]* <EXPONENT>? <FLOAT_TYPE>? | \. [0-9]+ <EXPONENT>? <FLOAT_TYPE>? | [0-9]+ <EXPONENT> <FLOAT_TYPE>? | [0-9]+ <FLOAT_TYPE>      ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    28
<BOOLEAN_LITERAL>: true | false ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    29
<CHARACTER_LITERAL>: \' ([^\\\'] | <ESCAPE_SEQUENCE> ) \'       ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    30
<STRING_LITERAL>: \"" ([^\\\""] | <ESCAPE_SEQUENCE> )* \""      ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    31
<NULL_LITERAL>: null    ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    32
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    33
<IDENTIFIER>: [a-zA-Z_] \w*     ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    34
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    35
<eol>: \r | \n | \r\n   ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    36
<whitespace>: \s+       ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    37
<comment>: \/\/ [^\r\n]* <eol>  ;
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    38
<multipleLineComment>: \/ \*    ;"
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    39
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    40
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    41
!JavaScanner class methodsFor:'generated-initialization'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    42
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    43
initializeKeywordMap
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    44
	keywordMap := Dictionary new.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    45
	#(#(99 'abstract' 40) #(99 'boolean' 33) #(99 'break' 78) #(99 'byte' 32) #(99 'case' 23) #(99 'catch' 73) #(99 'char' 28) #(99 'class' 9) #(99 'continue' 72) #(99 'default' 41) #(99 'do' 80) #(99 'double' 26) #(99 'else' 14) #(99 'extends' 8) #(99 'false' 95) #(99 'final' 39) #(99 'finally' 81) #(99 'float' 27) #(99 'for' 79) #(99 'if' 46) #(99 'implements' 2) #(99 'import' 42) #(99 'instanceof' 55) #(99 'int' 25) #(99 'interface' 12) #(99 'long' 24) #(99 'native' 38) #(99 'new' 76) #(99 'null' 98) #(99 'package' 29) #(99 'private' 37) #(99 'protected' 43) #(99 'public' 44) #(99 'return' 71) #(99 'short' 31) #(99 'static' 36) #(99 'strictfp' 22) #(99 'super' 13) #(99 'switch' 70) #(99 'synchronized' 18) #(99 'this' 19) #(99 'throw' 75) #(99 'throws' 20) #(99 'transient' 35) #(99 'true' 95) #(99 'try' 74) #(99 'void' 17) #(99 'volatile' 11) #(99 'while' 88)) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    46
		do: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    47
			[:each | 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    48
			(keywordMap at: each first ifAbsentPut: [Dictionary new]) at: (each at: 2) put: each last].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    49
	^keywordMap
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    50
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    51
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    52
!JavaScanner methodsFor:'generated-scanner'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    53
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    54
scan1
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    55
        
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    56
	[self recordMatch: #(94).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    57
	self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    58
	currentCharacter isDigit] whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    59
	(currentCharacter == $D 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    60
		or: [currentCharacter == $F or: [currentCharacter == $d or: [currentCharacter == $f]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    61
			ifTrue: [^self recordAndReportMatch: #(94)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    62
	(currentCharacter == $E or: [currentCharacter == $e]) ifTrue: [^self scan2].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    63
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    64
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    65
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    66
scan2
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    67
	self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    68
	currentCharacter isDigit ifTrue: [^self scan3].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    69
	(currentCharacter == $+ or: [currentCharacter == $-]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    70
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    71
			[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    72
			currentCharacter isDigit ifTrue: [^self scan3].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    73
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    74
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    75
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    76
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    77
scan3
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    78
        
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    79
	[self recordMatch: #(94).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    80
	self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    81
	currentCharacter isDigit] whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    82
	(currentCharacter == $D 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    83
		or: [currentCharacter == $F or: [currentCharacter == $d or: [currentCharacter == $f]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    84
			ifTrue: [^self recordAndReportMatch: #(94)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    85
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    86
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    87
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    88
scan4
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    89
	self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    90
	currentCharacter == $' ifTrue: [^self recordAndReportMatch: #(96)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    91
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    92
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    93
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    94
scan5
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    95
	self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    96
	(currentCharacter between: $0 and: $7) ifTrue: [^self scan4].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    97
	currentCharacter == $' ifTrue: [^self recordAndReportMatch: #(96)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    98
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
    99
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   100
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   101
scan6
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   102
        
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   103
	[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   104
	currentCharacter <= $!! 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   105
		or: [(currentCharacter between: $# and: $[) or: [currentCharacter >= $]]]] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   106
			whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   107
	currentCharacter == $" ifTrue: [^self recordAndReportMatch: #(97)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   108
	currentCharacter == $\ 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   109
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   110
			[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   111
			(currentCharacter == $" or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   112
					[currentCharacter == $' or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   113
							[(currentCharacter between: $0 and: $7) or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   114
									[currentCharacter == $\ or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   115
											[currentCharacter == $b or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   116
													[currentCharacter == $f 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   117
														or: [currentCharacter == $n or: [currentCharacter == $r or: [currentCharacter == $t]]]]]]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   118
				ifTrue: [^self scan6].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   119
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   120
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   121
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   122
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   123
scan7
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   124
        
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   125
	[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   126
	currentCharacter isDigit] whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   127
	(currentCharacter == $D 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   128
		or: [currentCharacter == $F or: [currentCharacter == $d or: [currentCharacter == $f]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   129
			ifTrue: [^self recordAndReportMatch: #(94)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   130
	(currentCharacter == $E or: [currentCharacter == $e]) ifTrue: [^self scan2].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   131
	currentCharacter == $. ifTrue: [^self scan1].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   132
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   133
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   134
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   135
scanForToken
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   136
	self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   137
	((currentCharacter between: $A and: $Z) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   138
		or: [currentCharacter == $_ or: [currentCharacter between: $a and: $z]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   139
			ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   140
				[
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   141
				[self recordMatch: #(99).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   142
				self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   143
				currentCharacter isHexDigit or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   144
						[(currentCharacter between: $G and: $Z) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   145
							or: [currentCharacter == $_ or: [currentCharacter between: $a and: $z]]]] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   146
						whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   147
				^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   148
	(currentCharacter between: $1 and: $9) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   149
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   150
			[
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   151
			[self recordMatch: #(93).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   152
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   153
			currentCharacter isDigit] whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   154
			(currentCharacter == $D 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   155
				or: [currentCharacter == $F or: [currentCharacter == $d or: [currentCharacter == $f]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   156
					ifTrue: [^self recordAndReportMatch: #(94)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   157
			(currentCharacter == $E or: [currentCharacter == $e]) ifTrue: [^self scan2].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   158
			(currentCharacter == $L or: [currentCharacter == $l]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   159
				ifTrue: [^self recordAndReportMatch: #(93)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   160
			currentCharacter == $. ifTrue: [^self scan1].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   161
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   162
	((currentCharacter between: $    and: $
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   163
) or: [currentCharacter == $ ]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   164
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   165
			[
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   166
			[self recordMatch: #whitespace.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   167
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   168
			(currentCharacter between: $     and: $
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   169
) or: [currentCharacter == $ ]] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   170
					whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   171
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   172
	currentCharacter == $!! 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   173
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   174
			[self recordMatch: #(84).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   175
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   176
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(53)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   177
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   178
	currentCharacter == $" ifTrue: [^self scan6].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   179
	currentCharacter == $% 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   180
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   181
			[self recordMatch: #(87).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   182
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   183
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(67)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   184
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   185
	currentCharacter == $& 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   186
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   187
			[self recordMatch: #(48).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   188
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   189
			currentCharacter == $& ifTrue: [^self recordAndReportMatch: #(57)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   190
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(61)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   191
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   192
	currentCharacter == $' 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   193
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   194
			[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   195
			(currentCharacter <= $& 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   196
				or: [(currentCharacter between: $( and: $[) or: [currentCharacter >= $]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   197
					ifTrue: [^self scan4].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   198
			currentCharacter == $\ 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   199
				ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   200
					[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   201
					(currentCharacter == $" or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   202
							[currentCharacter == $' or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   203
									[currentCharacter == $\ or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   204
											[currentCharacter == $b or: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   205
													[currentCharacter == $f 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   206
														or: [currentCharacter == $n or: [currentCharacter == $r or: [currentCharacter == $t]]]]]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   207
						ifTrue: [^self scan4].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   208
					(currentCharacter between: $0 and: $3) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   209
						ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   210
							[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   211
							(currentCharacter between: $0 and: $7) ifTrue: [^self scan5].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   212
							currentCharacter == $' ifTrue: [^self recordAndReportMatch: #(96)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   213
							^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   214
					(currentCharacter between: $4 and: $7) ifTrue: [^self scan5].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   215
					^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   216
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   217
	currentCharacter == $( ifTrue: [^self recordAndReportMatch: #(7)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   218
	currentCharacter == $) ifTrue: [^self recordAndReportMatch: #(21)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   219
	currentCharacter == $* 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   220
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   221
			[self recordMatch: #(45).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   222
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   223
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(54)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   224
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   225
	currentCharacter == $+ 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   226
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   227
			[self recordMatch: #(92).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   228
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   229
			currentCharacter == $+ ifTrue: [^self recordAndReportMatch: #(77)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   230
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(66)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   231
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   232
	currentCharacter == $, ifTrue: [^self recordAndReportMatch: #(6)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   233
	currentCharacter == $- 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   234
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   235
			[self recordMatch: #(91).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   236
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   237
			currentCharacter == $- ifTrue: [^self recordAndReportMatch: #(89)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   238
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(60)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   239
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   240
	currentCharacter == $. 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   241
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   242
			[self recordMatch: #(34).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   243
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   244
			currentCharacter isDigit ifTrue: [^self scan1].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   245
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   246
	currentCharacter == $/ 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   247
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   248
			[self recordMatch: #(83).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   249
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   250
			currentCharacter == $* ifTrue: [^self recordAndReportMatch: #multipleLineComment].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   251
			currentCharacter == $/ 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   252
				ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   253
					[
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   254
					[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   255
					currentCharacter <= $    
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   256
						or: [(currentCharacter between: $ and: $) or: [currentCharacter >= $]]] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   257
							whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   258
					currentCharacter isLinefeed ifTrue: [^self recordAndReportMatch: #comment].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   259
					currentCharacter == $
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   260
 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   261
						ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   262
							[self recordMatch: #comment.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   263
							self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   264
							currentCharacter isLinefeed ifTrue: [^self recordAndReportMatch: #comment].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   265
							^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   266
					^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   267
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(68)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   268
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   269
	currentCharacter == $0 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   270
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   271
			[self recordMatch: #(93).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   272
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   273
			(currentCharacter between: $0 and: $7) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   274
				ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   275
					[
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   276
					[self recordMatch: #(93).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   277
					self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   278
					currentCharacter between: $0 and: $7] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   279
							whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   280
					(currentCharacter == $D 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   281
						or: [currentCharacter == $F or: [currentCharacter == $d or: [currentCharacter == $f]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   282
							ifTrue: [^self recordAndReportMatch: #(94)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   283
					(currentCharacter between: $8 and: $9) ifTrue: [^self scan7].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   284
					(currentCharacter == $E or: [currentCharacter == $e]) ifTrue: [^self scan2].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   285
					(currentCharacter == $L or: [currentCharacter == $l]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   286
						ifTrue: [^self recordAndReportMatch: #(93)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   287
					currentCharacter == $. ifTrue: [^self scan1].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   288
					^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   289
			(currentCharacter == $D 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   290
				or: [currentCharacter == $F or: [currentCharacter == $d or: [currentCharacter == $f]]]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   291
					ifTrue: [^self recordAndReportMatch: #(94)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   292
			(currentCharacter between: $8 and: $9) ifTrue: [^self scan7].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   293
			(currentCharacter == $E or: [currentCharacter == $e]) ifTrue: [^self scan2].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   294
			(currentCharacter == $L or: [currentCharacter == $l]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   295
				ifTrue: [^self recordAndReportMatch: #(93)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   296
			(currentCharacter == $X or: [currentCharacter == $x]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   297
				ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   298
					[self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   299
					(currentCharacter isHexDigit or: [currentCharacter between: $a and: $f]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   300
						ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   301
							[
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   302
							[self recordMatch: #(93).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   303
							self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   304
							currentCharacter isHexDigit or: [currentCharacter between: $a and: $f]] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   305
									whileTrue.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   306
							(currentCharacter == $L or: [currentCharacter == $l]) 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   307
								ifTrue: [^self recordAndReportMatch: #(93)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   308
							^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   309
					^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   310
			currentCharacter == $. ifTrue: [^self scan1].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   311
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   312
	currentCharacter == $: ifTrue: [^self recordAndReportMatch: #(16)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   313
	currentCharacter == $; ifTrue: [^self recordAndReportMatch: #(30)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   314
	currentCharacter == $< 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   315
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   316
			[self recordMatch: #(82).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   317
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   318
			currentCharacter == $< 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   319
				ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   320
					[self recordMatch: #(86).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   321
					self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   322
					currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(59)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   323
					^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   324
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(69)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   325
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   326
	currentCharacter == $= 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   327
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   328
			[self recordMatch: #(3).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   329
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   330
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(49)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   331
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   332
	currentCharacter == $> 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   333
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   334
			[self recordMatch: #(58).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   335
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   336
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(56)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   337
			currentCharacter == $> 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   338
				ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   339
					[self recordMatch: #(85).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   340
					self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   341
					currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(63)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   342
					currentCharacter == $> 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   343
						ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   344
							[self recordMatch: #(65).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   345
							self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   346
							currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(62)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   347
							^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   348
					^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   349
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   350
	currentCharacter == $? ifTrue: [^self recordAndReportMatch: #(64)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   351
	currentCharacter == $[ ifTrue: [^self recordAndReportMatch: #(10)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   352
	currentCharacter == $] ifTrue: [^self recordAndReportMatch: #(5)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   353
	currentCharacter == $^ 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   354
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   355
			[self recordMatch: #(51).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   356
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   357
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(47)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   358
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   359
	currentCharacter == ${ ifTrue: [^self recordAndReportMatch: #(1)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   360
	currentCharacter == $| 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   361
		ifTrue: 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   362
			[self recordMatch: #(50).
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   363
			self step.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   364
			currentCharacter == $= ifTrue: [^self recordAndReportMatch: #(15)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   365
			currentCharacter == $| ifTrue: [^self recordAndReportMatch: #(52)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   366
			^self reportLastMatch].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   367
	currentCharacter == $} ifTrue: [^self recordAndReportMatch: #(4)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   368
	currentCharacter == $~ ifTrue: [^self recordAndReportMatch: #(90)].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   369
	^self reportLastMatch
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   370
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   371
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   372
!JavaScanner methodsFor:'generated-tokens'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   373
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   374
emptySymbolTokenId
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   375
	^254
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   376
!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   377
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   378
errorTokenId
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   379
	^255
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   380
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   381
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   382
!JavaScanner methodsFor:'public'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   383
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   384
multipleLineComment
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   385
	| char |
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   386
        
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   387
	[[(char := stream next) isNil or: [char == $*]] whileFalse.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   388
	stream atEnd ifTrue: [self scannerError].
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   389
	stream peekFor: $/] 
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   390
			whileFalse.
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   391
	^self whitespace
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   392
! !
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   393
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   394
!JavaScanner class methodsFor:'documentation'!
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   395
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   396
version
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   397
    ^ '$Header: /opt/data/cvs/stx/goodies/smaCC/SmaCC__JavaScanner.st,v 1.1 2006-02-09 21:13:52 vranyj1 Exp $'
b8cca2663544 Initial import
vranyj1
parents:
diff changeset
   398
! !