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