Grammaire affixe (original) (raw)

Un article de Wikipédia, l'encyclopédie libre.

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Une grammaire affixe est une sorte de grammaire formelle utilisée pour décrire la syntaxe de langages, inspirée de la description des langues naturelles[1].

De fait, c'est une variante opérationnelle des grammaires de van Wijngaarden (2ème forme).

Les règles d'une grammaire affixe ressemblent à celles de grammaires non-contextuelles, dont les noms-de-notion (ou non-terminaux) seraient paramétrés. Ces paramètres appelés affixes permettent de doter ces notions de modalités. Leur nom s'inspire de la linguistique, où des modalités peuvent régir les affixes (préfixes, infixes ou suffixes).

Si un même affixe apparaît plusieurs fois dans une règle, sa valeur est présumée la même chaque fois.

Soit la grammaire non-contextuelle suivante :

Phrase → Sujet Prédicat "."

Sujet → Nom

Prédicat → Verbe Objet

Objet → Nom

Nom → Pierre | Marie

Nom → les parents | les enfants

Verbe → aime | aiment

Verbe → aide | aident

Cette grammaire décrit des phrases comme :

Avec plus de noms, plus de verbes, plus de concepts, plus de règles, de nombreuses phrases françaises peuvent être décrites, ce qui semble prometteur.

Cependant, ce genre de grammaire décrit aussi de nombreuses phrases comme :

alors que le français demande que sujet et verbe s'accordent en nombre.

Une grammaire affixe l'exprimera ainsi :

hyperrègles :

Phrase → Sujet+nombre Prédicat+nombre "."

Sujet+nombre → Nom+nombre

Prédicat+nombre → Verbe+nombre Objet

Objet → Nom+nombre

Nom+singulier → Pierre | Marie

Nom+pluriel → les parents | les enfants

Verbe+singulier → aide |aime

Verbe+pluriel → aident |aiment

métarègle :

nombre → singulier | pluriel.

En imposant dans sa première règle l'alignement en nombre du sujet et du prédicat (en fait, de son seul verbe), cette grammaire ne laisse que des phrases correctes, bien qu'on puisse dire que

devrait plutôt s'écrire

Cela pourrait aussi se traiter à l'aide d'affixes, selon les moyens dont on dispose pour définir les relations entre affixes.

Dans le cas le plus simple, les affixes ne peuvent prendre qu'un nombre fini de valeurs, et ces valeurs ne peuvent être qu'égales ou différentes. Dans ce cas, les affixes rendent les grammaires non-contextuelle plus compactes, sans augmenter leur puissance (classe 2 de N. Chomsky).

On peut aussi permettre aux affixes de prendre comme valeurs des chaines arbitraires, et d'en permettre la concaténation, les valeurs admissibles pour les affixes étant fixées par une grammaire non-contextuelle distincte, dite grammaires des affixes. On parle alors de grammaires à 2 niveaux ou grammaires vW2. Ce type de grammaire a été utilisé dans les rapports de définition du langage de programmation Algol 68[2].

Les règles définissant les notions sont alors dites règles de notion ou hyperrègles : ce sont des règles génériques.

Les règles définissant les affixes, ou règles d'affixes jouent le rôle de métarègles : elles organisent les affixes ou modalités, en esquissant une théorie du langage décrit.

Ainsi, pour l'exemple ci-dessus on prendrait :

nombre : singulier | pluriel

Étendre une règle d'affixe multiplie les possibilités, par exemple avec :

nombre : singulier | duel | pluriel

mode : indicatif | conditionnel | subjonctif | impératif | participe |infinitif

M. Sintzoff[3] et C.H.A. Koster ont montré qu'alors grammaires vW2 et grammaires affixes permettent de décrire des langages de classe 0. Bien que cela laisse de nombreuses questions indécidables, Cleaveland et Uzgalis ont montré la puissance concrète de ces formalismes pour les langages de programmation, dont ils peuvent décrire la syntaxe, la sémantique statique (contrôle de cohérence) et la sémantique dynamique[4].

Les grammaires affixes étendues (EAG) et les grammaires affixes à valeur dans un treillis fini (AGFL) sont des variantes destinées à trouver le meilleur compromis entre :

Au-delà de la formalisation de langages ou de langues, l'adaptation des grammaires affixes en vue d'une programmation grammaticale, base de nombreux outils, repose sur 3 points :

Elle s'est d'abord développée selon deux points de vue :

L'évolution du domaine a favorisé des représentations moins problématiques :

L'orientation des passages de paramètres crée d'autres variantes : elle peut être :

La mise en œuvre de ces idées ont donné :

D'abord conçus pour faciliter la construction de compilateurs[9], ces langages et leurs environnements ont mené à d'autres applications comme l'édition de textes, l'analyse automatique de dépêches AFP, la classification automatique de documents[10], et, dans un genre différent, la conception interactive de divers langages ad hoc, par le maquettage/prototypage évolutif de leurs compilateurs.

Bien que ce formalisme soit en principe proche des grammaires d'attributs, des grammaires de métamorphose[11] ou des DCG[12], la distinction entre notion nécessaire et notion possible, et le fait que les affixes sont toujours typés et souvent modés, facilitent grandement la détection d'erreurs et d'incohérences dans les grosses applications.

  1. déjà abordée par C.H.A Koster dans : C.H.A. Koster & L. Meertens. Basic English, a Generative Grammar for a Part of English. Technical Report, Euratom Seminar Machine en Talen, Univ. of Amsterdam, 1962.
  2. van Wijngaarden, Mailloux, Peck, Koster, Sintzoff, Lambert, Meertens, Fisker: Revised Report on the Algorithmic Language ALGOL 68, 1975, Acta Informatica, 5: 1-236
  3. Sintzoff, M., 1967, Existence of van Wijngaarden syntax for every recursively enumerable set, Annales de la Société Scientifique de Bruxelles 2, 115-118
  4. Cleveland & Uzgalis "Grammars for Programming Languages", 1977, Computer Science Library, Elsevier .
  5. voir C.H.A. Koster, 1991, Affix grammars for natural languages in: Attribute Grammars
  6. corroboré par Cleveland & Uzgalis, op. cit.
  7. on en minimise le nombre car si elles sont nécessaires, elles sont aussi un point faible du contrôle de cohérence.
  8. Beney J., Présentation du langage STARLET/GL, 1989 rev. 2001
  9. tels qu'un compilateur PL1/C pour Control Data France: Maranzana M., Martin J.F., Frécon L., 1990, Un Traducteur de PL1/Multics vers C/VE, TSI, vol.9, no 5, p. 399-42. (source : 24 000 lignes LET ; compilateur produit : 94 000 lignes C non documentées).
  10. travaux engagés pour l'anglais, le néerlandais, le latin, le français, le russe et l'arabe
  11. Colmerauer A., 1975, Les grammaires de métamorphose, Groupe Intelligence Artificielle, Faculté des Sciences de Luminy, Université Aix-Marseille II
  12. Pereira F., Warren D., 1980, Definite Clause Grammars for Language Analysis - A Survey of the Formalism and a Comparison with Augmented Transition Networks. Artificial Intelligence no 13, p. 231-278