Le système SYNTAX
Pierre BOULLIER
Projet Oscar
Le système SYNTAX est un ensemble d'outils dont le but principal est de
faciliter la conception et la réalisation de la partie frontale de traducteurs,
principalement (mais non exclusivement) en compilation. Ces outils
permettent d'une part de produire des analyseurs (lexicographique,
syntaxique et sémantique) et d'autre part de traiter des textes source avec ces
analyseurs.
Les buts de SYNTAX sont donc analogue à ceux visés par LEX et YACC.
Cependant SYNTAX est plus puissant, en particulier si l'on considère le
traitement des erreurs. Il possède un mécanisme automatique (bien
qu'ajustable) de correction et de récupération d'erreurs. De plus, aux
traitements de la sémantique qui lui sont propres (actions, arbres abstraits,
...), on peut substituer des formes plus élaborées telles que le système de
grammaires attribuées FNC-2 .
Les principaux modules de SYNTAX sont :
- BNF : prend en entrée une grammaire non-contextuelle et
produit une forme intermédiaire utilisée par les autres modules. Des prédicats
agissant sur le processus d'analyse peuvent être spécifiés. Ils permettent de
définir des langages non-ambigus qui peuvent être non-déterministes ou même contextuels.
- CSYNT : vérifie que la grammaire syntaxique d'entrée est du type
LALR(1). Les conflits éventuels peuvent être résolus soit par l'utilisateur
via une spécification traitée par le module PRIO, soit par le système lui-même.
- LECL : est le constructeur d'analyseur lexicographique de SYNTAX. Son
entrée est une spécification lexicale sous forme d'expressions régulières. Des
prédicats (utilisateur ou prédéfinis) où un nombre non borné de caractères de
prévision peuvent être utilisés si nécessaire.
- RECOR : prend en entrée la spécification du traitement des erreurs
lexicographiques et syntaxiques. Une entrée standard est disponible.
- TABLES-C : rassemble les sorties des modules précédents et produit
un programme en C qui doit être lié avec la librairie d'exécution de SYNTAX.
Web page maintained by Didier
Parigot
Wed Feb 25 17:05:04 MET 1998