CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires...

37
CSI 3525, Grammaires, page 1 Description des langages – Syntaxe et sémantique – Grammaires – Sémantique axiomatique

Transcript of CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires...

Page 1: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 1

Description des langages

– Syntaxe et sémantique

– Grammaires

– Sémantique axiomatique

Page 2: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 2

Syntaxe et sémantique

- Syntaxe: le format du langage

- Sémantique: la signification des programmes

- Analyse des langages

- Hiérarchie des langages formels

Page 3: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 3

Syntaxe

• La syntaxe d’un 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 d’une 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).

Page 4: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 4

Grammaires

• 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.

Page 5: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 5

Sémantique

• La Sémantique d’un langage détermine le sens des éléments de base et de leurs combinaisons:

–Comment la signification d’un programme est déterminée par la signification de ses fragments?

• L’effet des instructions composées (ex: boucles, "if") devraient dépendre uniquement le l’effet des instructions élémentaires qu’elles contiennent (ex: assignations).

Page 6: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 6

Méthodes de description sémantique

• Sémantique opérationnelle

– Les instructions sont décrite de façon informelle, en terme d’opé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

– L’infé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

Page 7: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 7

Analyse lexicale

• L’analyse 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.

Page 8: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 8

Analyse syntaxique

• L’analyse 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).

• L’analyse syntactique est une composante essentielle de l’implémentation d’un langage de programmation.

• [ La génération syntactique, également basée sur les grammaires, fait l’inverse: passe de la structure syntactique au code. Important en technologie des langages, mais pas pour les langages de programmation.]

Page 9: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 9

Qu’est-ce qu’un 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, l’idé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 l’ensemble de toutes les expressions, chaque expression valide est une phrase.

– Dans l’ensemble de tout les programmes, chaque programme complet et valide est une phrase...

Page 10: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 10

Une 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 <

indépendant du contexte <

contextuel (dépendant du contexte) <

récursivement énumérable.

Les grammaires sont également classifiées de cette manière.

Page 11: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 11

• Les langages de programmation ont habituellement:

– Une syntaxe indépendante du contexte,

– Une sémantique contextuelle.

• Indépendance du contexte (important pour l’analyse syntactique) signifie que les fragments qui sont analysés ne dépendent pas de d’autres fragments du même programme.

– Par exemple, l’occurrence d’une variable n’est 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.

Une hiérarchie des langages formels (2)

Page 12: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 12

Grammaires formelles

- Concepts des grammaires formelles

- Un exemple de grammaire en BNF

- Dérivation de l’arbre syntaxique

- Ambiguïté des grammaires

Page 13: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 13

Quatre 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 n’importe quelle phrase.

• Productions = Les règles de réécriture utilisés pour reconnaître et générer des phrases

Page 14: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 14

Deux façons de réécrire

• À partir du but (symbole de départ), produire des approximations more de plus en plus spécifiques d’une 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.

Page 15: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 15

Exemple: 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›

Page 16: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 16

Notation

• Les ‘< >’ 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.

Page 17: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 17

Productions de notre grammaire

‹expr› ‹term› |‹expr› + ‹term› |‹expr› - ‹term›

‹term› ‹factor› |‹term› * ‹factor›

‹factor› ‹var› | ( ‹expr› )

‹var› x | y

Page 18: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 18

De 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 l’expression.

• De bas en haut:

– Réduit aux but.

Page 19: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 19

• Prenons comme exemple la suite de symboles terminaux suivante:

( x - y ) * x + y

[Nous allons montrer que c’est une expression – qu’elle 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.

Dérivations

Page 20: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 20

Dé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

Page 21: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 21

Dé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›

Page 22: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 22

L’un à coté de l’autre

( 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

Page 23: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 23

• 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 d’analyse 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.

Est-ce si facile?

Page 24: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 24

<expr>

<expr> <term>+

<term>

<term> <factor>*

( )<expr>

<expr> <term>—

<term> <factor>

<factor> <var>

<factor>

<var>

y

x

x

<var>

y

L’arbre ne dépend pas de l’ordre dans lequel les productions ont été appliquées lors de la dérivation.

Le résultat des deux dérivations peut être résumé par le même arbre syntaxique

Arbre syntaxique (parse trees)

Page 25: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 25

Ambiguïté

• Une grammaire est ambiguë quand une expression de cette grammaire possède plus d’un 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.

• L’expression 6 * 17 + 23 peut engendrer deux arbres de dérivation.

Page 26: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 26

Deux arbres syntaxiques...

<E>

<E> <E>*

<E> <E>+<N>

6 <N>

17

<N>

23

<E>

<E> <E>+

<E> <E>* <N>

23<N>

6

<N>

17

‹E› ‹E› + ‹E› | ‹E› * ‹E› | ‹N› 6 * 17 + 23

Page 27: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 27

…leur signification...

• Ces deux arbres résultent en des évaluations différentes!

• Les Ambiguïtés doivent être évites

*

+6

17 23

+

* 23

6 17

6 * ( 17 + 23 ) ( 6 * 17 ) + 23

Page 28: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 28

• 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› | <E> + <T>

‹T› ‹N› | <T> * <N>

... Et quoi faire des ambiguïtés

Page 29: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 29

‘long 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 mousethat chewed the shoe

• the dog that chased the cat that caught the mousethat chewed the shoe that squashed the fruit

• the dog that chased the cat that caught the mousethat chewed the shoe that squashed the fruitthat stained the chair

et ainsi de suite...

Page 30: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 30

... Une grammaire pour les ‘long phrases’

<long phrase> the <noun> [ that <verb> <long phrase> ]<noun> cat | chair | dog | fruit | mouse | shoe | ...<verb> caught | chased | chewed | squashed | stained | ...

Page 31: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 31

Une ‘clause’

the dog that chased the cat

that caught the mouse that chewed the shoe

that squashed the fruit that stained the chair

grabbed the sausage that tempted the wolf

that fought the fox that scared the squirrel

that bit the twig that cracked the nut

that hit the boy that lifted the hat

Page 32: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 32

... une grammaire pour les ‘clauses’

<clause>

<longPhrase> <verb> <longPhrase>

<longPhrase>

the <noun>

[ that <verb> <longPhrase> ]

<noun> boy | cat | ...

<verb> bit | caught | ...(Avec encore 1500 règles on aura une grammaire

raisonnable pour l’anglais. )

Page 33: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 33

listes 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 qu’un analyseur lexicale convertie texte un une séquence d’éléments de base : atomes et parenthèses.

Exemple: ( ab ( xyz br ) () ( no ) yes )

Page 34: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 34

... une grammaire pour les listes

<list> ( <elements> )

<elements> <element> |

<element> <elements>

<element> <atom> | <list>

<atom> <letter> |

<letter> <atom>

Page 35: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 35

Un 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.

Page 36: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 36

... quelques exemples ...

un jardin

un jardin

un jardin

un jardin

Page 37: CSI 3525, Grammaires, page 1 Description des langages –Syntaxe et sémantique –Grammaires –Sémantique axiomatique.

CSI 3525, Grammaires, page 37

... Une grammaire pour les jardins

<garden>

<largeAndSmall> <moreSmall> <largeAndSmall>

|

<largeAndSmall> <moreSmall>

| <moreSmall>