[Pkg] The Trunk: Compiler-nice.128.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Feb 25 23:23:34 UTC 2010
Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-nice.128.mcz
==================== Summary ====================
Name: Compiler-nice.128
Author: nice
Time: 26 February 2010, 12:23:36.467 am
UUID: d8c8b1f6-f75a-554d-9277-cb68ee0202f7
Ancestors: Compiler-nice.127
1) Cuis 2.2 ParserSmallFix
2) simplification method:context:encoder: replaced by method:context:
=============== Diff against Compiler-nice.127 ===============
Item was changed:
----- Method: Parser>>method:context:encoder: (in category 'expression types') -----
method: doit context: ctxt encoder: encoderToUse
" pattern [ | temporaries ] block => MethodNode."
- | sap blk prim temps messageComment methodNode |
encoder := encoderToUse.
+ ^self method: doit context: ctxt!
- sap := self pattern: doit inContext: ctxt.
- "sap={selector, arguments, precedence}"
- self properties selector: (sap at: 1).
- encoder selector: (sap at: 1).
- (sap at: 2) do: [:argNode | argNode beMethodArg].
- doit ifFalse: [self pragmaSequence].
- temps := self temporaries.
- messageComment := currentComment.
- currentComment := nil.
- doit ifFalse: [self pragmaSequence].
- prim := self pragmaPrimitives.
- self statements: #() innerBlock: doit.
- blk := parseNode.
- doit ifTrue: [blk returnLast]
- ifFalse: [blk returnSelfIfNoOther: encoder].
- hereType == #doIt ifFalse: [^self expected: 'Nothing more'].
- self interactive ifTrue: [self removeUnusedTemps].
- methodNode := self newMethodNode comment: messageComment.
- ^methodNode
- selector: (sap at: 1)
- arguments: (sap at: 2)
- precedence: (sap at: 3)
- temporaries: temps
- block: blk
- encoder: encoder
- primitive: prim
- properties: properties!
Item was added:
+ ----- Method: Parser>>method:context: (in category 'expression types') -----
+ method: doit context: ctxt
+ " pattern [ | temporaries ] block => MethodNode."
+
+ | sap blk prim temps messageComment methodNode |
+ sap := self pattern: doit inContext: ctxt.
+ "sap={selector, arguments, precedence}"
+ self properties selector: (sap at: 1).
+ encoder selector: (sap at: 1).
+ (sap at: 2) do: [:argNode | argNode beMethodArg].
+ doit ifFalse: [self pragmaSequence].
+ temps := self temporaries.
+ messageComment := currentComment.
+ currentComment := nil.
+ doit ifFalse: [self pragmaSequence].
+ prim := self pragmaPrimitives.
+ self statements: #() innerBlock: doit.
+ blk := parseNode.
+ doit ifTrue: [blk returnLast]
+ ifFalse: [blk returnSelfIfNoOther: encoder].
+ hereType == #doIt ifFalse: [^self expected: 'Nothing more'].
+ self interactive ifTrue: [self removeUnusedTemps].
+ methodNode := self newMethodNode comment: messageComment.
+ ^methodNode
+ selector: (sap at: 1)
+ arguments: (sap at: 2)
+ precedence: (sap at: 3)
+ temporaries: temps
+ block: blk
+ encoder: encoder
+ primitive: prim
+ properties: properties!
Item was changed:
----- Method: Parser>>fail (in category 'error handling') -----
fail
| exitBlock |
+ (encoder == nil or: [encoder == self])
- encoder == nil
ifFalse: [encoder release. encoder := nil]. "break cycle"
exitBlock := failBlock.
failBlock := nil.
^exitBlock value!
Item was changed:
----- Method: Parser>>parse:class:category:noPattern:context:notifying:ifFail: (in category 'public access') -----
parse: sourceStream class: class category: aCategory noPattern: noPattern context: ctxt notifying: req ifFail: aBlock
"Answer a MethodNode for the argument, sourceStream, that is the root of
a parse tree. Parsing is done with respect to the argument, class, to find
instance, class, and pool variables; and with respect to the argument,
ctxt, to find temporary variables. Errors in parsing are reported to the
argument, req, if not nil; otherwise aBlock is evaluated. The argument
noPattern is a Boolean that is true if the the sourceStream does not
contain a method header (i.e., for DoIts)."
| methNode repeatNeeded myStream s p |
category := aCategory.
myStream := sourceStream.
[repeatNeeded := false.
p := myStream position.
s := myStream upToEnd.
myStream position: p.
self encoder init: class context: ctxt notifying: self.
self init: myStream notifying: req failBlock: [^ aBlock value].
doitFlag := noPattern.
failBlock:= aBlock.
[methNode := self
method: noPattern
+ context: ctxt]
- context: ctxt
- encoder: self encoder]
on: ReparseAfterSourceEditing
do: [ :ex |
repeatNeeded := true.
myStream := ReadStream on: requestor text string].
repeatNeeded] whileTrue:
[encoder := self encoder class new].
methNode sourceText: s.
^methNode
!
More information about the Packages
mailing list