Télécharger la présentation
Publié parBriant Dumortier Modifié depuis plus de 10 années
1
Paradigmes des Langages de Programmation
Description Syntaxique des Langages
2
Pourquoi Décrire les Langages de Programmation? Et Comment?
Les langages de programmation sont implémentés et utilisés par un grand nombre de personnes. Ils doivent donc être compris par toutes ces personnes, avant même qu’ils n’existent ou qu’ils soient utilisés. La clarté et la précision de la description sont très intimement liés au succès d’un nouveau langage. La description d’un langage se divise en deux parties: description syntaxique et description sémantique. La syntaxe correspond à la description de la forme des expressions, instructions et unités de programmes. La sémantique correspond a leur signification. La syntaxe est plus facile à décrire que la sémantique.
3
La Description Syntaxique: Définitions
Les langages sont des chaînes de caractères provenant d’un alphabet. Chaque chaîne représente une phrase. Il existe de petites unités syntaxiques appelées des lexèmes. Les tokens d’un langage représentent des catégories de lexèmes. Certains tokens ne représentent qu’un seul lexème, mais d’autres en représentent plusieurs. Les langages peuvent être décrits de deux façons distinctes: reconnaissance ou génération.
4
Reconnaisseur de Langages
Étant donné un langage L qui utilise l’alphabet , on peut construire un mécanisme de reconnaissance R capable de reconnaître les chaînes de caractères de l’alphabet . R doit indiquer si une chaîne qui lui est donnée appartient ou non au langage. En d’autre termes, il va accepter ou rejeter cette chaîne. De façon pratique, dans un compilateur, l’analyse syntaxique est faite par un système de reconnaissance.
5
Générateur de Languages
Un générateur de langage génère des phrases d’un langage. De façon pratique, un générateur peut sembler peu utile en tant que descripteur de langage, mais en fait, il est très utile car il permet une description facile à lire et à comprendre. En fait, un générateur est beaucoup plus utile qu’un reconnaisseur quant à la description du langage.
6
Méthodes Formelles de Description Syntaxique: Généralités
Les mécanismes formels de génération de langage s’appellent des grammaires. Les grammaires les plus utiles pour les langages de programmation sont les grammaires hors contexte (context-free) La notation utilisée pour spécifier de telles grammaires s’appelle la forme Backus-Naur (BNF). BNF est une forme très naturelle de description syntaxique.
7
Méthodes Formelles de Description Syntaxique: Fondations
Un métalangage est un langage destiné à décrire d’autres langages. BNF est un métalangage pour les langages de programmation. BNF définit les structures syntaxiques du langage en utilisant des règles (ou productions). La partie gauche (LHS) d’une règle BNF ne contient qu’un symbole non-terminal, alors que la partie droite (RHS) peut contenir des symboles terminaux ou non. Un non-terminal peut avoir plusieurs définitions. Une règle peut aussi être récursive.
8
Méthodes Formelles de Description Syntaxique: Définitions
Les phrases d’un langage sont générées par l’application en séquence des règles de la grammaire. La génération d’une phrase ou d’un programme entier s’appelle une dérivation et elle commence au symbole de départ. S’il y a plusieurs non-terminaux dans une règle et que la dérivation étend le non-terminal le plus a gauche avant les autres, on parle de “dérivation la plus à gauche”. Un avantage des grammaires est qu’elles décrivent naturellement la structure syntaxique hiérarchique des phrases des langages qu’elles décrivent. Ces structures hiérarchiques s’appellent des “Arbres de dérivation”.
9
Méthodes Formelles de Description Syntaxique: Considérations
Une grammaire qui peut générer une phrase ayant deux ou plus de deux « arbres de dérivation » distincts est une grammaire ambiguë. L’ambiguïté syntaxique est un problème dans les langages de programmation car la sémantique est basée sur la syntaxe et la signification d’une phrase doit être unique. Une grammaire peut-être écrite de manière a implémenter la précédence des opérateurs, et leur associativité.
10
EBNF: Une extension de la BNF
Il existe certaines extensions de la BNF qui n’étendent pas le pouvoir descriptif du méta-langage, mais plutôt, en étend sa lisibilité et sa facilité d’écriture. 3 extensions sont utilisées couramment: L’utilisation de “[“ “]” --> Option (oui/non) L’utilisation de “{“ “}” --> Itération L’utilisation de “|” --> Option a choix multiple L’utilisation de “+” --> répétition unique ou multiple
11
Arbres de dérivation Le processus appelé “dérivation” consiste à construire un “arbre de dérivation” pour la phrase ou le programme écrits dans le langage. La dérivation peut-être fait du haut en bas ou du bas en haut. Parsing peut-être fait assez facilement si la grammaire du langage est définie de manière appropriée. En particulier, il est important que cette grammaire ne soit pas récursive.
12
Grammaires à Attributs: Généralités
Une grammaire à attributs est un mécanisme qui permet de décrire une plus grande partie de la structure d’un langage qui n’est possible avec une grammaire hors contexte. En particulier, une telle grammaire permet la définition de certaines règles du langage tels que la compatibilité des types. En général, la catégorie de règles du langage qui ne peuvent pas être définies en BNF s’appelle la sémantique statique de ce langage.
13
Grammaires à Attributs: Définitions
Une grammaire à attribut est une grammaire avec les additions suivantes: Chaque symbole de la grammaire est associé à un ensemble d’attributs divisé en deux sous-ensembles: les attributs synthétisés, qui passent l’information sémantique vers le haut de l’arbre; et les attributs hérités, qui la passent vers le bas. Chaque règle de grammaire est associée a un ensemble de fonctions sémantiques et, peut-être, un ensemble de fonctions prédiquées. Un attribut intrinsèque est un attribut synthétisé qui appartient à une feuille d’arbre et dont la valeur est déterminée à l’extérieur de l’arbre.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.