squeak allow space between '#" and '('
authorClaus Gittinger <cg@exept.de>
Tue, 20 Jul 2004 19:28:38 +0200
changeset 1538 c55990043eb6
parent 1537 de5fc45c2f10
child 1539 fd0b2792a8bd
squeak allow space between '#" and '(' in array literal.
Parser.st
--- a/Parser.st	Mon Jul 19 13:57:41 2004 +0200
+++ b/Parser.st	Tue Jul 20 19:28:38 2004 +0200
@@ -5380,8 +5380,8 @@
     ].
 
     (tokenType == #HashLeftParen) ifTrue:[
+        self nextToken.
         self inArrayLiteral:true.
-        self nextToken.
         ParseErrorSignal handle:[:ex |
             self inArrayLiteral:false.
             ^ #Error
@@ -5476,17 +5476,41 @@
         ^ self primary_simpleLiteral.
     ].
 
+    allowSqueakExtensions == true ifTrue:[
+        ((tokenType == #BinaryOperator) and:[token = '#']) ifTrue:[
+            self nextToken.
+            (tokenType == $( ) ifFalse:[
+                self parseError:'''('' expected after #.' position:pos to:tokenPosition.
+                ^ self.
+            ].
+            self nextToken.
+            self inArrayLiteral:true.
+            ParseErrorSignal handle:[:ex |
+                self inArrayLiteral:false.
+                ^ #Error
+            ] do:[
+                val := self array.
+            ].
+            self inArrayLiteral:false.
+            self nextToken.
+            (self noAssignmentAllowed:'assignment to a constant' at:pos) ifFalse:[
+                ^ #Error
+            ].
+            ^ ConstantNode type:#Array value:val
+        ].
+    ].
+
     ((tokenType == #BinaryOperator) and:[token = '-']) ifTrue:[
-        allowSqueakExtensions == true ifFalse:[
-            self parseError:'non-Standard Squeak extension: space between sign and number. Enable in settings.' position:pos to:tokenPosition.
-            errorFlag := false.
-        ].
         self nextToken.
         ((tokenType == #Integer) 
         or:[(tokenType == #Float)]) ifFalse:[
             self parseError:'number expected after sign.' position:pos to:tokenPosition.
             ^ self.
         ].
+        allowSqueakExtensions == true ifFalse:[
+            self parseError:'non-Standard Squeak extension: space between sign and number. Enable in settings.' position:pos to:tokenPosition.
+            errorFlag := false.
+        ].
 
         node := self primary_simpleLiteral.
         node isConstant ifFalse:[
@@ -7642,7 +7666,7 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.435 2004-07-19 11:57:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.436 2004-07-20 17:28:38 cg Exp $'
 ! !
 
 Parser initialize!