--- a/CascadeNode.st Wed Apr 20 12:15:34 2005 +0200
+++ b/CascadeNode.st Wed Apr 20 16:41:54 2005 +0200
@@ -133,49 +133,27 @@
!CascadeNode methodsFor:'printing & storing'!
-printOn:aStream indent:i
- |needParen selectorParts index index2 arg nargs|
+printOn:aStream indent:i
+ |selectorParts|
- index := 1.
- selectorParts := OrderedCollection new.
- [index == 0] whileFalse:[
- index2 := selector indexOf:$: startingAt:index.
- index2 ~~ 0 ifTrue:[
- selectorParts add:(selector copyFrom:index to:index2).
- index2 := index2 + 1
- ].
- index := index2
- ].
-
+ selectorParts := selector asCollectionOfSubstringsSeparatedBy:$:.
receiver printOn:aStream indent:i.
aStream nextPutAll:'; '.
-
- nargs := argArray size.
- nargs == 0 ifTrue:[
- selector printOn:aStream
+ argArray size == 0 ifTrue:[
+ selector printOn:aStream
] ifFalse:[
- 1 to:nargs do:[:argIndex |
- aStream space.
- (selectorParts at:argIndex) printOn:aStream.
- aStream space.
- arg := argArray at:argIndex.
- needParen := false.
- arg isMessage ifTrue:[
- arg isBinaryMessage ifFalse:[
- arg isUnaryMessage ifFalse:[
- needParen := true
- ]
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- arg printOn:aStream indent:i.
- needParen ifTrue:[
- aStream nextPutAll:') '
- ].
- ]
+ argArray
+ with:selectorParts
+ do:[:arg :selPart |
+ aStream
+ space;
+ nextPutAll:selPart;
+ nextPutAll:': '.
+ arg printOn:aStream indent:i + 4 parenthized:(arg precedence <= self precedence).
+ ]
]
+
+ "Modified: / 20-04-2005 / 14:35:39 / cg"
! !
!CascadeNode methodsFor:'queries'!
@@ -189,5 +167,5 @@
!CascadeNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/CascadeNode.st,v 1.26 2004-03-19 13:25:46 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/CascadeNode.st,v 1.27 2005-04-20 14:41:24 cg Exp $'
! !
--- a/MessageNode.st Wed Apr 20 12:15:34 2005 +0200
+++ b/MessageNode.st Wed Apr 20 16:41:54 2005 +0200
@@ -2823,91 +2823,39 @@
!MessageNode methodsFor:'printing & storing'!
-printOn:aStream indent:i
- |needParen selectorParts index index2 arg|
-
- (#(whileTrue: whileFalse:) includes:selector) ifTrue:[
+printOn:aStream indent:i
+ |selectorParts|
+
+ (#( whileTrue: whileFalse: ) includes:selector) ifTrue:[
receiver isBlock ifTrue:[
^ self printWhileOn:aStream indent:i
].
].
-
- index := 1.
- selectorParts := OrderedCollection new.
- [index == 0] whileFalse:[
- index2 := selector indexOf:$: startingAt:index.
- index2 ~~ 0 ifTrue:[
- selectorParts add:(selector copyFrom:index to:index2).
- index2 := index2 + 1
- ].
- index := index2
- ].
-
- needParen := false.
- receiver isMessage ifTrue:[
- receiver isUnaryMessage ifFalse:[
- receiver isBinaryMessage ifFalse:[
- needParen := true
- ].
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- receiver printOn:aStream indent:i.
- needParen ifTrue:[
- aStream nextPutAll:')'
- ].
-
- 1 to:(argArray size) do:[:argIndex |
- aStream cr.
- aStream spaces:i+4.
- (selectorParts at:argIndex) printOn:aStream.
-"/ aStream space.
- arg := argArray at:argIndex.
- needParen := false.
- arg isMessage ifTrue:[
- arg isBinaryMessage ifFalse:[
- arg isUnaryMessage ifFalse:[
- needParen := true
- ]
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- arg printOn:aStream indent:i+4.
- needParen ifTrue:[
- aStream nextPutAll:') '
- ].
- ]
+ selectorParts := selector asCollectionOfSubstringsSeparatedBy:$:.
+ receiver printOn:aStream indent:i parenthized:(receiver precedence <= self precedence).
+ argArray with:selectorParts
+ do:[:arg :selPart |
+ aStream
+ cr;
+ spaces:i + 4;
+ nextPutAll:(selPart , ':').
+ arg printOn:aStream indent:i + 4 parenthized:(arg precedence <= self precedence).
+ ]
+
+ "Modified: / 20-04-2005 / 14:29:16 / cg"
!
printWhileOn:aStream indent:i
- |needParen arg|
-
"special handling of whileTrue/whileFalse"
+ |arg|
+
aStream nextPutAll:'['.
receiver statements printOn:aStream indent:i.
- aStream nextPutAll:'] whileTrue: '.
+ aStream nextPutAll:'] ',selector,' '.
arg := argArray at:1.
- needParen := false.
- arg isMessage ifTrue:[
- arg isBinaryMessage ifFalse:[
- arg isUnaryMessage ifFalse:[
- needParen := true
- ]
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- arg printOn:aStream indent:i.
- needParen ifTrue:[
- aStream nextPutAll:') '
- ].
+ arg printOn:aStream indent:i parenthized:(arg precedence <= self precedence).
! !
!MessageNode methodsFor:'queries'!
@@ -2944,6 +2892,12 @@
^ argArray size
!
+precedence
+ ^ 10
+
+ "Created: / 20-04-2005 / 14:10:59 / cg"
+!
+
realReceiver
receiver isCascade ifTrue:[
^ receiver realReceiver
@@ -2960,5 +2914,5 @@
!MessageNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.143 2005-04-20 10:15:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.144 2005-04-20 14:40:39 cg Exp $'
! !
--- a/ParseNode.st Wed Apr 20 12:15:34 2005 +0200
+++ b/ParseNode.st Wed Apr 20 16:41:54 2005 +0200
@@ -172,6 +172,27 @@
self printOn:aStream indent:0
!
+printOn:aStream indent:indent
+ "append a user printed representation of the receiver to aStream.
+ The format is suitable for a human - not meant to be read back."
+
+ self subclassResponsibility
+
+ "Created: / 20-04-2005 / 14:21:46 / cg"
+!
+
+printOn:aStream indent:indent parenthized:parenthized
+ parenthized ifTrue:[
+ aStream nextPutAll:'('
+ ].
+ self printOn:aStream indent:indent.
+ parenthized ifTrue:[
+ aStream nextPutAll:')'
+ ].
+
+ "Created: / 20-04-2005 / 14:21:28 / cg"
+!
+
printString
|stream|
@@ -305,10 +326,14 @@
^ false
"Created: 14.4.1996 / 00:46:44 / cg"
+!
+
+precedence
+ ^ 9999
! !
!ParseNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/ParseNode.st,v 1.38 2004-07-07 09:17:55 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/ParseNode.st,v 1.39 2005-04-20 14:41:54 cg Exp $'
! !