Codegenerator
Een codegenerator is een stuk software dat tot doel heeft bron-, markup- of objectcode aan te maken (te genereren) op basis van een abstracte beschrijving. Dit kan zowel een invoerbestand in een of ander formaat zijn, maar ook de interne representatie van een (deel van een) programma of bibliotheek in het werkgeheugen van een compiler. Deze techniek wordt veelal gebruikt om grote tabellen te genereren in talen zoals C of C++, maar vormt ook een vast onderdeel van compilers.
Broncode
Vooral grote tabellen, die intern zijn gestructureerd in bijvoorbeeld een boomstructuur, zijn erg foutgevoelig als deze door softwareontwikkelaars "met de hand" worden geïmplementeerd, niet alleen omdat het soms grote hoeveelheden gegevens betreft, maar ook omdat het, door repetitie van tamelijk nietszeggende symbolen, zeer saai werk is en fouten moeilijk op te sporen zijn. Om dit te voorkomen wordt de tabel in een handzaam en vooral leesbaar formaat geschreven waarna een codegenerator deze informatie omzet naar broncode. Omdat het grootste en foutgevoeligste deel is geautomatiseerd, treden veel minder fouten op. De codegenerator zelf is doorgaans in een functionele of macrotaal geïmplementeerd, bijvoorbeeld Python, Perl, sed of M4. Op deze manier kan veel tijd en frustratie worden bespaard.
Objectcode
Codegeneratoren zijn eveneens een vast onderdeel van compilers die tot taak hebben de uiteindelijke objectcode, maar soms ook (geannoteerde) assembly aan te maken uit een interne beschrijving van het programma of de bibliotheek. Als zodanig is codegeneratie de laatste stap van het compilatieproces. Door een compiler van verschillende codegeneratoren met een gemeenschappelijke interface te voorzien, kan objectcode voor verschillende processoren worden aangemaakt, zodat crosscompilatie mogelijk is. In dit verband spreekt men van een compiler back-end.
Voorbeelden
Een aantal bekende voorbeelden zijn:
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.