Qu'est-ce que mppksag ?
- C'est un générateur d'analyseur syntaxique à usages multiples
- Il prend en entrée une Grammaire, et il produit un Source C correspondant.
mppksag est inspiré de l'outil Meta du Système Pick :
- Meta permettait de générer un analyseur syntaxique sous forme d'un PCode qui était interprété par la machine virtuelle Pick.
- mppksag permet de générer le Source C d'un analyseur syntaxique à partir d'une grammaire écrite sous forme d'une BNF.
- La grammaire de mppksag est un sur-ensemble de celle de Meta.
Spécificités (et restrictions) de mppksag :
- Le programme prends en compte les grammaires ambiguës, et gère automatiquement les rollbacks, à la fois sur le source et sur le code généré.
- Il ne fonctionne que sur une grammaire correcte (pas de gestion d'erreurs).
- Pour rendre un peu plus lisible le source C généré, je conseille d'utiliser un formateur automatique. Plein de goto sembleront inutiles dans ce code généré, mais c'est de la génération automatique, qui doit marcher quelle que soit la complexité de la grammaire. ça donne juste un peu de boulôt à l'optimiseur du C. ;o)
- De nos jours, il existe des équivalents (Lex et Yacc par exemple) dont les sources font partie du domaine public, et qui produisent un code beaucoup plus rapide (analyse ascendante plutôt que descendante: c'est une remarque pour les spécialistes). Par contre, ils ont besoin pour fonctionner, d'une grammaire non ambiguë (pour les spécialistes toujours: ll1 ou ll2), alors que celui que je propose permet d'analyser du code correspondant à une grammaire beaucoup plus ambiguë (pour les spécialistes: llk, avec k quelconque).
|