Listing 1 - 1 of 1 |
Sort by
|
Choose an application
Designers van programmeertalen die een taal willen voorzien van een typesysteem, dienen hiervoor twee artefacten op te stellen. Eerst en vooral moeten ze instaan voor de specificatie van het typesysteem. Daarnaast moeten ze een typechecker implementeren die gebruikt zal worden in de compiler van de programmeertaal. Het is lastig om beide artefacten aan te maken en te bestuderen maar vooral om er voor te zorgen dat ze op elkaar afgestemd blijven tijdens dit proces. Hierbij kunnen fouten en ongewenste eigenschappen geïntroduceerd worden. Het doel van deze thesis is om te onderzoeken hoe men automatisch van de specificatie van een typesysteem naar een typechecker kan gaan. Zo kan een programmeertaalde- signer zich focussen op het ontwerp van het typesysteem zelf, zal hij minder werklast ervaren en zal hij snel prototypes kunnen ontwikkelen van typesystemen. Om tot deze automatische vertaling te komen, zijn in dit werk twee typesystemen onderzocht: Simply Typed Lambda Calculus (STLC) en het typesysteem dat ge- bruikt wordt voor de decompilatie van MinX naar MinC. De typeringsregels van dit laatste typesysteem kunnen niet automatisch worden vertaald omdat ze een expliciete transitiviteitsregel bevatten. Daarom zijn de typeringsregels eerst manueel omgevormd naar andere regels die wel automatisch vertaald kunnen worden. De juistheid van deze manuele transformatie werd wiskundig bewezen. Vervolgens is een algoritme gedefinieerd om de typeringsregels van een typesysteem automatisch te ver- talen zodanig dat de transitiviteitsregel verwijderd wordt. Verder is een programma ontwikkeld dat gebruik maakt van dit algoritme om een automatische vertaling naar een typechecker te realiseren. Het algoritme is toegepast op enkele typesystemen en de resultaten hiervan zijn correct. Verder onderzoek is nodig om na te gaan of het algoritme op ieder typesysteem kan worden toegepast en om hiervan het bewijs te leveren. De resultaten van deze thesis openen alvast perspectieven om ontwikkelaars van programmeertalen in de toekomst een automatische tool aan te reiken die hen kan ondersteunen in hun opdracht.
Listing 1 - 1 of 1 |
Sort by
|