Parser.st
changeset 3470 02ca1f1e0b0a
parent 3468 e954edcad303
child 3471 14c908b44e12
--- a/Parser.st	Tue Jun 10 12:21:56 2014 +0200
+++ b/Parser.st	Tue Jun 10 12:43:25 2014 +0200
@@ -6407,7 +6407,9 @@
     "parse an array index expression; this is a squeak/stx extension.
      foo[x] is syntactic sugar for 'foo at:x'
      and foo[x] := expr is syntactic sugar for 'foo at:x put:expr';
-     with commas, foo[x , y] generates foo at:x at:y"
+     with commas, foo[x , y] generates foo at:x at:y.
+     This syntax extension must be enabled in the parserFlags as
+     allowArrayIndexSyntaxExtension (disabled by default)"
 
     |receiver argList selectorStream valNode|
 
@@ -6421,40 +6423,40 @@
     argList := OrderedCollection new.
 
     [
-	[
-	    |indexNode|
-
-	    self nextToken.
-	    indexNode := self expression.
-	    argList isEmpty ifTrue:[selectorStream nextPutAll:'_'].
-	    selectorStream nextPutAll:'at:'.
-	    argList add: indexNode.
-	    (tokenType == #BinaryOperator ) and:[ token = ',']
-	] whileTrue.
-
-	tokenType == $] ifFalse:[
-	    self parseError:''']'' expected'.
-	    ^ #Error
-	].
-	self nextToken.
-
-	tokenType == $[ ifTrue:[
-	    receiver := MessageNode
-		    receiver:receiver
-		    selector:(selectorStream contents)
-		    args:argList.
-	    selectorStream := WriteStream on: (String new: 32).
-	].
-	tokenType == $[
+        [
+            |indexNode|
+
+            self nextToken.
+            indexNode := self expression.
+            argList isEmpty ifTrue:[selectorStream nextPutAll:'_'].
+            selectorStream nextPutAll:'at:'.
+            argList add: indexNode.
+            (tokenType == #BinaryOperator ) and:[ token = ',']
+        ] whileTrue.
+
+        tokenType == $] ifFalse:[
+            self parseError:''']'' expected'.
+            ^ #Error
+        ].
+        self nextToken.
+
+        tokenType == $[ ifTrue:[
+            receiver := MessageNode
+                    receiver:receiver
+                    selector:(selectorStream contents)
+                    args:argList.
+            selectorStream := WriteStream on: (String new: 32).
+        ].
+        tokenType == $[
     ] whileTrue.
 
     tokenType == #':=' ifTrue:[
-	self nextToken.
-	selectorStream nextPutAll:'put:'.
-	valNode := self expression.
-	valNode == #Error ifTrue:[
-	    ^ valNode
-	].
+        self nextToken.
+        selectorStream nextPutAll:'put:'.
+        valNode := self expression.
+        valNode == #Error ifTrue:[
+            ^ valNode
+        ].
 "/ this was found in squeak - why make it a block ?
 "/        (valNode isKindOf: BlockNode) ifFalse:[
 "/                valNode _ BlockNode new
@@ -6463,13 +6465,13 @@
 "/                                        returns: false
 "/                                        from: encoder.
 "/        ].
-	argList add: valNode
+        argList add: valNode
     ].
 
     ^ MessageNode
-	    receiver:receiver
-	    selector:selectorStream contents
-	    args:argList.
+            receiver:receiver
+            selector:selectorStream contents
+            args:argList.
 
     "
      AllowArrayIndexSyntaxExtension := true.
@@ -6857,9 +6859,11 @@
 functionCallExpression
     "parse a functionCall;
      this is an st/x extension.
-	foo(x)
+        foo(x)
      is syntactic sugar for
-	foo value:x
+        foo value:x
+     This syntax extension must be enabled in the parserFlags as
+     allowFunctionCallSyntaxForBlockEvaluation (disabled by default)
     "
 
     |receiver numArgs argList evalSelectors evalSelector|
@@ -6871,11 +6875,11 @@
     (receiver == #Error) ifTrue:[^ #Error].
 
     receiver isVariable ifFalse:[
-	((receiver isMessage or:[receiver isAssignment]) and:[receiver parenthesized]) ifFalse:[
-	    receiver isBlock ifFalse:[
-		^ receiver
-	    ]
-	].
+        ((receiver isMessage or:[receiver isAssignment]) and:[receiver parenthesized]) ifFalse:[
+            receiver isBlock ifFalse:[
+                ^ receiver
+            ]
+        ].
     ].
 
     argList := self functionCallArgList.
@@ -6883,34 +6887,34 @@
     "/ make it a block evaluation
     numArgs := argList size.
     numArgs == 0 ifTrue:[
-	^ UnaryNode receiver:receiver selector:#value
+        ^ UnaryNode receiver:receiver selector:#value
     ].
     evalSelectors := #(#'value:'
-		       #'value:value:'
-		       #'value:value:value:'
-		       #'value:value:value:value:'
-		       #'value:value:value:value:value:'
-		       #'value:value:value:value:value:value:'
-		       #'value:value:value:value:value:value:value:'
-		       #'value:value:value:value:value:value:value:value:'
-		     ).
+                       #'value:value:'
+                       #'value:value:value:'
+                       #'value:value:value:value:'
+                       #'value:value:value:value:value:'
+                       #'value:value:value:value:value:value:'
+                       #'value:value:value:value:value:value:value:'
+                       #'value:value:value:value:value:value:value:value:'
+                     ).
 
     numArgs <= evalSelectors size ifTrue:[
-	evalSelector := evalSelectors at:numArgs.
-	^ (MessageNode
-		receiver:receiver
-		selector:evalSelector
-		args:argList)
-		startPosition: receiver startPosition
-		endPosition: tokenLastEndPosition.
+        evalSelector := evalSelectors at:numArgs.
+        ^ (MessageNode
+                receiver:receiver
+                selector:evalSelector
+                args:argList)
+                startPosition: receiver startPosition
+                endPosition: tokenLastEndPosition.
     ].
     "/ gen argument vector
     ^ (MessageNode
-	    receiver:receiver
-	    selector:#valueWithArguments:
-	    args:(self genMakeArrayWith:argList))
-	    startPosition: receiver startPosition
-	    endPosition: tokenLastEndPosition.
+            receiver:receiver
+            selector:#valueWithArguments:
+            args:(self genMakeArrayWith:argList))
+            startPosition: receiver startPosition
+            endPosition: tokenLastEndPosition.
     "
      Parser allowFunctionCallSyntaxForBlockEvaluation:true.
     "
@@ -11898,11 +11902,11 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.830 2014-06-06 14:03:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.831 2014-06-10 10:43:25 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.830 2014-06-06 14:03:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.831 2014-06-10 10:43:25 cg Exp $'
 !
 
 version_SVN