Title: CSI 3525, Grammaires, page 1
1Description des langages
- Syntaxe et sémantique
- Grammaires
- Sémantique axiomatique
2Syntaxe et sémantique
- - Syntaxe le format du langage
- - Sémantique la signification des programmes
- - Analyse des langages
- - Hiérarchie des langages formels
3Syntaxe
- La syntaxe dun langage détermine comment les
programmes sont construit à partir des éléments
de base (mots clef, identificateurs, nombres,
parenthèses, etc.). - Un programme syntaxiquement correct peut ne pas
être acceptable, ou peut fonctionner dune façon
autre que celle voulu. - Une syntaxe formelle est un system décrivant la
structure exacte des programmes. - Ceux-ci incluent les grammaires, BNF, diagrammes
syntaxiques (graphes de syntaxe).
4Grammaires
- Il existe un nombre infini de programmes
possible,mais chacun est fini et sa syntaxe doit
pouvoir être vérifiée en temps fini. - Une grammaire permet une description finie de
langages infinies.
5Sémantique
- La Sémantique dun langage détermine le sens des
éléments de base et de leurs combinaisons - Comment la signification dun programme est
déterminée par la signification de ses fragments? - Leffet des instructions composées (ex boucles,
"if") devraient dépendre uniquement le leffet
des instructions élémentaires quelles
contiennent (ex assignations).
6Méthodes de description sémantique
- Sémantique opérationnelle
- Les instructions sont décrite de façon
informelle, en terme dopérations simple, ayant
un effet sur létat de la machine. - Sémantique dénotationelle
- Les instructions sont mis en correspondance avec
des objet mathématiques pouvant être manipulés
rigoureusement - Un programme décrit une fonction données ?
résultats - Sémantique axiomatique
- Linférence est utilisé pour vérifier que le
programme satisfait les postconditions en partant
des préconditions - Un programme décrit une relation données ?
résultats
7Analyse lexicale
- Lanalyse lexicale pré-traite le fichier
contenant le code source - Reconnaît les éléments lexicaux (mots-clef, noms
prédéfini, identificateurs, nombres, parenthèses,
opérateurs, ). - - enlève les espaces.
- Ceci rend la traduction plus simple en éliminant
les détails de bas niveau.
8Analyse syntaxique
- Lanalyse syntactique, basée sur les grammaires,
peut vouloir dire deux choses - Décision (le programme est correcte ou non)
- Décomposition syntactique parsing (une
représentation de la structure syntactique est
construite pour les programmes correctes). - Lanalyse syntactique est une composante
essentielle de limplémentation dun langage de
programmation. - La génération syntactique, également basée sur
les grammaires, fait linverse passe de la
structure syntactique au code. Important en
technologie des langages, mais pas pour les
langages de programmation.
9Quest-ce quun langage?
- Un langage est un ensemble de phrases.
- Une phrase est une séquence déléments de base,
places en accord avec des règles bien défini.
(habituellement des règles de grammaire). - En langage naturel, lidée de phrase est bien
connue. - Pour les langages de programmation, différentes
structures syntaxiques peuvent être considères
comme des phrases. - Par exemple, dans lensemble de toutes les
expressions, chaque expression valide est une
phrase. - Dans lensemble de tout les programmes, chaque
programme complet et valide est une phrase...
10Une hiérarchie des langages formels
- Les langages formels sont classés selon leur
complexité. - Une hiérarchie a 4 niveaux, du plus simple au
plus compliqué - régulier lt
- indépendant du contexte lt
- contextuel (dépendant du contexte) lt
- récursivement énumérable.
- Les grammaires sont également classifiées de
cette manière.
11Une hiérarchie des langages formels (2)
- Les langages de programmation ont habituellement
- Une syntaxe indépendante du contexte,
- Une sémantique contextuelle.
- Indépendance du contexte (important pour
lanalyse syntactique) signifie que les fragments
qui sont analysés ne dépendent pas de dautres
fragments du même programme. - Par exemple, loccurrence dune variable nest
pas reliée a sa déclaration (la validité de la
syntaxe du programme ne dépend pas de la relation
entre les deux). - Un appel à une méthode et la définition de cette
méthode sont analysé séparément.
12Grammaires formelles
- - Concepts des grammaires formelles
- - Un exemple de grammaire en BNF
- - Dérivation de larbre syntaxique
- - Ambiguïté des grammaires
13Quatre composantes des grammaires formelles
- Symboles terminaux Les éléments du langage
(comme les noms de variables en Java, ou les mots
en français). - Symboles non-terminaux symboles auxiliaires
dénotant la sorte de construction (par exemple
boucle, expression_booléenne). - Le but (symbole de départ) dénote nimporte
quelle phrase. - Productions Les règles de réécriture utilisés
pour reconnaître et générer des phrases
14Deux façons de réécrire
- À partir du but (symbole de départ), produire des
approximations more de plus en plus spécifiques
dune phrase, en replaçant les symboles
non-terminaux par leur définition. - Réduire une phrase en un format de plus en plus
général, en replaçant les définitions par des
symboles non-terminaux, et en atteignant le but
(revient au même). - Les productions ce qui différencient les
grammaires régulières, indépendantes du contexte
ou contextuelles.
15Exemple Une grammaire pour les expressions
- Sept symboles terminaux
- - ( ) x y
- Quatre non-terminaux
- expr term factor var
- On peut nommer ces symboles comme on veut comme
quand on choisit les noms de variables dans un
programme, il est bon de choisir des symboles
non-terminaux ayant un nom qui aide à comprendre
leur sens. - But/symbole de départ
- expr
16Notation
- Les lt gt servent à distinguer les symboles
non-terminaux des terminaux. - Coté gauche ? Coté droit signifie Le coté
droit consiste en ce qui se trouve du coté
droit". - Une barre sépare les différent coté droit
possibles pour un coté gauche particulier.
17Productions de notre grammaire
- expr ? term expr term
expr - term - term ? factor term factor
- factor ? var ( expr )
- var ? x y
18De haut en bas et de bas en haut
- Comme mentionne précédemment, pour une phrase ?,
les productions peuvent être appliqués de deux
façons - De haut en bas
- Dérive ? a partir du but (symbole de départ).
- ? sera alors un exemple de lexpression.
- De bas en haut
- Réduit ? aux but.
19Dérivations
- Prenons comme exemple la suite de symboles
terminaux suivante - ( x - y ) x y
- Nous allons montrer que cest une expression
quelle suit la syntaxe des expressions - Deux dérivations sont présentées dans les pages
suivantes. - À chaque ligne, la partie de couleur est
impliquée dans la réécriture de la prochaine
ligne, selon une production de la grammaire.
20Dérivation de haut en bas
- expr ?
- expr term ?
- term term ?
- term factor term ?
- factor factor term ?
- ( expr ) factor term ?
- ( expr - term ) factor term ?
- ( term - term ) factor term ?
- ( factor - term ) factor term ?
- ( var - term ) factor term ?
- ( x - term ) factor term ?
- ( x - factor ) factor term ?
- ( x - var ) factor term ?
- ( x - y ) factor term ?
- ( x - y ) var term ?
- ( x - y ) x term ?
- ( x - y ) x factor ?
- ( x - y ) x var ?
- ( x - y ) x y
21Dérivation de bas en haut
- ( x - y ) x y ?
- ( var - y ) x y ?
- ( factor - y ) x y ?
- ( term - y ) x y ?
- ( expr - y ) x y ?
- ( expr - var ) x y ?
- ( expr - factor ) x y ?
- ( expr - term ) x y ?
- ( expr ) x y ?
- factor x y ?
- term x y ?
- term var y ?
- term factor y ?
- term y ?
- expr y ?
- expr var ?
- expr factor ?
- expr term ?
- expr
22Lun à coté de lautre
- ( x - y ) x y ?
- ( var - y ) x y ?
- ( factor - y ) x y ?
- ( term - y ) x y ?
- ( expr - y ) x y ?
- ( expr - var ) x y ?
- ( expr - factor ) x y ?
- ( expr - term ) x y ?
- ( expr ) x y ?
- factor x y ?
- term x y ?
- term var y ?
- term factor y ?
- term y ?
- expr y ?
- expr var ?
- expr factor ?
- expr term ?
- expr
expr ? expr term ? term term
? term factor term ? factor
factor term ? ( expr ) factor
term ? ( expr - term ) factor term
? ( term - term ) factor term ? (
factor - term ) factor term ? ( var
- term ) factor term ? ( x - term )
factor term ? ( x - factor ) factor
term ? ( x - var ) factor term ? ( x
- y ) factor term ? ( x - y ) var
term ? ( x - y ) x term ? ( x - y ) x
factor ? ( x - y ) x var ? ( x - y ) x
y
23Est-ce si facile?
- Pour les deux dérivations, il faut deviner a
chaque étape laquelle des productions devrait
être utilisée. - La stratégie est au cœur des algorithmes
danalyse syntaxique. Idéalement, ont voudrais
toujours deviner correctement, mais en pratique
il faut tenter une production, et si elle échoue,
retourner en arrière et en choisir une autre. - Les deux approches ont reconnue la suite de
symboles - ( x - y ) x y
- comme une expression bien formée de la grammaire.
24Arbre syntaxique (parse trees)
Le résultat des deux dérivations peut être résumé
par le même arbre syntaxique
Larbre ne dépend pas de lordre dans lequel les
productions ont été appliquées lors de la
dérivation.
25Ambiguïté
- Une grammaire est ambiguë quand une expression de
cette grammaire possède plus dun arbre de
dérivation ayant une structure différente. - Par exemple, voici une grammaire pour les
expressions arithmétiques - E ? E E E E N
- où N indique un entier.
- Lexpression 6 17 23 peut engendrer deux
arbres de dérivation.
26Deux arbres syntaxiques...
E ? E E E E N
6 17 23
27leur signification...
- Ces deux arbres résultent en des évaluations
différentes! - Les Ambiguïtés doivent être évites
28... Et quoi faire des ambiguïtés
- Au lieu, on aurait dû définir une grammaire a
deux niveaux, pour ne pas avoir et au même
niveau. - Un expression E est une somme de termes T.
- Un terme est un produit de nombres N.
- E ? T ltEgt ltTgt
- T ? N ltTgt ltNgt
29long phrase
- the dog
- the dog that chased the cat
- the dog that chased the cat that caught the mouse
- the dog that chased the cat that caught the
mouse that chewed the shoe - the dog that chased the cat that caught the
mouse that chewed the shoe that squashed the
fruit - the dog that chased the cat that caught the
mouse that chewed the shoe that squashed the
fruit that stained the chair - et ainsi de suite...
30... Une grammaire pour les long phrases
- ltlong phrasegt ?
- the ltnoungt
- that ltverbgt ltlong phrasegt
- ltnoungt ?
- cat chair dog
- fruit mouse shoe ...
- ltverbgt ?
- caught chased chewed
- squashed stained ...
31Une clause
- the dog that chased the catthat caught the mouse
that chewed the shoethat squashed the fruit that
stained the chairgrabbed the sausage that
tempted the wolfthat fought the fox that scared
the squirrelthat bit the twig that cracked the
nutthat hit the boy that lifted the hat
32... une grammaire pour les clauses
- ltclausegt ?
- ltlongPhrasegt ltverbgt ltlongPhrasegt
- ltlongPhrasegt ?
- the ltnoungt
- that ltverbgt ltlongPhrasegt
- ltnoungt ? boy cat ...
- ltverbgt ? bit caught ...
- (Avec encore 1500 règles on aura une grammaire
raisonnable pour langlais. ?)
33listes en Scheme...
- Une liste peut être vide
- ()
- Ou une séquence déléments séparés par des
espaces, le tout entre parenthèses - ( element ... element )
- Chaque élément est soit une liste, ou une atome.
Une atome est un identificateur formé de lettres
minuscules. Nous supposons quun analyseur
lexicale convertie texte un une séquence
déléments de base atomes et parenthèses. - Exemple ( ab ( xyz br ) () ( no ) yes )
34... une grammaire pour les listes
- ltlistgt ? ( ltelementsgt )
- ltelementsgt ? ltelementgt
- ltelementgt ltelementsgt
- ltelementgt ? ltatomgt ltlistgt
- ltatomgt ? ltlettergt
- ltlettergt ltatomgt
35Un jardin...
- Les jardins sont constitués de 4 éléments
- ? mur
- ? grosse fleur
- ? petite fleur
- ? maison
- De gauche a droite, le jardin contient un mur,
au moin une grosse fleure, un autre mur, des
petite fleurs (plus nombreuse que les grosses),
et une maison.
36... quelques exemples ...
- ??????????????? un jardin?
- ??????????????? un jardin?
- ??????????????? un jardin ?
- ????????????? un jardin?
37... Une grammaire pour les jardins
- ltgardengt ?
- ? ltlargeAndSmallgt ltmoreSmallgt ?
- ltlargeAndSmallgt ?
- ? ? ?
- ? ltlargeAndSmallgt ?
- ltmoreSmallgt ?
- ? ? ltmoreSmallgt