Scanner.st
changeset 1678 edd3a6b568c7
parent 1676 b8122adeb8a6
child 1679 c568383eb5ec
--- 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!