compiler/Dart__Scanner.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 10 Jan 2013 13:21:04 +0000
changeset 1 46dd2b3b6974
child 3 46c322c66a29
permissions -rw-r--r--
Initial outline of Dart 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
ScannerBase subclass:#Scanner
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:'allowDegeneratedMantissa keywordTable'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:'Verbose'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'Languages-Dart-Parser'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
Object subclass:#Token
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:'type value startPosition endPosition'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	privateIn:Scanner
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!Scanner class methodsFor:'documentation'!
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
copyright
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
 COPYRIGHT (c) 2003 by Claus Gittinger
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
	      All Rights Reserved
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
 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
    38
 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
    39
 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
    40
 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
    41
 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
    42
 hereby transferred.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
examples
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
    |s in|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    in := '
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
function scalefactor(value) {
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    scalevector[0]=value;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    scalevector[1]=1.;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    scalevector[2]=1.;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
}
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
'.
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
    s := JavaScanner for:in readStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    s nextToken
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
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
    |s in|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    in := '
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
function scalefactor(value) {
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    scalevector[0]=value;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    scalevector[1]=1.;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    scalevector[2]=1.;
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
'.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    s := JavaScanner new.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    s scanTokens:(in readStream).
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    |s in|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    in := '
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
function scalefactor(value) {
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    scalevector[0]=value;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    scalevector[1]=1.;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    scalevector[2]=1.;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
}
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
'.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    in := in readStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    s := JavaScanner for:in.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    [in atEnd] whileFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
	Transcript showCR:s nextToken
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    ]
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
"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    "Created: / 13.5.1998 / 14:54:06 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
! !
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
!Scanner class methodsFor:'initialization'!
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
setupActions
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "initialize the scanners actionTables - these are used to dispatch
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
     into scanner methods as characters are read"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    |block|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    self setupKeywordTable.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ActionArray := Array new:256.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    TypeArray := Array new:256.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    block := [:s :char | s nextNumber].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    ($0 asciiValue) to:($9 asciiValue) do:[:index |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        ActionArray at:index put:block
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    block := [:s :char | s nextSingleCharacterToken:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    #( $: $; $, ${ $} $( $) $[ $] $_ $? $@) do:[:ch |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
        ActionArray at:(ch asciiValue) put:block
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    ].
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
    block := [:s :char | s nextIdentifier].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    ($a asciiValue) to:($z asciiValue) do:[:index |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
        ActionArray at:index put:block
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    ($A asciiValue) to:($Z asciiValue) do:[:index |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
        ActionArray at:index put:block
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    ActionArray at:$_ asciiValue put:block.
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
    ActionArray at:$$ asciiValue put:block.
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
    ActionArray at:($. asciiValue) put:[:s :char | s nextDotOrFloatOrEllipsis].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    ActionArray at:($' asciiValue) put:[:s :char | s nextString:$' character:true].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    ActionArray at:($" asciiValue) put:[:s :char | s nextString:$" character:false].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
    ActionArray at:($!! asciiValue) put:[:s :char | s nextMulti:#(($= #'!!=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    ActionArray at:($= asciiValue) put:[:s :char | s nextMulti:#(($= #'==')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    ActionArray at:($< asciiValue) put:[:s :char | s nextMulti:#(($= #'<=') ($< #'<<')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    ActionArray at:($> asciiValue) put:[:s :char | s nextMulti:#(($= #'>=') ($> #'>>' $> #'>>>' $= #'>>>=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    ActionArray at:($- asciiValue) put:[:s :char | s nextMulti:#(($- #'--') ($= #'-=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    ActionArray at:($+ asciiValue) put:[:s :char | s nextMulti:#(($+ #'++') ($= #'+=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    ActionArray at:($* asciiValue) put:[:s :char | s nextMulti:#(($= #'*=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    ActionArray at:($/ asciiValue) put:[:s :char | s nextMulti:#(($= #'/=') ($/ nil #skipEOLComment) ($* nil #skipComment)) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    ActionArray at:($% asciiValue) put:[:s :char | s nextMulti:#(($= #'%=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    ActionArray at:($& asciiValue) put:[:s :char | s nextMulti:#(($= #'&=') ($& #'&&')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    ActionArray at:($^ asciiValue) put:[:s :char | s nextMulti:#(($= #'^=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    ActionArray at:($~ asciiValue) put:[:s :char | s nextMulti:#(($= #'~=')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    ActionArray at:($| asciiValue) put:[:s :char | s nextMulti:#(($= #'|=') ($| #'||')) after:char].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
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
     self setupActions
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
    "
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
    "Created: / 14-05-1998 / 15:48:03 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    "Modified: / 17-05-1998 / 21:03:37 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
    "Modified: / 16-03-2012 / 23:49:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
setupKeywordTable
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    "initialize the scanners actionTables - these are used to dispatch
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
     into scanner methods as characters are read"
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
    KeywordTable := Dictionary new.
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
    #(
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
        'abstract'              abstract
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
        'assert'                assert
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
        'class'                 class
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
        'extends'               extends
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
        'factory'               factory
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
        'get'                   get
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
        'implements'            implements
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
        'import'                import
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
        'interface'             interface
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
        'is'                    is
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
        'library'               library
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
        'native'                native
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
        'negate'                negate
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
        'operator'              operator
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
        'set'                   set
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
        'source'                source
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
        'static'                static
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
        'typedef'               typedef
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
        'this'                  this
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
        'super'                 super
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
        'null'                  null
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
        'true'                  #true
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
        'false'                 #false
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
        'const'                 const
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
        'new'                   new
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
        'void'                  void
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
        'final'                 final
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
        'var'                   var
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
        'while'                 while
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
        'do'                    do
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
        'for'                   for
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
        'in'                    in
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
        'if'                    if
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
        'else'                  else
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
        'switch'                switch
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
        'case'                  case
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
        'default'               default
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
        'try'                   try
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
        'catch'                 catch
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
        'finally'               finally
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
        'break'                 break
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
        'continue'              continue
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
        'return'                return
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
        'throw'                 throw
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    ) pairWiseDo:[:s :kw |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
        KeywordTable at:s put:kw
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
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
     NewJavaScanner setupKeywordTable
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
    "
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
    "Created: / 14-05-1998 / 15:48:03 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    "Modified: / 17-05-1998 / 21:03:37 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    "Modified: / 10-01-2013 / 10:51:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
! !
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
!Scanner methodsFor:'accessing'!
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
token
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
    "the previously scanned token"
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
    ^Token new
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
        type: tokenType;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
        value: tokenValue;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
        startPosition: tokenStartPosition;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
        endPosition: tokenEndPosition;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
        yourself
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: / 17-03-2012 / 13:32:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
    "Modified: / 10-01-2013 / 11:20:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
!Scanner methodsFor:'converting'!
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
asPetitStream
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
    ^self
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
    "Created: / 14-03-2012 / 22:51:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
!Scanner methodsFor:'error handling'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
errorMessagePrefix
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
    ^ 'Dart Error:'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    "Modified: / 10-01-2013 / 11:21:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
warningMessagePrefix
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
    ^ 'Dart Warning:'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
    "Modified: / 10-01-2013 / 11:21:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
!Scanner methodsFor:'initialization'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
initialize
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    "initialize the scanner"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    super initialize.
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
    allowDegeneratedMantissa := true.     "/ something like 123.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
    keywordTable := self class keywordTable.
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
!Scanner methodsFor:'private'!
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
checkForKeyword:string
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    "check if string is a keyword (as opposed to an identifier)."
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
    |tok|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
    (tok := keywordTable at:string ifAbsent:nil) notNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
	tokenType := tok.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
	^ true
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
    ^ false
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
isCommentCharacter:ch
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
    "return true, if ch is the comment-start character"
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
    ^ false
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
    "Created: / 14.5.1998 / 20:53:33 / cg"
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
rememberTokenStartPosition
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
    self rememberTokenStartPosition:0
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
    "Created: / 17-03-2012 / 00:19:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
!
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
rememberTokenStartPosition: offset
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
    tokenStartPosition := source position - offset
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
    "Created: / 17-03-2012 / 17:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
!Scanner methodsFor:'reading next token'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
characterEscape:char
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    |ascii c |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    char == $" ifTrue:[
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
    ].
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
    char == $b ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
        ^ Character backspace
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
    char == $t ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
        ^ Character tab
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    char == $n ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
        ^ Character cr
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    char == $r ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
        ^ Character return
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    char == $f ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
        ^ Character newPage
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
    char == $u ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
        ascii := 0.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
        c := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
        4 timesRepeat:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
            (c isDigitRadix:16) ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
                self syntaxError:'invalid hex character constant'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
                        position:source position-2 to:(source position - 1).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
                ^ Character value:ascii
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
            ascii := (ascii bitShift:4).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
            ascii := ascii + c digitValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
            source next. c := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
        ^ Character value:ascii
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
"/    char == $x ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
"/        ascii := 0.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
"/        c := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
"/        2 timesRepeat:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
"/            (c isDigitRadix:16) ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
"/                self syntaxError:'invalid hex character constant'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
"/                        position:source position-2 to:(source position - 1).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
"/                ^ Character value:ascii
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
"/            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
"/            ascii := (ascii bitShift:4).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
"/            ascii := ascii + c digitValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
"/            source next. c := source peekOrNil.
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
"/        ^ Character value:ascii
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
"/    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    "OctalEscape ::= \ OctalDigit |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
                     \ OctalDigit OctalDigit
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
                     \ ZeroToThree OctalDigit OctalDigit"
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
    (char between:$0 and:$3) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
        ascii := char digitValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
        c := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
        (c between: $0 and: $7) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
            ascii := (ascii bitShift:3).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
            ascii := ascii + c digitValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
        c := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
        (c between: $0 and: $7) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
            ascii := (ascii bitShift:3).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
            ascii := ascii + c digitValue.
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
        ^ Character value:ascii
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
    (char between:$4 and: $7) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
        ascii := char digitValue.            
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
        c := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
        (c between: $0 and: $7) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
            ascii := (ascii bitShift:3).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
            ascii := ascii + c digitValue.
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
        ^ Character value:ascii
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
    ^ char
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
    "Modified: / 16-03-2012 / 10:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
!
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
exponentPart:initialValue
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
    |nextChar value s|
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
    value := initialValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
    nextChar := source peekOrNil.
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
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
	nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
	(nextChar notNil and:[(nextChar isDigitRadix:10) or:['+-' includes:nextChar]]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
	    s := 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
	    (nextChar == $+) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
		nextChar := source nextPeek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
	    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
		(nextChar == $-) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
		    nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
		    s := s negated
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
		]
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
	    value := value asFloat
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
		     * (10.0 raisedToInteger:((Integer readFrom:source radix:10) * s))
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
    ^ value
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
hexponentPart:initialValue
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
    |nextChar value s|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
    value := initialValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
    nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
    ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
        nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
        (nextChar notNil and:[(nextChar isDigitRadix:16) or:['+-' includes:nextChar]]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
            s := 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
            (nextChar == $+) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
                nextChar := source nextPeek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
            ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
                (nextChar == $-) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
                    nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
                    s := s negated
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
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
            value := value asFloat
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
                     * (16.0 raisedToInteger:((Integer readFrom:source radix:16) * s))
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
        ]
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
    ^ value
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
    "Created: / 16-03-2012 / 00:00:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
nextDotOrFloat
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
    |nextChar|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
    nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
    nextChar isDigit ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
	^ self nextFractionalPart:0.
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
    tokenType := tokenValue := $. .
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
nextDotOrFloatOrEllipsis
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
    |nextChar nextChar2|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
    nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
    nextChar isDigit ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
        ^ self nextFractionalPart:0.
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
    nextChar == $. ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
        nextChar2 := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
        nextChar2 == $. ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
            tokenType := #Ellipsis.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
            tokenValue := '...'.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
            ^tokenType.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
        ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
            source skip: -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
    tokenType := tokenValue := $. .
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
    "Created: / 15-03-2012 / 10:08:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
nextFractionalPart:intValue
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
    |nextChar value|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
    value := intValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
    nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
    (nextChar notNil and:[nextChar isDigitRadix:10]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
        value := value asFloat + (self nextMantissa:10).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
        nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
        allowDegeneratedMantissa == true ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
            self warning:'degenerated float constant: ' , value printString , '.' .
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
            tokenValue := value asFloat.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
            tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
            ^ tokenType
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
        nextChar := peekChar := $..
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   500
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   501
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   502
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   503
        value := self exponentPart:value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   504
        nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   505
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   506
        ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   507
            value := self hexponentPart:value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   508
            nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   509
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   510
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   511
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   512
    tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   513
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
    (nextChar == $d or:[nextChar == $D]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
        tokenType := #Double.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
        (nextChar == $f or:[nextChar == $F]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
        tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   524
    ^ tokenType
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
    "Created: / 14-05-1998 / 20:00:25 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
    "Modified: / 16-05-1998 / 15:51:46 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
    "Modified: / 16-03-2012 / 00:00:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
nextHexFractionalPart:intValue
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
    |nextChar value|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   533
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
    value := intValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   535
    nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   536
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   537
    (nextChar notNil and:[nextChar isDigitRadix:16]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   538
        value := value asFloat + (self nextMantissa:16).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   539
        nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   540
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   541
        allowDegeneratedMantissa == true ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   542
            self warning:'degenerated float constant: ' , value printString , '.' .
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   543
            tokenValue := value asFloat.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   544
            tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   545
            ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   546
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   547
        nextChar := peekChar := $..
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   548
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   549
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   550
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   551
        value := self exponentPart:value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   552
        nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   553
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
        ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
            value := self hexponentPart:value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
            nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
    tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   561
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
    (nextChar == $d or:[nextChar == $D]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
        tokenType := #Double.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   566
        (nextChar == $f or:[nextChar == $F]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
            source next.
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
        tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
    ].
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
    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
    "Created: / 14-05-1998 / 20:00:25 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
    "Modified: / 16-05-1998 / 15:51:46 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
    "Created: / 16-03-2012 / 00:16:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
!
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
nextIdentifier
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
    "an alpha character (or underscore) has been read.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
     Return the next identifier."
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
    |nextChar string ok pos|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
    hereChar == $_ ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
        nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
        string := '_'.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
        [nextChar == $_] whileTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
            string := string copyWith:$_.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
            nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
        nextChar isAlphaNumeric ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
            string := string , source nextAlphaNumericWord.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
        ]
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
        string := source nextAlphaNumericWord "self nextId".
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
    nextChar := source peekOrNil.
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
    (nextChar == $_ or:[nextChar == $$]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
        pos := source position.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
        ok := true.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
        [ok] whileTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
            string := string copyWith:nextChar.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
            nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
            nextChar isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
                ok := false
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
            ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   609
                (nextChar isAlphaNumeric) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   610
                    string := string , source nextAlphaNumericWord.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   611
                    nextChar := source peekOrNil.
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
                (nextChar == $_ or:[nextChar == $$]) ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   614
                    ok := false
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
            ]
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
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   620
"/    (nextChar == $: and:[scanColonAsLabel]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   621
"/        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   622
"/        ch2 := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   623
"/        "/ colon follows - care for '::' (nameSpace separator) or ':=' (assignment)
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   624
"/        (ch2 == $=) ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   625
"/            (ch2 == $:) ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   626
"/                tokenEndPosition := source position - 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
"/                token := string copyWith:nextChar.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
"/                tokenType := #Keyword.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
"/                ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
"/            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
"/            peekChar := $:.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
"/            peekChar2 := $:.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
"/        ] ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
"/            peekChar := $:.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
"/            peekChar2 := $=.
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
"/    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   638
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
    tokenValue := string.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
    (self checkForKeyword:string) ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
        tokenType := #Identifier.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   643
    tokenEndPosition := source position - 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
    peekChar2 notNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
        tokenEndPosition := tokenEndPosition - 1
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
    ^ tokenType
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
    "Modified: / 15-03-2012 / 20:53:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
!
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
nextMulti:list after:firstChar
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
    "a char has been read - peek ahead in list"
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
    |pc|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   656
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   657
    peekChar isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   658
	source next.
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
	peekChar := nil.
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
    pc := source peek.
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
    list do:[:spec |
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   665
	|ch tok idx|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   666
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   667
	ch := spec at:1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   668
	tok := spec at:2.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   669
	idx := 3.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   670
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   671
	pc == ch ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   672
	    peekChar isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   673
		source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   674
	    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   675
		peekChar := nil.
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
	    spec size > 2 ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   679
		ch := spec at:3.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   680
		source peek == ch ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   681
		    source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   682
		    tok := spec at:4.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   683
		    idx := 5.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   684
		]
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
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
	    tok isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
		^ self perform:(spec at:idx).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   689
	    ].
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
	    tokenType := tokenValue := tok.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   692
	    ^ tokenType
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
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   695
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   696
    tokenType := tokenValue := firstChar.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   697
    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   698
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   699
    "Created: / 14.5.1998 / 19:19:34 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   700
    "Modified: / 16.5.1998 / 19:09:59 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   701
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   702
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   703
nextNumber
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   704
    |nextChar value|
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
    value := 0.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   707
    nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   708
    nextChar == $0 ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   709
        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   710
        nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   711
        (nextChar == $x or:[nextChar == $X]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   712
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   713
            value := Integer readFrom:source radix:16.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   714
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   715
            tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   716
            numberRadix := 16.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   717
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   718
            nextChar := source peekOrNil.
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
            source peekOrNil isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   721
                tokenType := #Integer.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   722
                tokenValue := 0.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   723
                ^tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   724
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   725
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   726
            (nextChar == $L or:[nextChar == $l]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   727
                source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   728
                tokenType := #LongInteger.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   729
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   730
            nextChar == $. ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   731
                source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   732
                ^self nextHexFractionalPart: tokenValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   733
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   734
            tokenType := #Integer.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   735
            ^ tokenType.
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
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   738
        (nextChar notNil and:[nextChar between:$0 and:$7]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   739
            value := Integer readFrom:source radix:8.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   740
            tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   741
            numberRadix := 8.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   742
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   743
            nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   744
            (nextChar == $L or:[nextChar == $l]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   745
                source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   746
                tokenType := #LongInteger.
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
                tokenType := #Integer.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   749
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   750
            ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   751
        ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   752
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   753
    (nextChar == $L or:[nextChar == $l]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   754
        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   755
        tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   756
        tokenType := #LongInteger.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   757
        ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   758
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   759
    (nextChar == $D or:[nextChar == $d]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   760
        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   761
        tokenValue := 0.0.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   762
        tokenType := #Double.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   763
        ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   764
    ].
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
    numberRadix := 10.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   769
    nextChar isDigit ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   770
        value := Integer readFrom:source radix:10.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   771
        nextChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   772
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   773
        (nextChar == $L or:[nextChar == $l]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   774
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   775
            tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   776
            tokenType := #LongInteger.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   777
            ^ tokenType
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
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   780
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   781
    (nextChar == $.) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   782
        nextChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   783
        (nextChar notNil and:[nextChar isDigitRadix:10]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   784
            value := value asFloat + (self nextMantissa:10).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   785
            nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   786
        ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   787
            allowDegeneratedMantissa == true ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   788
                self warning:'degenerated float constant: ' , value printString , '.' .
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   789
                tokenValue := value asFloat.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   790
                tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   791
                ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   792
            ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   793
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   794
"/            nextChar == (Character cr) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   795
"/                lineNr := lineNr + 1.
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
            nextChar := peekChar := $..
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
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   801
        value := self exponentPart:value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   802
        nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   803
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   804
        ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   805
            value := self hexponentPart:value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   806
            nextChar := source peekOrNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   807
        ]
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   808
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   809
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   810
    nextChar == $- ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   811
        self
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   812
            warnPossibleIncompatibility:'add a space before ''-'' for compatibility with other systems'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   813
            position:(source position) to:source position.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   814
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   815
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   816
    (nextChar == $d or:[nextChar == $D]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   817
        source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   818
        tokenType := #Double.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   819
        value := value asFloat.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   820
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   821
        (nextChar == $f or:[nextChar == $F]) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   822
            source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   823
            tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   824
            value := value asFloat.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   825
        ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   826
            (value isMemberOf:Float) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   827
                tokenType := #Float.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   828
            ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   829
                tokenType := #Integer.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   830
            ]
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
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   833
    tokenValue := value.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   834
    ^ tokenType
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
    "Created: / 14-05-1998 / 20:00:25 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   837
    "Modified: / 16-05-1998 / 15:51:46 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   838
    "Modified: / 16-03-2012 / 23:34:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   839
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   840
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   841
nextString:delimiter character:isCharacter
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   842
    |s pos nextChar inString|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   843
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   844
    s := (String new:20) writeStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   845
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   846
    pos := source position.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   847
    source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   848
    nextChar := source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   849
    inString := true.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   850
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   851
    [inString] whileTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   852
	nextChar isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   853
	    self syntaxError:'unexpected end-of-input in String'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   854
		    position:pos to:(source position - 1).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   855
	    tokenValue := nil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   856
	    tokenType := #EOF.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   857
	    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   858
	].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   859
	nextChar == $\ ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   860
	    nextChar := source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   861
	    nextChar := self characterEscape:nextChar.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   862
	] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   863
	    (nextChar == Character cr) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   864
		lineNr := lineNr + 1
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   865
	    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   866
		(nextChar == delimiter) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   867
		    (source peekOrNil == delimiter) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   868
			source next
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   869
		    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   870
			inString := false
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   871
		    ]
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   872
		].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   873
	    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   874
	].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   875
	inString ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   876
	    s nextPut:nextChar.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   877
	    nextChar := source next
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   878
	]
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   879
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   880
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   881
    tokenValue := s contents.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   882
    isCharacter ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   883
	tokenValue size ~~ 1 ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   884
	    self syntaxError:'bad (multi-)character constant'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   885
		    position:pos to:(source position - 1).
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   886
	].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   887
	tokenValue := tokenValue at:1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   888
	tokenType := #Character.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   889
    ] ifFalse:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   890
	tokenType := #String.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   891
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   892
    ^ tokenType
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   893
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   894
    "Created: / 16.5.1998 / 19:53:05 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   895
    "Modified: / 16.5.1998 / 19:57:16 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   896
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   897
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   898
nextToken
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   899
    |t|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   900
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   901
    [
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   902
        t := super nextToken.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   903
        tokenEndPosition := source position - 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   904
        t isNil
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   905
    ] whileTrue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   906
    Verbose == true ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   907
        Transcript 
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   908
            show:'JavaScanner nextToken => ';
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   909
            show: t storeString;
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   910
            show: ' | ';
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   911
            showCR: tokenValue.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   912
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   913
    ^ t
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   914
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   915
    "Created: / 14-05-1998 / 15:48:04 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   916
    "Modified: / 16-05-1998 / 19:12:29 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   917
    "Modified: / 17-03-2012 / 17:35:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   918
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   919
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   920
skipComment
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   921
    |commentStream commentType startPos|
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   922
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   923
    startPos := source position.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   924
    source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   925
    hereChar := source peekOrNil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   926
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   927
    [
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   928
	[hereChar notNil and:[hereChar ~~ $*]] whileTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   929
	    hereChar == (Character cr) ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   930
		lineNr := lineNr + 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   931
	    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   932
	    hereChar := source nextPeek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   933
	].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   934
    ] doUntil:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   935
	hereChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   936
	hereChar isNil or:[hereChar == $/].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   937
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   938
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   939
    "skip final /"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   940
    source next.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   941
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   942
    hereChar isNil ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   943
	self warning:'unclosed comment' position:startPos to:(source position)
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   944
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   945
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   946
"/    saveComments ifTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   947
"/        self endComment:(commentStream contents) type:commentType.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   948
"/    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   949
    ^ nil. "/ force nextToken again
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   950
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   951
    "Modified: / 31.3.1998 / 23:45:26 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   952
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   953
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   954
skipEOLComment
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   955
    hereChar := source peek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   956
    [hereChar notNil and:[hereChar ~~ Character cr]] whileTrue:[
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   957
	hereChar := source nextPeek.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   958
    ].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   959
    lineNr := lineNr + 1.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   960
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   961
    ^ nil.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   962
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   963
    "Created: / 16.5.1998 / 19:11:05 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   964
    "Modified: / 16.5.1998 / 19:15:42 / cg"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   965
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   966
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   967
!Scanner methodsFor:'stream api'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   968
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   969
atEnd
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   970
    ^ source atEnd
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   971
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   972
    "Created: / 14-03-2012 / 22:53:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   973
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   974
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   975
next
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   976
    ^ source next
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   977
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   978
    "Created: / 14-03-2012 / 22:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   979
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   980
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   981
next: anInteger 
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   982
    "Answer up to anInteger elements of my collection. Overridden for efficiency."
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   983
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   984
    ^ source nextAvailable: anInteger
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   985
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   986
    "Modified: / 14-03-2012 / 22:55:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   987
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   988
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   989
peek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   990
    "An improved version of peek, that is slightly faster than the built in version."
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   991
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   992
    ^source peek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   993
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   994
    "Modified: / 14-03-2012 / 22:46:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   995
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   996
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   997
position
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   998
    ^source position
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   999
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1000
    "Created: / 14-03-2012 / 22:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1001
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1002
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1003
position: anInteger
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1004
    "The receiver does not check for invalid arguments passed to this method, as it is solely used with valid indexes for backtracking."
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1005
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1006
"/    anInteger = 16 ifTrue:[self halt].
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1007
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1008
    ^source position: anInteger
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1009
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1010
    "Modified: / 15-03-2012 / 10:59:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1011
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1012
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1013
skipSeparators
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1014
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1015
    source skipSeparators
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1016
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1017
    "Created: / 15-03-2012 / 10:35:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1018
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1019
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1020
uncheckedPeek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1021
    "An unchecked version of peek that throws an error if we try to peek over the end of the stream, even faster than #peek."
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1022
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1023
    ^ self peek
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1024
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1025
    "Modified: / 14-03-2012 / 22:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1026
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1027
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1028
!Scanner::Token methodsFor:'accessing'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1029
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1030
endPosition
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1031
    ^ endPosition
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1032
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1033
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1034
endPosition:something
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1035
    endPosition := something.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1036
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1037
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1038
startPosition
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1039
    ^ startPosition
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1040
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1041
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1042
startPosition:something
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1043
    startPosition := something.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1044
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1045
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1046
type
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1047
    ^ type
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1048
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1049
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1050
type:something
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1051
    type := something.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1052
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1053
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1054
value
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1055
    ^ value
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1056
!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1057
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1058
value:something
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1059
    value := something.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1060
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1061
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1062
!Scanner::Token methodsFor:'printing & storing'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1063
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1064
printOn:aStream
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1065
    "append a printed representation if the receiver to the argument, aStream"
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1066
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1067
    super printOn:aStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1068
    aStream nextPutAll:'type: '.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1069
    type printOn:aStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1070
    aStream nextPutAll:'value: '.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1071
    value printOn:aStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1072
    aStream nextPutAll:'startPosition: '.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1073
    startPosition printOn:aStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1074
    aStream nextPutAll:'endPosition: '.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1075
    endPosition printOn:aStream.
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1076
! !
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1077
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1078
!Scanner class methodsFor:'documentation'!
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1079
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1080
version_HG
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1081
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1082
    ^ '$Changeset: <not expanded> $'
46dd2b3b6974 Initial outline of Dart parser
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1083
! !