Vorige Inhoud Volgende
_________________________________________________________________
SASL 860409 (c) 1986 by ORD-GROUP 50
Voor de duidelijkheid volgt hier nu het algoritme:
"Volg een pointer en merk alle cellen die bereikbaar zijn"
S1 omh:=nil;oml:=pointer om te volgen
S2 ALS oml niet naar een cel wijst of cel(oml) is al gemerkt DAN
ga naar S5
S3 ALS linkerpointer in cel(oml) bestaat DAN
temp:=linkerpointer(cel(oml))
;linkerpointer(cel(oml)):=omh
;omh:=oml met merkteken links
;oml:=temp
;ga naar S2
S4 temp:=rechterpointer(cel(oml))
;rechterpointer(cel(oml)):=omh
;omh:=oml met merkteken rechts
;oml:=temp
;ga naar S2
S5 ALS omh=nil DAN stop
;ALS merkteken omh=rechts DAN ga naar S6
;temp:=oml
;oml:=omh
;omh:=linkerpointer(cel(oml))
;linkerpointer(cel(oml)):=temp
;ga naar S4
S6 temp:=oml
;oml:=omh
;omh:=rechterpointer(cel(oml))
;rechterpointer(cel(oml)):=temp
;ga naar S5
In de praktijk is het algorithme nog iets moeilijker omdat er nog
wat uitzonderingsgevallen zijn. Nadat alle cellen op deze manier
zijn gemerkt worden ze op een hoop geveegd en alle pointers
worden omgelegd zodat ze naar de zelfde cel blijven wijzen. De
benodigde rekentijd voor het hele algoritme is evenredig met het
aantal cellen en het aantal pointers. Dit in tegenstelling tot
b.v. de garbage collectors die in veel BASIC interpreters worden
gebruikt. Hierbij is de rekentijd vaak evenredig met het kwadraat
van het aantal strings.
Conclusie
Al met al is de SASL interpreter zeker het moeilijkste programma
dat wij tot nu toe hebben geschreven. De totale lengte is niet zo
groot maar het vele gehutsel met pointers en cellen maakt de
machinecode erg moeilijk begrijpbaar, temeer daar er met 16 bits
waarden wordt gegeoocheld op een 8 bits machine.
De ervaringen die we hebben opgedaan tijdens het testen zijn zeer
positief. Programmeren in SASL is veel eenvoudiger dan in andere
programmeertalen. Omdat er nauwelijks restricties zijn (de enige
_________________________________________________________________
Vorige Inhoud Volgende