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