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