[FIX] Prolog & alternate syntax
Henrik Gedenryd
Henrik.Gedenryd at lucs.lu.se
Fri Jul 14 14:01:37 UTC 2000
The changes for the alternate syntax made Bolot's Prolog/V port not work any
longer. Adding the following method to LParser enables it to parse Prolog
again.
Henrik
'From Squeak2.9alpha of 8 July 2000 [latest update: #2447] on 14 July 2000
at 2:26:55 pm'!
!LParser methodsFor: 'Alternate syntax patches' stamp: 'hg 7/14/2000 14:21'!
method: doit context: ctxt encoder: encoderToUse
| sap blk prim messageComment methodNode |
encoder _ encoderToUse.
"need temporaries/statements in doits - to enable unbounds"
temporaries _ OrderedCollection new.
statements _ OrderedCollection new.
"may need to change (temporarily) for doits"
typeTable _ typeTable copy.
"check if it's a Prolog method definition"
((doit not and: [hereType == #word]) and: [tokenType ==
#leftParenthesis])
ifTrue:
[^self prologMethod: doit context: ctxt].
sap _ self pattern: doit inContext: ctxt.
"sap={selector, arguments, precedence}"
(sap at: 2) do: [:argNode | argNode isArg: true].
temporaries _ self temporaries asOrderedCollection.
messageComment _ currentComment.
currentComment _ nil.
prim _ doit ifTrue: [0] ifFalse: [self primitive].
self statements: #() innerBlock: doit.
parseNode statements: statements , parseNode statements.
blk _ parseNode.
doit ifTrue: [blk returnLast]
ifFalse: [blk returnSelfIfNoOther].
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: temporaries
block: blk
encoder: encoder
primitive: prim! !
More information about the Squeak-dev
mailing list
|