Technieuws

CWI-tool spoort dubbelzinnigheden in programmeertaal snel op

Pieter Edelman
Reading time: 1 minute

Tijdens zijn promotieonderzoek aan het CWI heeft Bas Basten een tool ontwikkeld om programmeertalen te controleren op constructies die dubbelzinnigheden toelaten. Dat komt van pas bij het ontwikkelen van nieuwe talen, bijvoorbeeld domeinspecifieke (DSL‘s). Basten verdedigt zijn proefschrift komende donderdag.

Een dubbelzinnigheid is als de compiler een constructie in de broncode op meerdere manieren kan uitleggen. Een bekend voorbeeld is de ’hangende else‘: in de constructie if x if y … else … is het onduidelijk of de else op de eerste of tweede conditie slaat. Een programmeertaal mag dit soort dubbelzinnigheden niet toestaan.

Om deze bugs op te sporen, zijn er twee aanpakken. De ene is om alle mogelijke zinnen in een taal te genereren en vervolgens te controleren of ze op meerdere manieren geïnterpreteerd kunnen worden. Dit is erg tijdrovend. De andere is om de grammatica te benaderen met een simpelere vorm die wel snel geanalyseerd kan worden. Dit kan echter valse positieven genereren. Bastens tool, Ambidexter genaamd, combineert beide aanpakken. Eerst wordt met de benadering alles weggefilterd dat zeker niet dubbelzinnig is. Vervolgens wordt op de rest een uitputtende controle gedaan. De analyse kan daarmee tot duizenden keren sneller verlopen dan voorheen.

This article is exclusively available to premium members of Bits&Chips. Already a premium member? Please log in. Not yet a premium member? Become one for just €20 for the first year and enjoy all the benefits.

Login

Related content