--- a/Scanner.st Fri Feb 17 15:40:02 2006 +0100
+++ b/Scanner.st Fri Feb 17 15:46:31 2006 +0100
@@ -2307,7 +2307,7 @@
"scan a number; handles radix prefix, mantissa and exponent.
Allows for e, d or q to be used as exponent limiter."
- |pos1 nextChar value integerPart s tokenRadix mantissaAndScaledPart d type exp|
+ |pos1 nextChar value integerPart s tokenRadix mantissaAndScaledPart d type exp scale|
tokenRadix := 10.
type := #Integer.
@@ -2390,14 +2390,19 @@
"/ ScaledDecimal numbers
('s' includes:nextChar) ifTrue:[
nextChar := source nextPeek.
+
+ (nextChar notNil and:[(nextChar isDigit)]) ifTrue:[
+ scale := (Integer readFrom:source).
+ ].
+
mantissaAndScaledPart isNil ifTrue:[
- value := value asFixedPoint:1
+ value := value asFixedPoint:(scale ? 0)
] ifFalse:[
d := 10 raisedTo:(mantissaAndScaledPart last).
value := FixedPoint
numerator:((integerPart * d) + mantissaAndScaledPart second)
denominator:d
- scale:(mantissaAndScaledPart last).
+ scale:(scale ? mantissaAndScaledPart last).
].
type := #FixedPoint.
self
@@ -3040,7 +3045,7 @@
!Scanner class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Scanner.st,v 1.212 2006-02-17 12:32:08 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Scanner.st,v 1.213 2006-02-17 14:46:31 cg Exp $'
! !
Scanner initialize!