tools/JavaScannerBase.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 30 Jan 2013 13:27:16 +0000
branchrefactoring-vmdata
changeset 2008 c348b894fbfe
parent 1879 7d232ff32dde
child 2069 75d40b7b986f
permissions -rw-r--r--
Merged ef3da336a6c9 and 6eac81f7f606 (branch development.)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     1
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     2
 COPYRIGHT (c) 2003 by Claus Gittinger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     3
	      All Rights Reserved
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     4
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     5
 This software is furnished under a license and may be used
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    10
 hereby transferred.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    11
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    12
"{ Package: 'stx:libjava/tools' }"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    13
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    14
Object subclass:#JavaScannerBase
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    15
	instanceVariableNames:'typeArray actionArray source lineNr tokenType tokenStartPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    16
		tokenEndPosition tokenLineNr numberRadix numberScale hereChar
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    17
		peekChar peekChar2 requestor saveComments currentComments
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    18
		tokenValue scaledMantissaValue parserFlags'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    19
	classVariableNames:'Warnings'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    20
	poolDictionaries:''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    21
	category:'Languages-Java-Parser'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    22
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    23
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    24
JavaScannerBase class instanceVariableNames:'TypeArray ActionArray KeywordTable'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    25
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    26
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    27
 No other class instance variables are inherited by this class.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    28
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    29
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    30
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    31
!JavaScannerBase class methodsFor:'documentation'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    32
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    33
copyright
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    34
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    35
 COPYRIGHT (c) 2003 by Claus Gittinger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    36
	      All Rights Reserved
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    37
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    38
 This software is furnished under a license and may be used
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    39
 only in accordance with the terms of that license and with the
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    40
 inclusion of the above copyright notice.   This software may not
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    41
 be provided or otherwise made available to, or used by, any
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    42
 other person.  No title to or ownership of the software is
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    43
 hereby transferred.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    44
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    45
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    46
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    47
!JavaScannerBase class methodsFor:'initialization'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    48
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    49
initialize
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    50
    "initialize the classes defaults. Typically, these are changed
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    51
     later in the 'private.rc' file."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    52
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    53
"/    ScannerError isLoaded ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    54
"/        ScannerError autoload
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    55
"/    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    56
"/    EmptySourceNotification notifierString:'empty source given to evaluate'.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    57
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    58
    Warnings := false.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    59
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    60
    "ActionArray := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    61
     TypeArray := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    62
     self initialize
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    63
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    64
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    65
    "Modified: / 15-03-2012 / 00:05:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    66
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    67
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    68
setupActions
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    69
    "initialize the scanners tables - these are used to dispatch
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    70
     into scanner methods as characters are read"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    71
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    72
    self subclassResponsibility
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    73
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    74
"/    |block|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    75
"/
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    76
"/    ActionArray := Array new:256.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    77
"/    TypeArray := Array new:256.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    78
"/
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    79
"/    block := [:s :char | s nextNumber].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    80
"/    ($0 asciiValue) to:($9 asciiValue) do:[:index |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    81
"/        ActionArray at:index put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    82
"/    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    83
"/
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    84
"/    block := [:s :char | s nextIdentifier].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    85
"/    ($a asciiValue) to:($z asciiValue) do:[:index |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    86
"/        ActionArray at:index put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    87
"/    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    88
"/    ($A asciiValue) to:($Z asciiValue) do:[:index |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    89
"/        ActionArray at:index put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    90
"/    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    91
"/    ActionArray at:$_ asciiValue put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    92
"/
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    93
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    94
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    95
!JavaScannerBase class methodsFor:'instance creation'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    96
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    97
for:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    98
    "create & return a new scanner reading from aStringOrStream"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    99
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   100
    ^ (super new) initializeFor:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   101
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   102
    "Modified: 23.5.1997 / 12:08:42 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   103
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   104
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   105
new
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   106
    "create & return a new scanner"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   107
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   108
    ^ self basicNew initialize.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   109
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   110
    "Modified: / 23.5.1997 / 12:08:42 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   111
    "Created: / 26.5.1999 / 12:02:16 / stefan"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   112
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   113
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   114
!JavaScannerBase class methodsFor:'Signal constants'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   115
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   116
emptySourceNotificationSignal
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   117
    ^ EmptySourceNotification
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   118
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   119
    "Created: / 16.5.1998 / 15:55:14 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   120
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   121
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   122
errorSignal
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   123
    ^ ScannerError
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   124
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   125
    "Created: / 16.5.1998 / 15:55:14 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   126
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   127
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   128
scannerErrorSignal
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   129
    ^ ScannerError
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   130
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   131
    "Created: / 16.5.1998 / 15:55:14 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   132
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   133
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   134
warningSignal
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   135
    ^ ScannerWarning
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   136
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   137
    "Created: / 16.5.1998 / 15:55:14 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   138
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   139
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   140
!JavaScannerBase class methodsFor:'defaults'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   141
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   142
warnings
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   143
    "return true, if any warnings are to be shown"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   144
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   145
    ^ Warnings
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   146
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   147
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   148
warnings:aBoolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   149
    "this allows turning on/off all warnings; the default is on.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   150
     You can turn off warnings in your 'private.rc' file with
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   151
	 Compiler warnings:false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   152
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   153
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   154
    Warnings := aBoolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   155
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   156
    "Modified: 23.5.1997 / 12:03:05 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   157
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   158
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   159
!JavaScannerBase class methodsFor:'private accessing'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   160
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   161
actionArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   162
    ^ ActionArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   163
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   164
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   165
keywordTable
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   166
    ^ KeywordTable
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   167
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   168
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   169
typeArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   170
    ^ TypeArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   171
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   172
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   173
!JavaScannerBase class methodsFor:'utility scanning'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   174
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   175
scanNumberFrom:aStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   176
    "utility - helper for Number>>readSmalltalkSyntaxFrom:"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   177
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   178
    ^ self basicNew scanNumberFrom:aStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   179
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   180
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   181
     |s|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   182
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   183
     s := '12345abcd' readStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   184
     Transcript showCR:(self scanNumberFrom:s).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   185
     Transcript showCR:(s upToEnd).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   186
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   187
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   188
     |s|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   189
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   190
     s := '16rffffxabcd' readStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   191
     Transcript showCR:(self scanNumberFrom:s).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   192
     Transcript showCR:(s upToEnd).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   193
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   194
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   195
     |s|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   196
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   197
     s := '1.2345abcd' readStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   198
     Transcript showCR:(self scanNumberFrom:s).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   199
     Transcript showCR:(s upToEnd).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   200
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   201
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   202
     |s|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   203
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   204
     s := '1.abcd' readStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   205
     Transcript showCR:(self scanNumberFrom:s).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   206
     Transcript showCR:(s upToEnd).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   207
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   208
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   209
    "Modified: / 18.6.1998 / 23:10:39 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   210
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   211
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   212
!JavaScannerBase methodsFor:'Compatibility - ST80'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   213
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   214
endOfLastToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   215
    "return the position of the token which was just read.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   216
     This method was required by some PD program.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   217
     It is not maintained and may be removed without notice."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   218
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   219
    ^ source position
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   220
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   221
    "Modified: 23.5.1997 / 12:14:27 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   222
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   223
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   224
scan:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   225
    "initialize the scanner: set the source-stream and
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   226
     preread the first token"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   227
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   228
    self initializeFor:aStringOrStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   229
    self nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   230
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   231
    "Created: / 30.10.1997 / 16:59:39 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   232
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   233
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   234
scanToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   235
    "read the next token from my input stream"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   236
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   237
    ^ self nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   238
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   239
    "Created: / 30.10.1997 / 17:00:16 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   240
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   241
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   242
scanTokens:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   243
    "return a collection of symbolic tokens from the passed input"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   244
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   245
    |tokens|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   246
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   247
    self initializeFor:aStringOrStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   248
    tokens := OrderedCollection new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   249
    self nextToken.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   250
    [tokenValue notNil] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   251
	tokens add:tokenValue.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   252
	self nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   253
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   254
    ^ tokens
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   255
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   256
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   257
     Scanner new
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   258
	scanTokens:'Boolean subclass:#True
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   259
				instanceVariableNames:''''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   260
				classVariableNames:''''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   261
				poolDictionaries:''''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   262
				category:''Kernel-Objects''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   263
	'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   264
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   265
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   266
    "Modified: 20.6.1997 / 18:22:58 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   267
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   268
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   269
!JavaScannerBase methodsFor:'accessing'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   270
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   271
actionArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   272
    ^ actionArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   273
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   274
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   275
actionArray:something
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   276
    actionArray := something.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   277
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   278
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   279
comments
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   280
    "if saveComments is on:
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   281
      returns the collection of collected comments (so far)
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   282
      clears the internal collection for the next access"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   283
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   284
    |ret|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   285
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   286
    ret := currentComments ? #().
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   287
    currentComments := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   288
    ^ ret
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   289
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   290
    "Created: 20.4.1996 / 20:07:01 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   291
    "Modified: 23.5.1997 / 12:14:45 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   292
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   293
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   294
lineNumber
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   295
    "the current line number (in the stream)"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   296
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   297
    ^ lineNr
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   298
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   299
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   300
newSourceStream:aStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   301
    source := aStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   302
    self nextToken.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   303
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   304
    "Created: / 29.10.1998 / 21:59:33 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   305
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   306
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   307
numberRadix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   308
    "the radix of the previously scanned number"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   309
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   310
    ^ numberRadix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   311
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   312
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   313
parserFlags:something
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   314
    parserFlags := something.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   315
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   316
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   317
saveComments:aBoolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   318
    "toggle to turn on/off comment remembering"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   319
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   320
    saveComments := aBoolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   321
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   322
    "Created: 20.4.1996 / 20:03:56 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   323
    "Modified: 23.5.1997 / 12:14:49 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   324
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   325
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   326
sourceStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   327
    ^ source
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   328
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   329
    "Created: 20.4.1996 / 19:59:58 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   330
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   331
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   332
token
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   333
    "the previously scanned token"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   334
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   335
    "/ generated lazily ...
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   336
    self halt.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   337
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   338
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   339
tokenEndPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   340
    "the previously scanned tokens last character position"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   341
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   342
    ^ tokenEndPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   343
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   344
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   345
tokenLineNumber
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   346
    "the previously scanned tokens line number"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   347
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   348
    ^ tokenLineNr
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   349
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   350
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   351
tokenStartPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   352
    "the previously scanned tokens first character position"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   353
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   354
    ^ tokenStartPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   355
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   356
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   357
tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   358
    "the type (symbolic) of the previously scanned token"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   359
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   360
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   361
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   362
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   363
tokenValue
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   364
    "the value (string or number) of the previously scanned token"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   365
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   366
    ^ tokenValue
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   367
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   368
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   369
typeArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   370
    ^ typeArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   371
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   372
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   373
typeArray:something
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   374
    typeArray := something.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   375
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   376
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   377
!JavaScannerBase methodsFor:'error handling'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   378
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   379
correctableError:message position:pos1 to:pos2
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   380
    "report an error which can be corrected by compiler -
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   381
     return non-false, if correction is wanted (there is more than
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   382
     true/false returned here)"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   383
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   384
    |correctIt|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   385
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   386
    requestor isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   387
"/        self showErrorMessage:message position:pos1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   388
	correctIt := false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   389
    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   390
	correctIt := requestor correctableError:message position:pos1 to:pos2 from:self
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   391
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   392
    ^ correctIt
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   393
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   394
    "Created: / 13.5.1998 / 16:45:56 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   395
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   396
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   397
errorMessagePrefix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   398
    ^ 'Error:'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   399
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   400
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   401
ignoreWarnings
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   402
    ^ Warnings == false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   403
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   404
    "Modified: / 14-03-2012 / 22:36:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   405
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   406
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   407
lastTokenLineNumber
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   408
    "return the line number of the token which was just read."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   409
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   410
    ^ tokenLineNr
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   411
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   412
    "Created: 8.11.1996 / 18:46:36 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   413
    "Modified: 23.5.1997 / 12:16:12 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   414
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   415
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   416
notifyError:aMessage position:position to:endPos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   417
    "notify requestor of an error - if there is no requestor
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   418
     put it on the transcript. Requestor is typically the CodeView
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   419
     in which the accept/doIt was triggered, or the PositionableStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   420
     which does the fileIn. The requestor may decide how to highlight the
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   421
     error (and/or to abort the compile).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   422
     Return the result passed back by the requestor."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   423
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   424
    requestor isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   425
	self showErrorMessage:aMessage position:position.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   426
	^ false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   427
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   428
    ^ requestor error:aMessage position:position to:endPos from:self
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   429
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   430
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   431
notifyWarning:aMessage position:position to:endPos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   432
    "notify requestor of an warning - if there is no requestor
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   433
     put it on the transcript.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   434
     Return the result passed back by the requestor."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   435
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   436
    |warn|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   437
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   438
    self ignoreWarnings ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   439
	requestor isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   440
	    warn := ScannerWarning new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   441
	    warn startPosition:position.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   442
	    warn endPosition:endPos.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   443
	    warn lineNumber:tokenLineNr.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   444
	    warn errorString:((self warningMessagePrefix) , ' ' , aMessage).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   445
	    warn raiseRequest.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   446
	    ^ false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   447
	].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   448
	^ requestor warning:aMessage position:position to:endPos from:self
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   449
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   450
    ^ false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   451
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   452
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   453
parseError:aMessage
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   454
    "report an error"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   455
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   456
    ^ self parseError:aMessage position:tokenStartPosition to:nil
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   457
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   458
    "Created: / 13.5.1998 / 16:45:13 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   459
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   460
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   461
parseError:aMessage position:position
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   462
    "report an error"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   463
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   464
    ^ self parseError:aMessage position:position to:nil
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   465
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   466
    "Created: / 13.5.1998 / 16:45:05 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   467
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   468
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   469
parseError:aMessage position:position to:endPos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   470
    "report an error"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   471
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   472
    |m|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   473
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   474
    m := (self errorMessagePrefix) , ' ' , (aMessage ? '???').
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   475
    self notifyError:m position:position to:endPos.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   476
    ^ false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   477
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   478
    "Created: / 13.5.1998 / 16:44:55 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   479
    "Modified: / 28.9.1998 / 19:29:27 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   480
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   481
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   482
showErrorMessage:aMessage position:pos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   483
    "show an errormessage on the Transcript"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   484
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   485
    Transcript showCR:(pos printString , ' [line: ' , tokenLineNr printString , '] ' , aMessage)
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   486
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   487
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   488
syntaxError:aMessage
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   489
    "a syntax error happened - position is not known"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   490
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   491
    ^ self syntaxError:aMessage position:tokenStartPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   492
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   493
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   494
syntaxError:aMessage position:position
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   495
    "a syntax error happened - only start position is known"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   496
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   497
    ^ self syntaxError:aMessage position:position to:nil
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   498
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   499
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   500
syntaxError:aMessage position:position to:endPos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   501
    "a syntax error happened"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   502
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   503
    |err|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   504
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   505
    err := ScannerError new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   506
    err startPosition:tokenStartPosition.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   507
    err endPosition:tokenEndPosition.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   508
    err lineNumber:tokenLineNr.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   509
    err errorString:((self errorMessagePrefix) , ' ' , aMessage).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   510
    err raiseRequest
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   511
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   512
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   513
warning:aMessage
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   514
    "a warning - position is not known"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   515
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   516
    ^ self warning:aMessage position:tokenStartPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   517
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   518
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   519
warning:aMessage position:position
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   520
    "a warning - only start position is known"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   521
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   522
    ^ self warning:aMessage position:position to:nil
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   523
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   524
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   525
warning:aMessage position:position to:endPos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   526
    "a warning"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   527
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   528
    ^ self notifyWarning:((self warningMessagePrefix) , ' ' , aMessage) position:position to:endPos
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   529
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   530
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   531
warningMessagePrefix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   532
    ^ 'Warning:'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   533
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   534
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   535
!JavaScannerBase methodsFor:'general scanning'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   536
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   537
scanPositionsFor:aTokenString inString:aSourceString
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   538
    "scan aSourceString for occurrances of aTokenString.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   539
     Return a collection of start positions.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   540
     Added for VW compatibility (to support syntax-highlight)."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   541
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   542
    |searchType searchToken positions t|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   543
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   544
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   545
     first, look what kind of token we have to search for
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   546
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   547
    self initializeFor:(ReadStream on:aTokenString).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   548
    self nextToken.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   549
    searchType := tokenType.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   550
    searchToken := tokenValue.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   551
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   552
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   553
     start the real work ...
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   554
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   555
    self initializeFor:(ReadStream on:aSourceString).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   556
    positions := OrderedCollection new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   557
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   558
    [(t := self nextToken) ~~ #EOF] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   559
	searchType == t ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   560
	    (searchToken isNil or:[tokenValue = searchToken]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   561
		positions add:tokenStartPosition.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   562
	    ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   563
	]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   564
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   565
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   566
    ^ positions
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   567
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   568
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   569
     Scanner new scanPositionsFor:'hello' inString:'foo bar hello baz hello helloWorld'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   570
     Scanner new scanPositionsFor:'3.14' inString:'foo 3.145 bar hello 3.14 baz hello 3.14 ''3.14'''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   571
     Scanner new scanPositionsFor:'''3.14''' inString:'foo 3.145 bar hello 3.14 baz hello 3.14 ''3.14'' aaa'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   572
     Scanner new scanPositionsFor:'16' inString:'foo 16 bar hello 16r10 baz hello 2r10000'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   573
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   574
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   575
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   576
!JavaScannerBase methodsFor:'initialization'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   577
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   578
initialize
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   579
    "initialize the scanner"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   580
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   581
    "/actionArray notNil ifTrue:[ self halt ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   582
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   583
    saveComments := false.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   584
    parserFlags := ParserFlags new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   585
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   586
    (actionArray := self class actionArray) isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   587
        self class setupActions.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   588
        actionArray := self class actionArray
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   589
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   590
    typeArray := self class typeArray.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   591
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   592
    "Modified: / 14-03-2012 / 22:35:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   593
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   594
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   595
initializeFor:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   596
    "initialize the new scanner & prepare for reading from aStringOrStream"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   597
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   598
    self initialize.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   599
    self source:aStringOrStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   600
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   601
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   602
source:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   603
    "prepare for reading from aStringOrStream"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   604
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   605
    tokenStartPosition := 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   606
    tokenLineNr := lineNr := 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   607
    currentComments := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   608
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   609
    aStringOrStream isStream ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   610
	source := ReadStream on:aStringOrStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   611
    ] ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   612
	source := aStringOrStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   613
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   614
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   615
    "Modified: / 26.5.1999 / 12:02:16 / stefan"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   616
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   617
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   618
!JavaScannerBase methodsFor:'private'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   619
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   620
addComment:comment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   621
    saveComments ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   622
	currentComments isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   623
	    currentComments := OrderedCollection with:comment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   624
	] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   625
	    currentComments add:comment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   626
	]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   627
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   628
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   629
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   630
backupPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   631
    "if reading from a stream, at the end we might have read
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   632
     one token too many"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   633
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   634
    (tokenType == #EOF) ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   635
	source position:tokenStartPosition
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   636
    ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   637
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   638
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   639
beginComment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   640
    ^ self
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   641
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   642
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   643
requestor:anObject
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   644
    "set the requestor to be notified about errors"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   645
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   646
    requestor := anObject
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   647
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   648
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   649
!JavaScannerBase methodsFor:'reading next token'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   650
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   651
atEnd
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   652
    "true if at the end"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   653
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   654
    ^ tokenType == #EOF.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   655
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   656
    "Created: / 30-04-2011 / 11:24:13 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   657
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   658
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   659
isCommentCharacter:aCharacter
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   660
    self subclassResponsibility
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   661
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   662
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   663
nextSingleCharacterToken:aCharacter
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   664
    "return a character token"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   665
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   666
    tokenEndPosition := tokenStartPosition.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   667
    tokenType := tokenValue := aCharacter.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   668
    hereChar notNil ifTrue:[source next].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   669
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   670
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   671
    "Modified: / 13.5.1998 / 15:10:23 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   672
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   673
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   674
nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   675
    "scan the next token from the source-stream;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   676
     as a side effect, leave info in:
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   677
        tokenType          - a symbol describing the kind of token
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   678
        token              - its value as string or number
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   679
        tokenStartPosition - the tokens first characters position in the input stream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   680
        tokenEndPosition   - the tokens last characters position in the input stream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   681
        tokenLineNr        - the tokens first characters lineNumber in the input stream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   682
     returns the tokenType.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   683
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   684
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   685
    |skipping actionBlock v ch tok|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   686
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   687
    [true] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   688
        peekChar notNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   689
            "/ kludge - should be called peekSym.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   690
            "/ used when xlating Foo.Bar into Foo::Bar
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   691
            peekChar isSymbol ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   692
                tokenValue := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   693
                tokenType := peekChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   694
                peekChar := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   695
                ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   696
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   697
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   698
            peekChar isSeparator ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   699
                peekChar == (Character cr) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   700
                    lineNr := lineNr + 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   701
                ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   702
                peekChar := peekChar2.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   703
                peekChar2 := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   704
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   705
        ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   706
        peekChar notNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   707
            ch := peekChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   708
            peekChar := peekChar2.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   709
            peekChar2 := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   710
            hereChar := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   711
            tokenStartPosition := source position - 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   712
        ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   713
            skipping := true.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   714
            [skipping] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   715
                hereChar := source skipSeparatorsExceptCR.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   716
                hereChar == (Character cr) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   717
                    lineNr := lineNr + 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   718
                    source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   719
                ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   720
                    hereChar == (Character return) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   721
                        source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   722
                    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   723
                        (self isCommentCharacter:hereChar) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   724
                            "start of a comment"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   725
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   726
                            self skipComment.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   727
                            hereChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   728
                        ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   729
                            skipping := false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   730
                        ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   731
                    ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   732
                ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   733
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   734
            hereChar isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   735
                tokenValue := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   736
                tokenType := #EOF.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   737
                ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   738
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   739
            ch := hereChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   740
            tokenStartPosition := source position.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   741
        ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   742
        tokenLineNr := lineNr.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   743
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   744
        (v := ch asciiValue) == 0 ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   745
            v := Character space codePoint
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   746
        ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   747
        actionBlock := actionArray at:v.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   748
        actionBlock notNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   749
            tok := actionBlock value:self value:ch.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   750
            tok notNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   751
                ^ tok
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   752
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   753
        ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   754
            self syntaxError:('invalid character: ''' , ch asString , ''' ',
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   755
                              '(' , v printString , ')')
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   756
                    position:tokenStartPosition to:tokenStartPosition.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   757
            source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   758
            tokenValue := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   759
            tokenType := #Error.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   760
            ^ #Error
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   761
        ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   762
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   763
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   764
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   765
skipComment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   766
    self subclassResponsibility
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   767
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   768
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   769
!JavaScannerBase methodsFor:'reading next token - private'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   770
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   771
nextMantissa:radix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   772
    "read the mantissa of a radix number.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   773
     Return post-decimal value (i.e. 0.xxxx); leave number of post-decimal
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   774
     digits in numberScale; scaled post-decimal value in scaledMantissaValue (xxx)."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   775
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   776
    |nextChar value factor|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   777
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   778
    value := scaledMantissaValue := 0.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   779
    factor := 1.0 / radix.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   780
    nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   781
    numberScale := 0.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   782
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   783
    [(nextChar notNil and:[nextChar isDigitRadix:radix])] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   784
	scaledMantissaValue := (scaledMantissaValue * radix) + (nextChar digitValue).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   785
	value := value + (nextChar digitValue * factor).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   786
	factor := factor / radix.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   787
	numberScale := numberScale + 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   788
	nextChar := source nextPeek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   789
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   790
    ^ value
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   791
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   792
    "Modified: / 5.3.1998 / 02:54:11 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   793
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   794
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   795
!JavaScannerBase class methodsFor:'documentation'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   796
1879
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
   797
version_HG
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
   798
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
   799
    ^ '$Changeset: <not expanded> $'
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
   800
!
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
   801
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   802
version_SVN
1879
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
   803
    ^ '§Id§'
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   804
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   805
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   806
JavaScannerBase initialize!