TokenizedStream.st
author Claus Gittinger <cg@exept.de>
Sat, 02 May 2020 21:40:13 +0200
changeset 5476 7355a4b11cb6
parent 2385 bc283bcaac72
permissions -rw-r--r--
#FEATURE by cg class: Socket class added: #newTCPclientToHost:port:domain:domainOrder:withTimeout: changed: #newTCPclientToHost:port:domain:withTimeout:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
     1
"{ Package: 'stx:libbasic2' }"
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
     2
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
     3
"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
     4
 COPYRIGHT (c) 1996 by eXept Software AG
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
     5
	      All Rights Reserved
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
     6
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
     7
 This software is furnished under a license and may be used
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
     8
 only in accordance with the terms of that license and with the
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    10
 be provided or otherwise made available to, or used by, any
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    11
 other person.  No title to or ownership of the software is
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    12
 hereby transferred.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    13
"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    14
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    15
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    16
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
ReadStream subclass:#TokenizedStream
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    18
	instanceVariableNames:'inputStream token tokenType tokenPosition tokenName tokenLineNr
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
		tokenValue tokenRadix hereChar peekChar peekChar2
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
		beginCommentCharacter endCommentCharacter eolCommentCharacter
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
    21
		eolCharacter outStream outCol actions types eolIsSignificant
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    22
		allowFloatNumbers numbersAreSigned'
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
	classVariableNames:'DefaultActions DefaultTypes'
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	poolDictionaries:''
475
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
    25
	category:'Streams-Misc'
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!TokenizedStream class methodsFor:'documentation'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    30
copyright
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    31
"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    32
 COPYRIGHT (c) 1996 by eXept Software AG
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    33
	      All Rights Reserved
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    34
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    35
 This software is furnished under a license and may be used
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    36
 only in accordance with the terms of that license and with the
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    38
 be provided or otherwise made available to, or used by, any
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    39
 other person.  No title to or ownership of the software is
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    40
 hereby transferred.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    41
"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    42
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    43
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    44
!
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    45
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    46
documentation
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    47
"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    48
    a first version of a tokenStream.
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    49
    This is still being constructed and will probably be enhanced
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    50
    and may finally help a simplified Scanner class.
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    51
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    52
    For now, it may be useful when textual input files are to be read and
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    53
    parsed. For example, ascii data files are often in a simple free form format
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    54
    which requires some little processing.
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    55
    Dont blame me, if its not powerful enough for your needs.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    56
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    57
    operation:
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    58
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    59
	characters are read from a real input stream
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    60
	and the tokenizer dispatches to a token reading method by the help
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    61
	of an actionTable, which is indexed by the tokenType.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    62
	The tokenType itself is aquired via another table via
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    63
	the characters ascii code.
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    64
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    65
	By default, the table is setup to only read numbers
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
    66
	and identifiers.
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    67
	Whitespace is ignored, and all other characters return themself.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    68
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    69
    The returned tokens are either symbols (#Identifier, #Integer ..) or
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    70
    characters ($+ $, etc.)
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    71
    If its #Identifier, the name is found in tokenName (there is an access method for that).
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    72
    If its #Integer or #Float, the value is found in tokenValue.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    73
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    74
    EndOfLine is either ignored or returned as #EOL (if eolIsSignificant is true).
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    75
    End of input as #EOF.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    76
    Unrecognized input leads to #Error to be returned.
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    77
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    78
    Customized tokenizers can be setup, by modifying the action- or typeTables.
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
    79
    See examples for more.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    80
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    81
    [author:]
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    82
	Claus Gittinger
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    83
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    84
    [see also:]
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    85
	ReadStream
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    86
	Scanner
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    87
	Tgen::*
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    88
"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
    89
!
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
examples
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
    93
    simple example; tokenizing some string:
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    94
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    95
	|s|
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    97
	s := TokenizedStream on:'hello world, how much is 3 + 2'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    98
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
    99
	    Transcript showCR:(s next).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   100
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   101
									[exEnd]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   104
    simple example2; tokenizing and checking:
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   105
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   106
	|s token|
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   108
	s := TokenizedStream on:'foo bar baz  3 + 2'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   109
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   110
	    token := s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   111
	    token == #Identifier ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   112
		Transcript showCR:(token , ' name=' , s tokenName).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   113
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   114
		token == #Integer ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   115
		    Transcript showCR:(token , ' value=' , s tokenValue printString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   116
		] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   117
		    Transcript showCR:token.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   118
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   119
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   120
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   121
									[exEnd]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   124
    reading simple expressions:
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   125
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   126
	|s num1 num2|
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   128
	s := TokenizedStream on:'
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
3 + 2
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
4 + 6
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
1 + 2
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
'.
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   133
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   134
	    s next == #Integer ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   135
		num1 := s tokenValue.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   136
		s next == $+ ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   137
		    s next == #Integer ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   138
			num2 := s tokenValue.
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   139
			Transcript showCR:num1 printString
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   140
					  , ' + '
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   141
					  , num2 printString
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   142
					  , ' => '
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   143
					  , (num1 + num2) printString.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   144
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   145
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   146
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   147
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   148
									[exEnd]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    with eol-comments:
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   152
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   153
	|s num1 num2|
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   155
	s := TokenizedStream on:'
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
3 + 2
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
; this is a comment
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
4 + 6
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
1 + 2
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
'.
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   161
	s eolCommentCharacter:$;.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   163
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   164
	    s next == #Integer ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   165
		num1 := s tokenValue.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   166
		s next == $+ ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   167
		    s next == #Integer ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   168
			num2 := s tokenValue.
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   169
			Transcript showCR:num1 printString
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   170
					  , ' + '
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   171
					  , num2 printString
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   172
					  , ' => '
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   173
					  , (num1 + num2) printString.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   174
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   175
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   176
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   177
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   178
									[exEnd]
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   179
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   181
    allowing float & negative numbers (the default):
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   182
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   183
	|s|
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   184
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   185
	s := TokenizedStream on:'1.23 4.56 7 8 9 -5 5 -5.0 5.0'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   186
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   187
	    s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   188
	    Transcript showCR:(s tokenType displayString, ' value=' , s tokenValue printString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   189
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   190
									[exEnd]
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   191
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   192
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   193
    not allowing float numbers :
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   194
    (notice, how the floats is scanned)
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   195
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   196
	|s|
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   197
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   198
	s := TokenizedStream on:'1.23 4.56 7 8 9 -5 5 -5.0 5.0 '.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   199
	s allowFloatNumbers:false.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   200
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   201
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   202
	    s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   203
	    Transcript showCR:(s tokenType displayString , ' value= ' , s tokenValue printString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   204
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   205
									[exEnd]
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   206
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   207
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   208
    not allowing negative numbers :
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   209
    (notice, how the signs is scanned)
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   210
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   211
	|s|
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   212
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   213
	s := TokenizedStream on:'1.23 4.56 7 8 9 -5 5 -5.0 5.0'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   214
	s numbersAreSigned:false.
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   215
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   216
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   217
	    s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   218
	    Transcript showCR:(s tokenType displayString , ' value= ' , s tokenValue printString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   219
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   220
									[exEnd]
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   221
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   222
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   223
    no radix numbers (the default):
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   224
    (notice, how the integer is scanned)
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   225
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   226
	|s|
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   227
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   228
	s := TokenizedStream on:'1234 0x1234 16r1234'.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   229
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   230
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   231
	    s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   232
	    Transcript showCR:(s tokenType displayString , ' value= ' , s tokenValue printString , ' name=' , s tokenName displayString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   233
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   234
									[exEnd]
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   235
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   236
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   237
    C-style radix numbers:
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   238
    (notice, how the ST-style integer is scanned)
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   239
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   240
	|s|
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   241
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   242
	s := TokenizedStream on:'0x1234 16r1234'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   243
	s actionTable at:#digit put:[:s :char | s nextCNumber].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   244
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   245
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   246
	    s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   247
	    Transcript showCR:(s tokenType displayString , ' value= ' , s tokenValue printString , ' name=' , s tokenName displayString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   248
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   249
									[exEnd]
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   250
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   251
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   252
    smalltalk-style radix numbers:
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   253
    (notice, how the C-style integer is scanned)
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   254
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   255
	|s|
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   256
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   257
	s := TokenizedStream on:'0x1234 16r1234'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   258
	s actionTable at:#digit put:[:s :char | s nextSmalltalkNumber].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   259
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   260
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   261
	    s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   262
	    Transcript showCR:(s tokenType displayString , ' value= ' , s tokenValue printString , ' name=' , s tokenName displayString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   263
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   264
									[exEnd]
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   265
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   266
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   267
    scan the '/etc/services' file:
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   268
									[exBegin]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   269
	|s t service port protocol|
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   271
	s := TokenizedStream on:'/etc/services' asFilename readStream.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   272
	s eolCommentCharacter:$#.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   273
	s typeTable at:($- asciiValue) put:#letter.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   275
	[s atEnd] whileFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   276
	    t := s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   277
	    t == #Identifier ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   278
		service := s tokenName.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   279
		t := s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   280
		t == #Integer ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   281
		    port := s tokenValue.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   282
		    s next == $/ ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   283
			t := s next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   284
			t == #Identifier ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   285
			    protocol := s tokenName.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   286
			    Transcript showCR:('servive: ' , service , ' is ' , protocol , ' port=' , port printString).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   287
			]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   288
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   289
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   290
	    ].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   291
	    s skipToEol
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   292
	]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   293
									[exEnd]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
"
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
!TokenizedStream class methodsFor:'initialization'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   299
initialize
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   300
    DefaultActions := IdentityDictionary new.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
    DefaultTypes := Array new:256.
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
    "kludge: action is nextColonOrAssign, but type is special"
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
    2 to:255 do:[:code |
177
0008b1a608e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 176
diff changeset
   305
	DefaultTypes at:code put:(Character value:code).
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
    ].
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
    ($0 asciiValue) to:($9 asciiValue) do:[:index |
177
0008b1a608e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 176
diff changeset
   309
	DefaultTypes at:index put:#digit.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
    ].
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
    ($a asciiValue) to:($z asciiValue) do:[:index |
177
0008b1a608e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 176
diff changeset
   313
	DefaultTypes at:index put:#letter.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
    ].
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
    ($A asciiValue) to:($Z asciiValue) do:[:index |
177
0008b1a608e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 176
diff changeset
   316
	DefaultTypes at:index put:#letter.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    ].
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   319
    DefaultActions at:#letter put:[:s :char | s nextIdentifier].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   320
    DefaultActions at:#digit  put:[:s :char | s nextNumber].
177
0008b1a608e2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 176
diff changeset
   321
    DefaultActions at:$-  put:[:s :char | s nextSignedNumber].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   322
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
    "
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   324
     TokenizedStream initialize
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
    "
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   326
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   327
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
!TokenizedStream class methodsFor:'instance creation'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   330
new
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   331
    ^ self basicNew initialize
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   332
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   333
    "Modified: 11.1.1997 / 19:18:48 / cg"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   334
    "Created: 11.1.1997 / 19:22:40 / cg"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   335
!
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   336
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   337
on:aStream
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   338
    ^ self readingFrom:(aStream readStream)
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   339
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   340
    "Modified: 11.1.1997 / 19:23:49 / cg"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   341
!
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   342
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   343
readingFrom:aStream
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   344
    ^ self new inputStream:aStream
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   345
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   346
    "Created: 11.1.1997 / 19:18:58 / cg"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   347
    "Modified: 11.1.1997 / 19:23:17 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
!TokenizedStream methodsFor:'accessing'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   352
actionTable
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   353
    ^ actions
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   354
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   355
    "Created: 1.2.1996 / 17:42:00 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   358
allowFloatNumbers:aBoolean
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   359
    "if false, floating numbers are not read; a period is returned as
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   360
     a separate token. If true (the default), floating point numbers are allowed."
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   361
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   362
    allowFloatNumbers := aBoolean
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   363
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   364
    "Modified: 1.2.1996 / 18:14:27 / cg"
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   365
    "Created: 1.2.1996 / 18:27:41 / cg"
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   366
!
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   367
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   368
beginCommentCharacter:aCharacter
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   369
    beginCommentCharacter := aCharacter
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   370
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   371
    "Created: 1.2.1996 / 17:38:01 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   374
endCommentCharacter:aCharacter
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   375
    endCommentCharacter := aCharacter
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   376
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   377
    "Created: 1.2.1996 / 17:38:06 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   380
eolCommentCharacter:aCharacter
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   381
    eolCommentCharacter := aCharacter
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   383
    "Created: 1.2.1996 / 17:37:51 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   386
eolIsSignificant:aBoolean
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   387
    "if false, EOL is treated like whiteSpace (the default);
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   388
     Otherwise, a #EOL token is returned"
172
99b850002359 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 171
diff changeset
   389
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   390
    eolIsSignificant := aBoolean
172
99b850002359 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 171
diff changeset
   391
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   392
    "Created: 1.2.1996 / 17:37:51 / cg"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   393
    "Modified: 1.2.1996 / 18:14:27 / cg"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   394
!
172
99b850002359 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 171
diff changeset
   395
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   396
numbersAreSigned:aBoolean
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   397
    "if false, minus signs preceeding numbers are ignored.
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   398
     if true (the default) they are recognized"
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   399
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   400
    numbersAreSigned := aBoolean
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   401
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   402
    "Modified: 1.2.1996 / 18:14:27 / cg"
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   403
    "Created: 1.2.1996 / 18:56:34 / cg"
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   404
!
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   405
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   406
tokenName
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   407
    ^ tokenName
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   409
    "Created: 1.2.1996 / 17:46:48 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   412
tokenType
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   413
    ^ tokenType
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   414
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   415
    "Created: 1.2.1996 / 17:26:24 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   417
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   418
tokenValue
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   419
    ^ tokenValue
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   421
    "Created: 1.2.1996 / 17:26:30 / cg"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   422
!
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   423
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   424
typeTable
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   425
    ^ types
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   427
    "Created: 1.2.1996 / 17:41:54 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
!TokenizedStream methodsFor:'initialization'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
initialize
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
    tokenLineNr := 1.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   434
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
    eolCommentCharacter := beginCommentCharacter := endCommentCharacter := nil.
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
    eolCharacter := Character cr.
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
    eolIsSignificant := false.
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   438
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   439
    actions := DefaultActions shallowCopy.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   440
    types := DefaultTypes shallowCopy.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   441
    allowFloatNumbers := true.
176
500bf0f1a2ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
   442
    numbersAreSigned := true.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   444
    "Modified: 11.1.1997 / 19:25:49 / cg"
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   445
!
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   446
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   447
inputStream:aStream
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   448
    inputStream := aStream
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   449
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   450
    "Created: 11.1.1997 / 19:25:41 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   451
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   452
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
!TokenizedStream methodsFor:'private'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   455
on:aStream
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   456
    self initialize.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   458
    inputStream := aStream.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   459
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   460
    "Modified: 11.1.1997 / 19:22:10 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
!TokenizedStream methodsFor:'reading'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   465
next
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   466
    ^ self nextToken
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   468
    "Created: 1.2.1996 / 17:21:47 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   470
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   471
nextCNumber
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   472
    |nextChar value s|
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   473
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   474
    tokenRadix := 10.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   475
    inputStream peek == $0 ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   476
	inputStream next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   477
	inputStream peek == $x ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   478
	    inputStream next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   479
	    tokenRadix := 16.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   480
	] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   481
	    tokenRadix := 8
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   482
	]
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   483
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   484
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   485
    value := Integer readFrom:inputStream radix:tokenRadix.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   486
    nextChar := inputStream peek.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   487
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   488
    (allowFloatNumbers and:[tokenRadix == 10]) ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   489
	(nextChar == $.) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   490
	    nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   491
	    (nextChar notNil and:[nextChar isDigitRadix:tokenRadix]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   492
		value := value asFloat + (self nextMantissa:tokenRadix).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   493
		nextChar := inputStream peek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   494
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   495
		nextChar == (Character cr) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   496
		    tokenLineNr := tokenLineNr + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   497
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   498
		peekChar := $.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   499
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   500
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   501
	((nextChar == $e) or:[nextChar == $E]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   502
	    nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   503
	    (nextChar notNil and:[(nextChar isDigitRadix:tokenRadix) or:['+-' includes:nextChar]]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   504
		s := 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   505
		(nextChar == $+) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   506
		    nextChar := inputStream nextPeek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   507
		] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   508
		    (nextChar == $-) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   509
			nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   510
			s := s negated
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   511
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   512
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   513
		value := value asFloat
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   514
			 * (10.0 raisedToInteger:((Integer readFrom:inputStream radix:tokenRadix) * s))
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   515
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   516
	].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   517
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   518
    tokenValue := value.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   519
    (value isMemberOf:Float) ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   520
	tokenType := #Float
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   521
    ] ifFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   522
	tokenType := #Integer
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   523
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   524
    ^ tokenType
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   525
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   526
    "Created: 1.2.1996 / 18:26:27 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   527
    "Modified: 11.1.1997 / 19:24:19 / cg"
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   528
!
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   529
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   530
nextIdentifier
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   531
    |nextChar string oldString
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   532
     index "{ Class: SmallInteger }"
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   533
     max   "{ Class: SmallInteger }"
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   534
     t done|
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   535
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   536
    nextChar := inputStream peek.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   537
    string := String basicNew:20.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   538
    index := 0.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   539
    max := 10.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   540
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   541
    done := false.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   542
    [done] whileFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   543
	nextChar isNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   544
	    done := true
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   545
	] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   546
	    t := types at:(nextChar asciiValue).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   547
	    done := (t ~~ #letter and:[t ~~ #digit]).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   548
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   549
	done ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   550
	    (index == max) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   551
		oldString := string.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   552
		string := String basicNew:(max * 2).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   553
		string replaceFrom:1 to:max with:oldString.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   554
		max := max * 2
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   555
	    ].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   556
	    index := index + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   557
	    string at:index put:nextChar.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   558
	    nextChar := inputStream nextPeek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   559
	]
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   560
    ].
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   561
    tokenType := #Identifier.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   562
    tokenName := string copyTo:index.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   563
    ^ tokenType
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   564
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   565
    "Created: 1.2.1996 / 16:35:53 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   566
    "Modified: 11.1.1997 / 19:24:25 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   569
nextInteger
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   570
    tokenValue := Integer readFrom:inputStream radix:10.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   571
    tokenRadix := 10.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   572
    tokenType := #Integer.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   573
    ^ tokenType
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   575
    "Created: 1.2.1996 / 16:37:03 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   576
    "Modified: 11.1.1997 / 19:24:27 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   579
nextMantissa:radix
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   580
    |nextChar value factor|
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   581
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   582
    value := 0.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   583
    factor := 1.0 / radix.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   584
    nextChar := inputStream peek.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   585
    [(nextChar notNil and:[nextChar isDigitRadix:radix])] whileTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   586
	value := value + (nextChar digitValue * factor).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   587
	factor := factor / radix.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   588
	nextChar := inputStream nextPeek
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   589
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   590
    ^ value
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   591
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   592
    "Created: 1.2.1996 / 18:31:38 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   593
    "Modified: 11.1.1997 / 19:24:30 / cg"
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   594
!
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   595
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   596
nextNumber
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   597
    |nextChar value s|
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   598
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   599
    tokenRadix := 10.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   600
    value := Integer readFrom:inputStream radix:tokenRadix.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   601
    nextChar := inputStream peek.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   602
    allowFloatNumbers ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   603
	(nextChar == $.) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   604
	    nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   605
	    (nextChar notNil and:[nextChar isDigitRadix:tokenRadix]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   606
		value := value asFloat + (self nextMantissa:tokenRadix).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   607
		nextChar := inputStream peek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   608
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   609
		nextChar == (Character cr) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   610
		    tokenLineNr := tokenLineNr + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   611
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   612
		peekChar := $.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   613
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   614
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   615
	((nextChar == $e) or:[nextChar == $E]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   616
	    nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   617
	    (nextChar notNil and:[(nextChar isDigitRadix:tokenRadix) or:['+-' includes:nextChar]]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   618
		s := 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   619
		(nextChar == $+) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   620
		    nextChar := inputStream nextPeek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   621
		] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   622
		    (nextChar == $-) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   623
			nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   624
			s := s negated
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   625
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   626
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   627
		value := value asFloat
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   628
			 * (10.0 raisedToInteger:((Integer readFrom:inputStream radix:tokenRadix) * s))
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   629
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   630
	].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   631
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   632
    tokenValue := value.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   633
    (value isMemberOf:Float) ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   634
	tokenType := #Float
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   635
    ] ifFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   636
	tokenType := #Integer
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   637
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   638
    ^ tokenType
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   639
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   640
    "Created: 1.2.1996 / 18:31:03 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   641
    "Modified: 11.1.1997 / 19:24:34 / cg"
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   642
!
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   643
475
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   644
nextSignedNumber
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   645
    |next|
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   646
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   647
    inputStream next.
475
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   648
    numbersAreSigned ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   649
	next := inputStream peek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   650
	(next notNil and:[(types at:next asciiValue) == #digit]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   651
	    (actions at:#digit) value:self value:next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   652
	    tokenValue := tokenValue negated.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   653
	]
475
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   654
    ].
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   655
    ^ tokenType
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   656
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   657
    "Modified: 11.1.1997 / 19:24:40 / cg"
475
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   658
!
830e57ccd443 category change
Claus Gittinger <cg@exept.de>
parents: 351
diff changeset
   659
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   660
nextSmalltalkNumber
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   661
    |nextChar value s|
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   662
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   663
    tokenRadix := 10.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   664
    value := Integer readFrom:inputStream radix:tokenRadix.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   665
    nextChar := inputStream peek.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   666
    (nextChar == $r) ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   667
	tokenRadix := value.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   668
	inputStream next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   669
	s := 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   670
	inputStream peek == $- ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   671
	    inputStream next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   672
	    s := -1
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   673
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   674
	value := Integer readFrom:inputStream radix:tokenRadix.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   675
	value := value * s.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   676
	nextChar := inputStream peek
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   677
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   678
    allowFloatNumbers ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   679
	(nextChar == $.) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   680
	    nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   681
	    (nextChar notNil and:[nextChar isDigitRadix:tokenRadix]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   682
		value := value asFloat + (self nextMantissa:tokenRadix).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   683
		nextChar := inputStream peek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   684
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   685
		nextChar == (Character cr) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   686
		    tokenLineNr := tokenLineNr + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   687
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   688
		peekChar := $.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   689
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   690
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   691
	((nextChar == $e) or:[nextChar == $E]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   692
	    nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   693
	    (nextChar notNil and:[(nextChar isDigitRadix:tokenRadix) or:['+-' includes:nextChar]]) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   694
		s := 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   695
		(nextChar == $+) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   696
		    nextChar := inputStream nextPeek
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   697
		] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   698
		    (nextChar == $-) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   699
			nextChar := inputStream nextPeek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   700
			s := s negated
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   701
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   702
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   703
		value := value asFloat
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   704
			 * (10.0 raisedToInteger:((Integer readFrom:inputStream radix:tokenRadix) * s))
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   705
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   706
	].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   707
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   708
    tokenValue := value.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   709
    (value isMemberOf:Float) ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   710
	tokenType := #Float
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   711
    ] ifFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   712
	tokenType := #Integer
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   713
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   714
    ^ tokenType
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   715
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   716
    "Created: 1.2.1996 / 18:19:05 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   717
    "Modified: 11.1.1997 / 19:24:49 / cg"
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   718
!
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   719
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   720
nextString:separator
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   721
    |nextChar string pos
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   722
     index "{ Class: SmallInteger }"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   723
     len   "{ Class: SmallInteger }"
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   724
     inString|
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   725
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   726
    string := String basicNew:20.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   727
    len := 20.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   728
    index := 1.
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   729
    pos := inputStream position.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   730
    inputStream next.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   731
    nextChar := inputStream next.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   732
    inString := true.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   734
    [inString] whileTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   735
	nextChar isNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   736
	    self error:'unexpected end-of-input in String'.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   737
	    tokenType := #EOF.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   738
	    ^ tokenType
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   739
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   740
	(nextChar == Character cr) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   741
	    tokenLineNr := tokenLineNr + 1
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   742
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   743
	(nextChar == separator) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   744
	    (inputStream peek == separator) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   745
		inputStream next
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   746
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   747
		inString := false
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   748
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   749
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   750
	inString ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   751
	    string at:index put:nextChar.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   752
	    (index == len) ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   753
		string := string , (String new:len).
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   754
		len := len * 2
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   755
	    ].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   756
	    index := index + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   757
	    nextChar := inputStream next
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   758
	]
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   759
    ].
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   760
    tokenValue := string copyTo:(index - 1).
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   761
    tokenType := #String.
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   762
    ^ tokenType
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   763
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   764
    "Created: 1.2.1996 / 16:39:48 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   765
    "Modified: 11.1.1997 / 19:24:53 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   766
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   767
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   768
nextToken
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   769
    "return the next token from the inputStream-stream"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   770
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   771
    |skipping actionBlock|
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   772
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   773
    tokenValue := tokenName := nil.
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   774
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   775
    peekChar notNil ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   776
	hereChar := peekChar.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   777
	peekChar := peekChar2.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   778
	peekChar2 := nil
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   779
    ] ifFalse:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   780
	skipping := true.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   781
	[skipping] whileTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   782
	    outStream notNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   783
		[(hereChar := inputStream peek) == Character space] whileTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   784
		    inputStream next.
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   785
		    outStream space.
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   786
		    outCol := outCol + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   787
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   788
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   789
		hereChar := inputStream skipSeparatorsExceptCR.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   790
	    ].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   791
	    hereChar isNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   792
		tokenType := #EOF.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   793
		^ tokenType
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   794
	    ].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   795
	    hereChar == eolCharacter ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   796
		tokenLineNr := tokenLineNr + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   797
		inputStream next.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   798
		outStream notNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   799
		    outStream cr.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   800
		    outCol := 1
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   801
		].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   802
		eolIsSignificant ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   803
		    tokenType := #EOL.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   804
		    ^ tokenType
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   805
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   806
	    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   807
		hereChar == beginCommentCharacter ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   808
		    "start of a comment"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   809
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   810
		    self skipComment.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   811
		    hereChar := inputStream peek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   812
		] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   813
		    hereChar == eolCommentCharacter ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   814
			"start of an eol comment"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   816
			self skipEolComment.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   817
			hereChar := inputStream peek.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   818
		    ] ifFalse:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   819
			skipping := false
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   820
		    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   821
		]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   822
	    ]
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   823
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   824
	hereChar isNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   825
	    tokenType := #EOF.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   826
	    ^ tokenType
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   827
	]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   828
    ].
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   829
    tokenPosition := inputStream position.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   830
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   831
    types notNil ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   832
	tokenType := types at:(hereChar asciiValue).
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   833
    ].
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   834
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   835
    actions notNil ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   836
	actionBlock := actions at:tokenType ifAbsent:nil.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   837
	actionBlock notNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   838
	    ^ actionBlock value:self value:hereChar
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   839
	]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   840
    ].
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   841
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   842
    inputStream next.
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   843
    tokenType isNil ifTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   844
	tokenType := #Error.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   845
    ].
173
f8c6732b927c added radix numbers & floats
Claus Gittinger <cg@exept.de>
parents: 172
diff changeset
   846
    ^ tokenType
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   847
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   848
    "Modified: 11.1.1997 / 19:25:00 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   849
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   850
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   851
skipComment
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   852
    inputStream next.
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   853
    hereChar := inputStream peek.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   854
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   855
    [hereChar notNil and:[hereChar ~~ endCommentCharacter]] whileTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   856
	hereChar == eolCharacter ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   857
	    tokenLineNr := tokenLineNr + 1.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   858
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   859
	outStream notNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   860
	    outStream nextPut:hereChar.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   861
	    outCol := outCol + 1
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   862
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   863
	hereChar := inputStream nextPeek
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   864
    ].
174
64e81af0a50b allo negative numbers
Claus Gittinger <cg@exept.de>
parents: 173
diff changeset
   865
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   866
    "Created: 1.2.1996 / 17:35:24 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   867
    "Modified: 11.1.1997 / 19:25:02 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   868
!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   869
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   870
skipEolComment
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   871
    inputStream next.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   872
    self skipToEol
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   873
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   874
    "Created: 1.2.1996 / 17:34:17 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   875
    "Modified: 11.1.1997 / 19:25:04 / cg"
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   876
!
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   877
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   878
skipToEol
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   879
    hereChar := inputStream peek.
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   880
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   881
    [hereChar notNil and:[hereChar ~~ eolCharacter]] whileTrue:[
885
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   882
	outStream notNil ifTrue:[
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   883
	    outStream nextPut:hereChar.
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   884
	    outCol := outCol + 1
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   885
	].
c31412b26306 package-definitions fixed/updated
Claus Gittinger <cg@exept.de>
parents: 476
diff changeset
   886
	hereChar := inputStream nextPeek.
174
64e81af0a50b allo negative numbers
Claus Gittinger <cg@exept.de>
parents: 173
diff changeset
   887
    ].
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   888
    tokenLineNr := tokenLineNr + 1.
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   889
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   890
    "Created: 1.2.1996 / 18:06:09 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   891
    "Modified: 11.1.1997 / 19:25:07 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   892
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   893
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   894
!TokenizedStream methodsFor:'testing'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   895
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   896
atEnd
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   897
   ^ inputStream atEnd or:[tokenType == #Error or:[tokenType == #EOF]]
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   898
175
ec15c4883886 negative numbers - again
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   899
    "Created: 1.2.1996 / 17:21:28 / cg"
476
864d5c625292 category change & docu
Claus Gittinger <cg@exept.de>
parents: 475
diff changeset
   900
    "Modified: 11.1.1997 / 19:24:05 / cg"
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   901
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   902
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   903
!TokenizedStream class methodsFor:'documentation'!
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   904
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   905
version
2385
bc283bcaac72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 885
diff changeset
   906
    ^ '$Header: /cvs/stx/stx/libbasic2/TokenizedStream.st,v 1.12 2009-12-11 09:28:13 cg Exp $'
171
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   907
! !
ce00d8aab37c some more goodies
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   908
TokenizedStream initialize!