[BUG]Parser(Object)>>doesNotUnderstand: #bindTemp:in:

Damien Cassou cassou at iam.unibe.ch
Wed Jul 6 10:03:25 UTC 2005


I'm trying to extract temp variables from a method. I've found 
Parser>>parseArgsAndTemps:notifying: but it does not work.

| aMethod sourceString |
aMethod := String methodDict at: #alike: .
sourceString := aMethod   getSourceFromFile.
Parser new parseArgsAndTemps: sourceString notifying: nil.

The report follows.

Thank you



6 July 2005 11:55:09 am

VM: Mac OS - a SmalltalkImage
Image: Squeak3.8 [latest update: #6665]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir OSX:Users:damien:Desktop:Squeak:Squeak3.8-6665-basic
Trusted Dir OSX:Users:damien:Desktop:Squeak:Squeak3.8-6665-basic
Untrusted Dir foobar:tooBar:forSqueak:bogus

Parser(Object)>>doesNotUnderstand: #bindTemp:in:
	Receiver: a Parser
	Arguments and temporary variables: 
		aMessage: 	bindTemp: 'temp1' in: #complicatedFunction:param2:param3:
	Receiver's instance variables: 
		source: 	a ReadStream 'complicatedFunction: aParam1 param2: aParam2 param3: aPar...etc...
		mark: 	77
		hereChar: 	$|
		aheadChar: 	$

		token: 	'temp3'
		tokenType: 	#word
		currentComment: 	nil
		buffer: 	a WriteStream 'temp3'
		typeTable: 	#(#xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xB...etc...
		here: 	'temp2'
		hereType: 	#word
		hereMark: 	71
		hereEnd: 	75
		prevMark: 	65
		prevEnd: 	69
		encoder: 	a Parser
		requestor: 	nil
		parseNode: 	nil
		failBlock: 	[] in Parser>>initPattern:notifying:return: {[^ nil]}
		requestorOffset: 	0
		tempsMark: 	nil
		doitFlag: 	false

Parser>>temporariesIn:
	Receiver: a Parser
	Arguments and temporary variables: 
		methodSelector: 	#complicatedFunction:param2:param3:
		vars: 	an OrderedCollection()
		theActualText: 	nil
	Receiver's instance variables: 
		source: 	a ReadStream 'complicatedFunction: aParam1 param2: aParam2 param3: aPar...etc...
		mark: 	77
		hereChar: 	$|
		aheadChar: 	$

		token: 	'temp3'
		tokenType: 	#word
		currentComment: 	nil
		buffer: 	a WriteStream 'temp3'
		typeTable: 	#(#xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xB...etc...
		here: 	'temp2'
		hereType: 	#word
		hereMark: 	71
		hereEnd: 	75
		prevMark: 	65
		prevEnd: 	69
		encoder: 	a Parser
		requestor: 	nil
		parseNode: 	nil
		failBlock: 	[] in Parser>>initPattern:notifying:return: {[^ nil]}
		requestorOffset: 	0
		tempsMark: 	nil
		doitFlag: 	false

[] in Parser>>parseArgsAndTemps:notifying: {[:pattern | (pattern at: 2)   , (self     temporariesIn: (pattern at: 1))]}
	Arguments and temporary variables: 
		aString: 	a Text for 'complicatedFunction: aParam1 param2: aParam2 param3: aPara...etc...
		req: 	nil
		pattern: 	#(#complicatedFunction:param2:param3: an OrderedCollection('aParam1' '...etc...

Parser>>initPattern:notifying:return:
	Receiver: a Parser
	Arguments and temporary variables: 
		aString: 	a Text for 'complicatedFunction: aParam1 param2: aParam2 param3: aPara...etc...
		req: 	nil
		aBlock: 	[] in Parser>>parseArgsAndTemps:notifying: {[:pattern | (pattern at: 2)...etc...
		result: 	nil
	Receiver's instance variables: 
		source: 	a ReadStream 'complicatedFunction: aParam1 param2: aParam2 param3: aPar...etc...
		mark: 	77
		hereChar: 	$|
		aheadChar: 	$

		token: 	'temp3'
		tokenType: 	#word
		currentComment: 	nil
		buffer: 	a WriteStream 'temp3'
		typeTable: 	#(#xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xB...etc...
		here: 	'temp2'
		hereType: 	#word
		hereMark: 	71
		hereEnd: 	75
		prevMark: 	65
		prevEnd: 	69
		encoder: 	a Parser
		requestor: 	nil
		parseNode: 	nil
		failBlock: 	[] in Parser>>initPattern:notifying:return: {[^ nil]}
		requestorOffset: 	0
		tempsMark: 	nil
		doitFlag: 	false


--- The full stack ---
Parser(Object)>>doesNotUnderstand: #bindTemp:in:
Parser>>temporariesIn:
[] in Parser>>parseArgsAndTemps:notifying: {[:pattern | (pattern at: 2)   , (self     temporariesIn: (pattern at: 1))]}
Parser>>initPattern:notifying:return:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parser>>parseArgsAndTemps:notifying:
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection {[rcvr class evaluatorClass new   evaluate: self selectionAsStream   in: ctxt...]}
BlockContext>>on:do:
TextMorphForShoutEditor(ParagraphEditor)>>evaluateSelection
TextMorphForShoutEditor(ParagraphEditor)>>doIt
[] in TextMorphForShoutEditor(ParagraphEditor)>>doIt: {[self doIt]}
TextMorphForShoutEditor(Controller)>>terminateAndInitializeAround:
TextMorphForShoutEditor(ParagraphEditor)>>doIt:
TextMorphForShoutEditor(ParagraphEditor)>>dispatchOnCharacter:with:
TextMorphForShoutEditor(TextMorphEditor)>>dispatchOnCharacter:with:
TextMorphForShoutEditor(ParagraphEditor)>>readKeyboard
...etc...

-- 
Damien



More information about the Squeak-dev mailing list