tools/JavaScanner.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Jan 2013 23:19:12 +0000
branchrefactoring-vmdata
changeset 1985 7c5a14d663ba
parent 1947 dbebba5f7d70
child 2069 75d40b7b986f
permissions -rw-r--r--
Temporary commit. JavaNativeMethod refactored to use new-style native methods. Java VM does not boot at this point.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     1
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     2
 COPYRIGHT (c) 2003 by Claus Gittinger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     3
	      All Rights Reserved
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     4
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     5
 This software is furnished under a license and may be used
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    10
 hereby transferred.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    11
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    12
"{ Package: 'stx:libjava/tools' }"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    13
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    14
JavaScannerBase subclass:#JavaScanner
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    15
	instanceVariableNames:'allowDegeneratedMantissa keywordTable'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    16
	classVariableNames:'Verbose'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    17
	poolDictionaries:''
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    18
	category:'Languages-Java-Parser'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    19
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    20
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    21
Object subclass:#Token
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    22
	instanceVariableNames:'type value startPosition endPosition'
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    23
	classVariableNames:''
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    24
	poolDictionaries:''
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    25
	privateIn:JavaScanner
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    26
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
    27
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    28
!JavaScanner class methodsFor:'documentation'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    29
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    30
copyright
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    31
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    32
 COPYRIGHT (c) 2003 by Claus Gittinger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    33
	      All Rights Reserved
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    34
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    35
 This software is furnished under a license and may be used
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    36
 only in accordance with the terms of that license and with the
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    38
 be provided or otherwise made available to, or used by, any
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    39
 other person.  No title to or ownership of the software is
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    40
 hereby transferred.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    41
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    42
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    43
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    44
examples
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    45
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    46
    |s in|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    47
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    48
    in := '
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    49
function scalefactor(value) {
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    50
    scalevector[0]=value;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    51
    scalevector[1]=1.;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    52
    scalevector[2]=1.;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    53
}
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    54
'.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    55
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    56
    s := JavaScanner for:in readStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    57
    s nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    58
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    59
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    60
    |s in|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    61
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    62
    in := '
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    63
function scalefactor(value) {
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    64
    scalevector[0]=value;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    65
    scalevector[1]=1.;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    66
    scalevector[2]=1.;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    67
}
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    68
'.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    69
    s := JavaScanner new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    70
    s scanTokens:(in readStream).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    71
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    72
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    73
    |s in|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    74
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    75
    in := '
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    76
function scalefactor(value) {
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    77
    scalevector[0]=value;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    78
    scalevector[1]=1.;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    79
    scalevector[2]=1.;
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    80
}
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    81
'.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    82
    in := in readStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    83
    s := JavaScanner for:in.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    84
    [in atEnd] whileFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    85
	Transcript showCR:s nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    86
    ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    87
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    88
"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    89
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    90
    "Created: / 13.5.1998 / 14:54:06 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    91
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    92
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    93
!JavaScanner class methodsFor:'initialization'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    94
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    95
setupActions
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    96
    "initialize the scanners actionTables - these are used to dispatch
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    97
     into scanner methods as characters are read"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    98
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
    99
    |block|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   100
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   101
    self setupKeywordTable.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   102
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   103
    ActionArray := Array new:256.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   104
    TypeArray := Array new:256.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   105
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   106
    block := [:s :char | s nextNumber].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   107
    ($0 asciiValue) to:($9 asciiValue) do:[:index |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   108
        ActionArray at:index put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   109
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   110
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   111
    block := [:s :char | s nextSingleCharacterToken:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   112
    #( $: $; $, ${ $} $( $) $[ $] $_ $? $@) do:[:ch |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   113
        ActionArray at:(ch asciiValue) put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   114
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   115
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   116
    block := [:s :char | s nextIdentifier].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   117
    ($a asciiValue) to:($z asciiValue) do:[:index |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   118
        ActionArray at:index put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   119
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   120
    ($A asciiValue) to:($Z asciiValue) do:[:index |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   121
        ActionArray at:index put:block
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   122
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   123
    ActionArray at:$_ asciiValue put:block.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   124
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   125
    ActionArray at:$$ asciiValue put:block.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   126
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   127
    ActionArray at:($. asciiValue) put:[:s :char | s nextDotOrFloatOrEllipsis].
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   128
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   129
    ActionArray at:($' asciiValue) put:[:s :char | s nextString:$' character:true].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   130
    ActionArray at:($" asciiValue) put:[:s :char | s nextString:$" character:false].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   131
    ActionArray at:($!! asciiValue) put:[:s :char | s nextMulti:#(($= #'!!=')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   132
    ActionArray at:($= asciiValue) put:[:s :char | s nextMulti:#(($= #'==')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   133
    ActionArray at:($< asciiValue) put:[:s :char | s nextMulti:#(($= #'<=') ($< #'<<')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   134
    ActionArray at:($> asciiValue) put:[:s :char | s nextMulti:#(($= #'>=') ($> #'>>' $> #'>>>' $= #'>>>=')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   135
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   136
    ActionArray at:($- asciiValue) put:[:s :char | s nextMulti:#(($- #'--') ($= #'-=')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   137
    ActionArray at:($+ asciiValue) put:[:s :char | s nextMulti:#(($+ #'++') ($= #'+=')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   138
    ActionArray at:($* asciiValue) put:[:s :char | s nextMulti:#(($= #'*=')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   139
    ActionArray at:($/ asciiValue) put:[:s :char | s nextMulti:#(($= #'/=') ($/ nil #skipEOLComment) ($* nil #skipComment)) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   140
    ActionArray at:($% asciiValue) put:[:s :char | s nextMulti:#(($= #'%=')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   141
    ActionArray at:($& asciiValue) put:[:s :char | s nextMulti:#(($= #'&=') ($& #'&&')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   142
    ActionArray at:($^ asciiValue) put:[:s :char | s nextMulti:#(($= #'^=')) after:char].
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   143
    ActionArray at:($~ asciiValue) put:[:s :char | s nextMulti:#(($= #'~=')) after:char].
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   144
    ActionArray at:($| asciiValue) put:[:s :char | s nextMulti:#(($= #'|=') ($| #'||')) after:char].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   145
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   146
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   147
     self setupActions
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   148
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   149
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   150
    "Created: / 14-05-1998 / 15:48:03 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   151
    "Modified: / 17-05-1998 / 21:03:37 / cg"
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   152
    "Modified: / 16-03-2012 / 23:49:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   153
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   154
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   155
setupKeywordTable
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   156
    "initialize the scanners actionTables - these are used to dispatch
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   157
     into scanner methods as characters are read"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   158
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   159
    KeywordTable := Dictionary new.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   160
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   161
    #(
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   162
        'abstract'     abstract
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   163
        'boolean'      boolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   164
        'break'        break
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   165
        'byte'         byte
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   166
        'case'         case
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   167
        'catch'        catch
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   168
        'char'         char
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   169
        'class'        class
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   170
        'continue'     continue
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   171
        'default'      default
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   172
        'do'           do
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   173
        'double'       double
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   174
        'enum'         enum
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   175
        'else'         else
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   176
        'extends'      extends
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   177
        'final'        final
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   178
        'finally'      finally
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   179
        'float'        float
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   180
        'for'          for
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   181
        'if'           if
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   182
        'implements'   implements
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   183
        'import'       import
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   184
        'instanceof'   instanceof
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   185
        'int'          int
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   186
        'interface'    interface
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   187
        'long'         long
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   188
        'native'       native
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   189
        'new'          new
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   190
        'package'      package
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   191
        'private'      private
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   192
        'protected'    protected
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   193
        'public'       public
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   194
        'return'       return
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   195
        'short'        short
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   196
        'static'       static
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   197
        'super'        super
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   198
        'strictfp'     strictfp
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   199
        'switch'       switch
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   200
        'synchronized' synchronized
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   201
        'this'         this
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   202
        'threadsafe'   threadsafe
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   203
        'throw'        throw
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   204
        'throws'       throws
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   205
        'transient'    transient
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   206
        'try'          try
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   207
        'void'         void
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   208
        'volatile'     volatile
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   209
        'while'        while
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   210
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   211
        "/ Reserved, but Unused KeyWords
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   212
        'const'        const
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   213
        'byvalue'      byvalue
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   214
        'goto'         goto
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   215
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   216
        "/ literals
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   217
        'null'         null
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   218
        'true'         boolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   219
        'false'        boolean
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   220
    ) pairWiseDo:[:s :kw |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   221
        KeywordTable at:s put:kw
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   222
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   223
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   224
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   225
     NewJavaScanner setupKeywordTable
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   226
    "
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   227
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   228
    "Created: / 14-05-1998 / 15:48:03 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   229
    "Modified: / 17-05-1998 / 21:03:37 / cg"
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   230
    "Modified: / 15-03-2012 / 22:47:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   231
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   232
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   233
!JavaScanner methodsFor:'accessing'!
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   234
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   235
token
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   236
    "the previously scanned token"
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   237
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
   238
    ^Token new
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   239
        type: tokenType;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   240
        value: tokenValue;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   241
        startPosition: tokenStartPosition;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   242
        endPosition: tokenEndPosition;
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   243
        yourself
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   244
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   245
    "Created: / 17-03-2012 / 13:32:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   246
! !
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   247
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   248
!JavaScanner methodsFor:'converting'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   249
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   250
asPetitStream
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   251
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   252
    ^self
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   253
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   254
    "Created: / 14-03-2012 / 22:51:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   255
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   256
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   257
!JavaScanner methodsFor:'error handling'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   258
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   259
errorMessagePrefix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   260
    ^ 'Java Error:'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   261
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   262
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   263
warningMessagePrefix
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   264
    ^ 'Java Warning:'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   265
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   266
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   267
!JavaScanner methodsFor:'initialization'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   268
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   269
initialize
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   270
    "initialize the scanner"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   271
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   272
    super initialize.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   273
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   274
    allowDegeneratedMantissa := true.     "/ something like 123.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   275
    keywordTable := self class keywordTable.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   276
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   277
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   278
!JavaScanner methodsFor:'private'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   279
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   280
checkForKeyword:string
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   281
    "check if string is a keyword (as opposed to an identifier)."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   282
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   283
    |tok|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   284
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   285
    (tok := keywordTable at:string ifAbsent:nil) notNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   286
	tokenType := tok.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   287
	^ true
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   288
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   289
    ^ false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   290
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   291
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   292
isCommentCharacter:ch
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   293
    "return true, if ch is the comment-start character"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   294
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   295
    ^ false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   296
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   297
    "Created: / 14.5.1998 / 20:53:33 / cg"
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   298
!
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   299
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   300
rememberTokenStartPosition
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   301
    self rememberTokenStartPosition:0
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   302
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   303
    "Created: / 17-03-2012 / 00:19:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   304
!
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   305
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   306
rememberTokenStartPosition: offset
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   307
    tokenStartPosition := source position - offset
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   308
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   309
    "Created: / 17-03-2012 / 17:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   310
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   311
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   312
!JavaScanner methodsFor:'reading next token'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   313
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   314
characterEscape:char
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   315
    |ascii c |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   316
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   317
    char == $" ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   318
        ^ $".
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   319
    ].
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   320
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   321
    char == $b ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   322
        ^ Character backspace
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   323
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   324
    char == $t ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   325
        ^ Character tab
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   326
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   327
    char == $n ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   328
        ^ Character cr
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   329
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   330
    char == $r ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   331
        ^ Character return
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   332
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   333
    char == $f ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   334
        ^ Character newPage
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   335
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   336
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   337
    char == $u ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   338
        ascii := 0.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   339
        c := source peekOrNil.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   340
        4 timesRepeat:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   341
            (c isDigitRadix:16) ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   342
                self syntaxError:'invalid hex character constant'
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   343
                        position:source position-2 to:(source position - 1).
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   344
                ^ Character value:ascii
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   345
            ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   346
            ascii := (ascii bitShift:4).
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   347
            ascii := ascii + c digitValue.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   348
            source next. c := source peekOrNil.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   349
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   350
        ^ Character value:ascii
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   351
    ].
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   352
"/    char == $x ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   353
"/        ascii := 0.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   354
"/        c := source peekOrNil.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   355
"/        2 timesRepeat:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   356
"/            (c isDigitRadix:16) ifFalse:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   357
"/                self syntaxError:'invalid hex character constant'
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   358
"/                        position:source position-2 to:(source position - 1).
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   359
"/                ^ Character value:ascii
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   360
"/            ].
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   361
"/            ascii := (ascii bitShift:4).
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   362
"/            ascii := ascii + c digitValue.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   363
"/            source next. c := source peekOrNil.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   364
"/        ].
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   365
"/        ^ Character value:ascii
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   366
"/    ].
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   367
    "OctalEscape ::= \ OctalDigit |
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   368
                     \ OctalDigit OctalDigit
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   369
                     \ ZeroToThree OctalDigit OctalDigit"
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   370
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   371
    (char between:$0 and:$3) ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   372
        ascii := char digitValue.
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   373
        c := source peekOrNil.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   374
        (c between: $0 and: $7) ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   375
            source next.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   376
            ascii := (ascii bitShift:3).
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   377
            ascii := ascii + c digitValue.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   378
        ].
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   379
        c := source peekOrNil.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   380
        (c between: $0 and: $7) ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   381
            source next.
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   382
            ascii := (ascii bitShift:3).
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   383
            ascii := ascii + c digitValue.
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   384
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   385
        ^ Character value:ascii
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   386
    ].
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   387
    (char between:$4 and: $7) ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   388
        ascii := char digitValue.            
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   389
        c := source peekOrNil.
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   390
        (c between: $0 and: $7) ifTrue:[
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   391
            source next.
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   392
            ascii := (ascii bitShift:3).
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   393
            ascii := ascii + c digitValue.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   394
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   395
        ^ Character value:ascii
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   396
    ].
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   397
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   398
    ^ char
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   399
1422
1a51f93d412e Fixes, parses java/lang and java/awt
vranyj1
parents: 1421
diff changeset
   400
    "Modified: / 16-03-2012 / 10:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   401
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   402
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   403
exponentPart:initialValue
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   404
    |nextChar value s|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   405
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   406
    value := initialValue.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   407
    nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   408
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   409
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   410
	nextChar := source nextPeek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   411
	(nextChar notNil and:[(nextChar isDigitRadix:10) or:['+-' includes:nextChar]]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   412
	    s := 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   413
	    (nextChar == $+) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   414
		nextChar := source nextPeek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   415
	    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   416
		(nextChar == $-) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   417
		    nextChar := source nextPeek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   418
		    s := s negated
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   419
		]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   420
	    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   421
	    value := value asFloat
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   422
		     * (10.0 raisedToInteger:((Integer readFrom:source radix:10) * s))
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   423
	]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   424
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   425
    ^ value
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   426
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   427
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   428
hexponentPart:initialValue
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   429
    |nextChar value s|
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   430
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   431
    value := initialValue.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   432
    nextChar := source peekOrNil.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   433
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   434
    ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   435
        nextChar := source nextPeek.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   436
        (nextChar notNil and:[(nextChar isDigitRadix:16) or:['+-' includes:nextChar]]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   437
            s := 1.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   438
            (nextChar == $+) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   439
                nextChar := source nextPeek
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   440
            ] ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   441
                (nextChar == $-) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   442
                    nextChar := source nextPeek.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   443
                    s := s negated
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   444
                ]
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   445
            ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   446
            value := value asFloat
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   447
                     * (16.0 raisedToInteger:((Integer readFrom:source radix:16) * s))
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   448
        ]
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   449
    ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   450
    ^ value
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   451
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   452
    "Created: / 16-03-2012 / 00:00:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   453
!
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   454
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   455
nextDotOrFloat
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   456
    |nextChar|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   457
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   458
    nextChar := source nextPeek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   459
    nextChar isDigit ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   460
	^ self nextFractionalPart:0.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   461
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   462
    tokenType := tokenValue := $. .
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   463
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   464
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   465
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   466
nextDotOrFloatOrEllipsis
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   467
    |nextChar nextChar2|
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   468
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   469
    nextChar := source nextPeek.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   470
    nextChar isDigit ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   471
        ^ self nextFractionalPart:0.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   472
    ].
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   473
    nextChar == $. ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   474
        nextChar2 := source nextPeek.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   475
        nextChar2 == $. ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   476
            source next.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   477
            tokenType := #Ellipsis.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   478
            tokenValue := '...'.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   479
            ^tokenType.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   480
        ] ifFalse:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   481
            source skip: -1.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   482
        ].
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   483
    ].
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   484
    tokenType := tokenValue := $. .
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   485
    ^ tokenType
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   486
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   487
    "Created: / 15-03-2012 / 10:08:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   488
!
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   489
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   490
nextFractionalPart:intValue
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   491
    |nextChar value|
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   492
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   493
    value := intValue.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   494
    nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   495
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   496
    (nextChar notNil and:[nextChar isDigitRadix:10]) ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   497
        value := value asFloat + (self nextMantissa:10).
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   498
        nextChar := source peekOrNil
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   499
    ] ifFalse:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   500
        allowDegeneratedMantissa == true ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   501
            self warning:'degenerated float constant: ' , value printString , '.' .
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   502
            tokenValue := value asFloat.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   503
            tokenType := #Float.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   504
            ^ tokenType
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   505
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   506
        nextChar := peekChar := $..
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   507
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   508
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   509
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   510
        value := self exponentPart:value.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   511
        nextChar := source peekOrNil
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   512
    ] ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   513
        ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   514
            value := self hexponentPart:value.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   515
            nextChar := source peekOrNil
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   516
        ].
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   517
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   518
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   519
    tokenValue := value.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   520
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   521
    (nextChar == $d or:[nextChar == $D]) ifTrue:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   522
        source next.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   523
        tokenType := #Double.
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   524
    ] ifFalse:[
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   525
        (nextChar == $f or:[nextChar == $F]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   526
            source next.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   527
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   528
        tokenType := #Float.
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   529
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   530
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   531
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   532
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   533
    "Created: / 14-05-1998 / 20:00:25 / cg"
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   534
    "Modified: / 16-05-1998 / 15:51:46 / cg"
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   535
    "Modified: / 16-03-2012 / 00:00:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   536
!
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   537
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   538
nextHexFractionalPart:intValue
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   539
    |nextChar value|
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   540
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   541
    value := intValue.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   542
    nextChar := source peekOrNil.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   543
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   544
    (nextChar notNil and:[nextChar isDigitRadix:16]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   545
        value := value asFloat + (self nextMantissa:16).
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   546
        nextChar := source peekOrNil
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   547
    ] ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   548
        allowDegeneratedMantissa == true ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   549
            self warning:'degenerated float constant: ' , value printString , '.' .
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   550
            tokenValue := value asFloat.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   551
            tokenType := #Float.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   552
            ^ tokenType
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   553
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   554
        nextChar := peekChar := $..
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   555
    ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   556
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   557
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   558
        value := self exponentPart:value.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   559
        nextChar := source peekOrNil
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   560
    ] ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   561
        ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   562
            value := self hexponentPart:value.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   563
            nextChar := source peekOrNil
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   564
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   565
    ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   566
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   567
    tokenValue := value.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   568
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   569
    (nextChar == $d or:[nextChar == $D]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   570
        source next.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   571
        tokenType := #Double.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   572
    ] ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   573
        (nextChar == $f or:[nextChar == $F]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   574
            source next.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   575
        ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   576
        tokenType := #Float.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   577
    ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   578
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   579
    ^ tokenType
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   580
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   581
    "Created: / 14-05-1998 / 20:00:25 / cg"
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   582
    "Modified: / 16-05-1998 / 15:51:46 / cg"
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   583
    "Created: / 16-03-2012 / 00:16:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   584
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   585
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   586
nextIdentifier
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   587
    "an alpha character (or underscore) has been read.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   588
     Return the next identifier."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   589
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   590
    |nextChar string ok pos|
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   591
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   592
    hereChar == $_ ifTrue:[
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   593
        nextChar := source nextPeek.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   594
        string := '_'.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   595
        [nextChar == $_] whileTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   596
            string := string copyWith:$_.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   597
            nextChar := source nextPeek.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   598
        ].
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   599
        nextChar isAlphaNumeric ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   600
            string := string , source nextAlphaNumericWord.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   601
        ]
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   602
    ] ifFalse:[
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   603
        string := source nextAlphaNumericWord "self nextId".
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   604
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   605
    nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   606
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   607
    (nextChar == $_ or:[nextChar == $$]) ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   608
        pos := source position.
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   609
        ok := true.
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   610
        [ok] whileTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   611
            string := string copyWith:nextChar.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   612
            nextChar := source nextPeek.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   613
            nextChar isNil ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   614
                ok := false
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   615
            ] ifFalse:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   616
                (nextChar isAlphaNumeric) ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   617
                    string := string , source nextAlphaNumericWord.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   618
                    nextChar := source peekOrNil.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   619
                ].
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   620
                (nextChar == $_ or:[nextChar == $$]) ifFalse:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   621
                    ok := false
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   622
                ]
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   623
            ]
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   624
        ].
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   625
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   626
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   627
"/    (nextChar == $: and:[scanColonAsLabel]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   628
"/        source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   629
"/        ch2 := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   630
"/        "/ colon follows - care for '::' (nameSpace separator) or ':=' (assignment)
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   631
"/        (ch2 == $=) ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   632
"/            (ch2 == $:) ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   633
"/                tokenEndPosition := source position - 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   634
"/                token := string copyWith:nextChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   635
"/                tokenType := #Keyword.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   636
"/                ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   637
"/            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   638
"/            peekChar := $:.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   639
"/            peekChar2 := $:.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   640
"/        ] ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   641
"/            peekChar := $:.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   642
"/            peekChar2 := $=.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   643
"/        ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   644
"/    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   645
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   646
    tokenValue := string.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   647
    (self checkForKeyword:string) ifFalse:[
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   648
        tokenType := #Identifier.
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   649
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   650
    tokenEndPosition := source position - 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   651
    peekChar2 notNil ifTrue:[
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   652
        tokenEndPosition := tokenEndPosition - 1
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   653
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   654
    ^ tokenType
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   655
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   656
    "Modified: / 15-03-2012 / 20:53:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   657
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   658
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   659
nextMulti:list after:firstChar
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   660
    "a char has been read - peek ahead in list"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   661
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   662
    |pc|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   663
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   664
    peekChar isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   665
	source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   666
    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   667
	peekChar := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   668
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   669
    pc := source peek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   670
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   671
    list do:[:spec |
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   672
	|ch tok idx|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   673
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   674
	ch := spec at:1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   675
	tok := spec at:2.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   676
	idx := 3.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   677
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   678
	pc == ch ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   679
	    peekChar isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   680
		source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   681
	    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   682
		peekChar := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   683
	    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   684
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   685
	    spec size > 2 ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   686
		ch := spec at:3.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   687
		source peek == ch ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   688
		    source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   689
		    tok := spec at:4.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   690
		    idx := 5.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   691
		]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   692
	    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   693
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   694
	    tok isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   695
		^ self perform:(spec at:idx).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   696
	    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   697
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   698
	    tokenType := tokenValue := tok.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   699
	    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   700
	]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   701
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   702
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   703
    tokenType := tokenValue := firstChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   704
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   705
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   706
    "Created: / 14.5.1998 / 19:19:34 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   707
    "Modified: / 16.5.1998 / 19:09:59 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   708
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   709
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   710
nextNumber
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   711
    |nextChar value|
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   712
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   713
    value := 0.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   714
    nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   715
    nextChar == $0 ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   716
        source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   717
        nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   718
        (nextChar == $x or:[nextChar == $X]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   719
            source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   720
            value := Integer readFrom:source radix:16.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   721
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   722
            tokenValue := value.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   723
            numberRadix := 16.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   724
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   725
            nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   726
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   727
            source peekOrNil isNil ifTrue:[
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   728
                tokenType := #Integer.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   729
                tokenValue := 0.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   730
                ^tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   731
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   732
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   733
            (nextChar == $L or:[nextChar == $l]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   734
                source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   735
                tokenType := #LongInteger.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   736
            ].
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   737
            nextChar == $. ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   738
                source next.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   739
                ^self nextHexFractionalPart: tokenValue.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   740
            ].
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   741
            tokenType := #Integer.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   742
            ^ tokenType.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   743
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   744
        ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   745
        (nextChar notNil and:[nextChar between:$0 and:$7]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   746
            value := Integer readFrom:source radix:8.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   747
            tokenValue := value.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   748
            numberRadix := 8.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   749
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   750
            nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   751
            (nextChar == $L or:[nextChar == $l]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   752
                source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   753
                tokenType := #LongInteger.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   754
            ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   755
                tokenType := #Integer.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   756
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   757
            ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   758
        ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   759
    ].
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   760
    (nextChar == $L or:[nextChar == $l]) ifTrue:[
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   761
        source next.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   762
        tokenValue := value.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   763
        tokenType := #LongInteger.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   764
        ^ tokenType
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   765
    ].
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   766
    (nextChar == $D or:[nextChar == $d]) ifTrue:[
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   767
        source next.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   768
        tokenValue := 0.0.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   769
        tokenType := #Double.
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   770
        ^ tokenType
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   771
    ].
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   772
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   773
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   774
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   775
    numberRadix := 10.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   776
    nextChar isDigit ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   777
        value := Integer readFrom:source radix:10.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   778
        nextChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   779
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   780
        (nextChar == $L or:[nextChar == $l]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   781
            source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   782
            tokenValue := value.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   783
            tokenType := #LongInteger.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   784
            ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   785
        ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   786
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   787
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   788
    (nextChar == $.) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   789
        nextChar := source nextPeek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   790
        (nextChar notNil and:[nextChar isDigitRadix:10]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   791
            value := value asFloat + (self nextMantissa:10).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   792
            nextChar := source peekOrNil
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   793
        ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   794
            allowDegeneratedMantissa == true ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   795
                self warning:'degenerated float constant: ' , value printString , '.' .
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   796
                tokenValue := value asFloat.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   797
                tokenType := #Float.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   798
                ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   799
            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   800
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   801
"/            nextChar == (Character cr) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   802
"/                lineNr := lineNr + 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   803
"/            ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   804
            nextChar := peekChar := $..
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   805
        ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   806
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   807
    ((nextChar == $e) or:[nextChar == $E]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   808
        value := self exponentPart:value.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   809
        nextChar := source peekOrNil
1421
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   810
    ] ifFalse:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   811
        ((nextChar == $p) or:[nextChar == $P]) ifTrue:[
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   812
            value := self hexponentPart:value.
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   813
            nextChar := source peekOrNil
d68e361680e9 Parser improved, now it parser whole java.lang (code block skipped for now)
vranyj1
parents: 1420
diff changeset
   814
        ]
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   815
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   816
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   817
    nextChar == $- ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   818
        self
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   819
            warnPossibleIncompatibility:'add a space before ''-'' for compatibility with other systems'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   820
            position:(source position) to:source position.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   821
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   822
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   823
    (nextChar == $d or:[nextChar == $D]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   824
        source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   825
        tokenType := #Double.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   826
        value := value asFloat.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   827
    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   828
        (nextChar == $f or:[nextChar == $F]) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   829
            source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   830
            tokenType := #Float.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   831
            value := value asFloat.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   832
        ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   833
            (value isMemberOf:Float) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   834
                tokenType := #Float.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   835
            ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   836
                tokenType := #Integer.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   837
            ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   838
        ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   839
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   840
    tokenValue := value.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   841
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   842
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   843
    "Created: / 14-05-1998 / 20:00:25 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   844
    "Modified: / 16-05-1998 / 15:51:46 / cg"
1424
9d8337007106 Fixes in JavaSyntaxHighlighter to use new JavaParser
vranyj1
parents: 1422
diff changeset
   845
    "Modified: / 16-03-2012 / 23:34:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   846
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   847
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   848
nextString:delimiter character:isCharacter
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   849
    |s pos nextChar inString|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   850
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   851
    s := (String new:20) writeStream.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   852
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   853
    pos := source position.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   854
    source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   855
    nextChar := source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   856
    inString := true.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   857
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   858
    [inString] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   859
	nextChar isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   860
	    self syntaxError:'unexpected end-of-input in String'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   861
		    position:pos to:(source position - 1).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   862
	    tokenValue := nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   863
	    tokenType := #EOF.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   864
	    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   865
	].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   866
	nextChar == $\ ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   867
	    nextChar := source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   868
	    nextChar := self characterEscape:nextChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   869
	] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   870
	    (nextChar == Character cr) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   871
		lineNr := lineNr + 1
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   872
	    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   873
		(nextChar == delimiter) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   874
		    (source peekOrNil == delimiter) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   875
			source next
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   876
		    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   877
			inString := false
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   878
		    ]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   879
		].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   880
	    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   881
	].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   882
	inString ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   883
	    s nextPut:nextChar.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   884
	    nextChar := source next
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   885
	]
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   886
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   887
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   888
    tokenValue := s contents.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   889
    isCharacter ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   890
	tokenValue size ~~ 1 ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   891
	    self syntaxError:'bad (multi-)character constant'
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   892
		    position:pos to:(source position - 1).
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   893
	].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   894
	tokenValue := tokenValue at:1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   895
	tokenType := #Character.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   896
    ] ifFalse:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   897
	tokenType := #String.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   898
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   899
    ^ tokenType
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   900
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   901
    "Created: / 16.5.1998 / 19:53:05 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   902
    "Modified: / 16.5.1998 / 19:57:16 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   903
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   904
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   905
nextToken
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   906
    |t|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   907
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   908
    [
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   909
        t := super nextToken.
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   910
        tokenEndPosition := source position - 1.
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   911
        t isNil
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   912
    ] whileTrue.
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   913
    Verbose == true ifTrue:[
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   914
        Transcript 
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   915
            show:'JavaScanner nextToken => ';
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   916
            show: t storeString;
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   917
            show: ' | ';
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   918
            showCR: tokenValue.
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   919
    ].
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   920
    ^ t
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   921
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   922
    "Created: / 14-05-1998 / 15:48:04 / cg"
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
   923
    "Modified: / 16-05-1998 / 19:12:29 / cg"
1426
69e535962d10 Improvements in syntax highlighting
vranyj1
parents: 1424
diff changeset
   924
    "Modified: / 17-03-2012 / 17:35:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   925
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   926
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   927
skipComment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   928
    |commentStream commentType startPos|
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   929
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   930
    startPos := source position.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   931
    source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   932
    hereChar := source peekOrNil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   933
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   934
    [
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   935
	[hereChar notNil and:[hereChar ~~ $*]] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   936
	    hereChar == (Character cr) ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   937
		lineNr := lineNr + 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   938
	    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   939
	    hereChar := source nextPeek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   940
	].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   941
    ] doUntil:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   942
	hereChar := source nextPeek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   943
	hereChar isNil or:[hereChar == $/].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   944
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   945
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   946
    "skip final /"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   947
    source next.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   948
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   949
    hereChar isNil ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   950
	self warning:'unclosed comment' position:startPos to:(source position)
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   951
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   952
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   953
"/    saveComments ifTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   954
"/        self endComment:(commentStream contents) type:commentType.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   955
"/    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   956
    ^ nil. "/ force nextToken again
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   957
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   958
    "Modified: / 31.3.1998 / 23:45:26 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   959
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   960
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   961
skipEOLComment
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   962
    hereChar := source peek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   963
    [hereChar notNil and:[hereChar ~~ Character cr]] whileTrue:[
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   964
	hereChar := source nextPeek.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   965
    ].
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   966
    lineNr := lineNr + 1.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   967
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   968
    ^ nil.
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   969
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   970
    "Created: / 16.5.1998 / 19:11:05 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   971
    "Modified: / 16.5.1998 / 19:15:42 / cg"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   972
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   973
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   974
!JavaScanner methodsFor:'stream api'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   975
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   976
atEnd
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   977
    ^ source atEnd
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   978
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   979
    "Created: / 14-03-2012 / 22:53:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   980
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   981
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   982
next
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   983
    ^ source next
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   984
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   985
    "Created: / 14-03-2012 / 22:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   986
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   987
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   988
next: anInteger 
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   989
    "Answer up to anInteger elements of my collection. Overridden for efficiency."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   990
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   991
    ^ source nextAvailable: anInteger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   992
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   993
    "Modified: / 14-03-2012 / 22:55:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   994
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   995
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   996
peek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   997
    "An improved version of peek, that is slightly faster than the built in version."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   998
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
   999
    ^source peek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1000
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1001
    "Modified: / 14-03-2012 / 22:46:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1002
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1003
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1004
position
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1005
    ^source position
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1006
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1007
    "Created: / 14-03-2012 / 22:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1008
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1009
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1010
position: anInteger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1011
    "The receiver does not check for invalid arguments passed to this method, as it is solely used with valid indexes for backtracking."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1012
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1013
"/    anInteger = 16 ifTrue:[self halt].
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1014
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1015
    ^source position: anInteger
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1016
1420
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1017
    "Modified: / 15-03-2012 / 10:59:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1018
!
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1019
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1020
skipSeparators
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1021
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1022
    source skipSeparators
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1023
574d4bda2162 Fixes - all test pass
vranyj1
parents: 1419
diff changeset
  1024
    "Created: / 15-03-2012 / 10:35:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1025
!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1026
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1027
uncheckedPeek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1028
    "An unchecked version of peek that throws an error if we try to peek over the end of the stream, even faster than #peek."
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1029
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1030
    ^ self peek
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1031
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1032
    "Modified: / 14-03-2012 / 22:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1033
! !
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1034
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1035
!JavaScanner::Token class methodsFor:'documentation'!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1036
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1037
version_HG
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1038
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1039
    ^ '$Changeset: <not expanded> $'
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1040
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1041
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1042
version_SVN
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1043
    ^ '§Id§'
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1044
! !
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1045
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1046
!JavaScanner::Token methodsFor:'accessing'!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1047
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1048
endPosition
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1049
    ^ endPosition
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1050
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1051
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1052
endPosition:something
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1053
    endPosition := something.
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1054
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1055
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1056
startPosition
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1057
    ^ startPosition
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1058
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1059
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1060
startPosition:something
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1061
    startPosition := something.
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1062
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1063
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1064
type
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1065
    ^ type
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1066
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1067
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1068
type:something
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1069
    type := something.
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1070
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1071
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1072
value
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1073
    ^ value
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1074
!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1075
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1076
value:something
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1077
    value := something.
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1078
! !
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1079
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1080
!JavaScanner::Token methodsFor:'printing & storing'!
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1081
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1082
printOn:aStream
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1083
    "append a printed representation if the receiver to the argument, aStream"
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1084
1947
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1085
    aStream nextPut: ${.
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1086
    type printOn:aStream.
1947
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1087
    aStream nextPutAll:' - '.
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1088
    value printOn:aStream.
1947
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1089
    aStream nextPutAll:' <'.
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1090
    startPosition printOn:aStream.
1947
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1091
    aStream nextPutAll:'-'.
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1092
    endPosition printOn:aStream.
1947
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1093
    aStream nextPutAll:' >}'.
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1094
dbebba5f7d70 Some more work on source partitioner.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1944
diff changeset
  1095
    "Modified: / 11-01-2013 / 12:32:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1944
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1096
! !
25a444558ba2 Java parser classes cleanup.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1879
diff changeset
  1097
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1098
!JavaScanner class methodsFor:'documentation'!
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1099
1879
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
  1100
version_HG
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
  1101
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
  1102
    ^ '$Changeset: <not expanded> $'
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
  1103
!
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
  1104
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1105
version_SVN
1879
7d232ff32dde Refactoring of JavaParserII>>importDeclaration
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1818
diff changeset
  1106
    ^ '§Id§'
1419
ec8c810acddb Parser is now based on JavaScanner
vranyj1
parents:
diff changeset
  1107
! !