Vorige                       Inhoud                      Volgende
_________________________________________________________________

SASL                    860409          (c) 1986 by ORD-GROUP  45


                              SASL

Inleiding
De programeertaal SASL is vrij nieuw en nog niet algemeen bekend.
Het is een functionele programmeertaal,  d.w.z. alles gaat aan de
hand van functies;  het begrip 'statement' bestaat niet. (Zie ook
de LISP documentatie.)

SASL  heeft  een aantal erg handige  eigenschappen.  Zo  kan  men
bijvoorbeeld  een  oneindig  lange lijst  definieren.  De  meeste
programmeertalen zouden eerst de lijst gaan uitrekenen en hem dan
printen, maar aangezien de lijst oneindig lang is zouden ze nooit
aan het printen toekomen.  SASL rekent alleen het eerste  element
uit,  print  dat  en gaat dan pas naar het tweede element van  de
lijst  kijken.  Dit principe strikt doorgevoerd staat bekend  als
'lazy evaluation'.

De  lazy evaluation samen met het functioneel programmeren  maken
SASL  tot een zeer krachtige taal.  Daarom hebben we besloten  om
SASL te implementeren.

Algemeen
Voor  onze  implementatie van SASL hebben wij gekozen om  zo  min
mogelijk willekeurige beperkingen te maken.  b.v.  Een getal  mag
een willekeurig geheel getal zijn zolang het maar in het geheugen
past.  Volgens  prognoses  zou het grootste getal dat  we  kunnen
representeren  ongeveer 50 000 cijfers hebben.  In  tegenstelling
tot  floating  point berekeningen rekenen wij in de  volle  nauw-
keurigheid  (fixed point).

Implementatie
Onze  implementatie  bestaat uit 2 delen.  Een compiler  vertaalt
SASL naar een tussencode die wij haakjescode noemen.  Een  inter-
preter leest deze haakjescode in en interpreteert deze. De inter-
preter  is inmiddels af en werkt naar behoren.  De compiler  moet
nog worden geschreven maar wij hebben een tijdelijke compiler  in
LISP  geschreven.  Deze  compiler accepteert invoer in een  LISP-
achtive notatie die veel op SASL lijkt. Het grootste verschil met
SASL is dat er veel haakjes nodig zijn.  Wij hebben deze compiler
gebruikt om de interpreter te testen.

De  interpreter  werkt  intern  met  behulp  van  combinatorische
logica  (het  is  een  SK-interpreter).  Om  de  werking  van  de
interpreter  te  kunnen begrijpen moeten wij eerst  wat  algemene
dingen behandelen.

SASL  heeft een aantal ingebouwde standaardfuncties.  Een  aantal
van deze standaardfuncties hebben maar een argument nodig.  Voor-
beelden zijn:
head, tail, abs etc.

De functies "head" en "tail" dienen ervoor om een lijst uiteen te
kunnen rafelen in zijn elementen.

'hd (1,2,3,4,5)'    is gelijk aan '1'
'tl (1,2,3,4,5)'    is gelijk aan '2,3,4,5'

_________________________________________________________________

Vorige                       Inhoud                      Volgende