Opinie

Begrijpt u wat ik bedoel?

Albert Mietus
Leestijd: 4 minuten

De meest gebruikte compiler, ook in de embedded-wereld, is waarschijnlijk GCC. We hebben zo‘n compiler nodig om C te vertalen naar machinetaal en daar is GCC goed in. Deze opensource code kent diverse releases en wordt goed onderhouden. Maar de software stamt toch al weer uit de jaren tachtig en dat is te merken. Niet als we GCC gebruiken als compiler, maar wel als we kijken naar de architectuur.

Een compiler bestaat uit diverse onderdelen zoals de preprocessor, de lexer en de parser. Dat zijn de onderdelen die de code lezen en als taal begrijpen: wat zijn variabelen en wat zijn functies? Maar ook: hoeveel argumenten heeft elke functie en wat is de scope van elke variabele? Ook de moderne editor wil dat begrijpen, om de programmeur bij te staan met syntax highlighting, automatische aanvullingen en refactoring.

Het lijkt logisch dat je editor en de compiler exact hetzelfde naar de code moeten kijken. Bijvoorbeeld om te voorkomen dat ze net een ander C-dialect gebruiken. Zo begrijpt een moderne C-compiler ook complexe getallen, inclusief een i-suffix voor het imaginaire deel. Maar herkent je editor dat ook? Er zijn meer verschillen in de praktijk, al is het maar door een andere parserimplementatie. Je zou dus willen dat je editor de parser van je compiler (her)gebruikt.

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 and enjoy all the benefits.

Login

Related content