ParsergeneratorEen parsergenerator, ook wel compiler compiler genoemd, is een programma dat helpt bij het implementeren van een compiler (of interpreter). Op basis van een specificatie van een formele grammatica (vaak in BNF of EBNF) creƫert een parsergenerator een complete parser voor de gespecificeerde grammatica. Daarnaast bieden veel parsergenerators ook de mogelijkheid om, behalve een parser, nog andere functionaliteit te genereren die gebruikt wordt in compilers. Denk hierbij bijvoorbeeld aan een lexer of een vertaler die een concrete syntaxisboom naar een abstracte syntaxisboom vertaald. EigenschappenHoewel de werking en de functionaliteit van parsergenerators onderling enorm kan verschillen, hebben ze allemaal een aantal eigenschappen gemeen:
ActiesIn het algemeen zijn parsergenerators onder te verdelen in twee soorten: generators die zogenaamde acties in de specificatie toestaan en generators waarbij dat niet toegestaan is. Acties zijn fragmenten programmacode die aan een bepaalde productieregel gekoppeld worden. Als de parser een productieregel gebruikt om een fragment van de invoer te herkennen, wordt de gespecificeerde programmacode uitgevoerd. Als een parsergenerator acties ondersteunt is het mogelijk om extra functionaliteit (bijvoorbeeld het bouwen van een syntaxisboom, typechecking of zelfs codegeneratie) in de specificatie op te nemen. Enkele parsergeneratorsIn de onderstaande tabel worden enkele van de meer bekende parsergenerators vergeleken:
Zie ook |