• Aucun résultat trouvé

Grammaire du projet (Fragment 1)

N/A
N/A
Protected

Academic year: 2022

Partager "Grammaire du projet (Fragment 1)"

Copied!
12
0
0

Texte intégral

(1)

Grammaire du projet (Fragment 1)

<programme> ::= <commande>|<commande> <programme>

<commande> ::= ;

|{<programme>}

|<expression>;

|Si (<expression>) <commande>

|Si (<expression>) <commande>Sinon<commande>

|TantQue (<expression>)<commande>

|Faire<commande>TantQue (<expression>)

|Pour (<expression>;<expression>;<expression>)<commande>

|ecrire(<expression>) ;

<expression> ::= <NOMBRE>|<BOOLEEN>|<IDENT>

|(<expression>)

|<op_unair> <expression>

|<expression> <op_binair> <expression>

|<expression>?<expression>:<expression>

|<IDENT>=<expression>

<op_unair> ::= -|!|++|--|Typeof

<op_binair> ::= +|-|*|/|%|===|>|!==|&&|||

Non-Terminaux ce sont les structures

que l’on décrit

Terminaux Ce sont les structures

données en entrée.

(2)

Grammaire du projet (Fragment 1)

<programme> ::= <commande>|<commande> <programme>

<commande> ::= ;

|{<programme>}

|<expression>;

|Si (<expression>) <commande>

|Si (<expression>) <commande>Sinon<commande>

|TantQue (<expression>)<commande>

|Faire<commande>TantQue (<expression>)

|Pour (<expression>;<expression>;<expression>)<commande>

|ecrire(<expression>) ;

<expression> ::= <NOMBRE>|<BOOLEEN>|<IDENT>

|(<expression>)

|<op_unair> <expression>

|<expression> <op_binair> <expression>

|<expression>?<expression>:<expression>

|<IDENT>=<expression>

<op_unair> ::= -|!|++|--|Typeof

<op_binair> ::= +|-|*|/|%|===|>|!==|&&|||

Non-Terminaux ce sont les structures

que l’on décrit

Terminaux Ce sont les structures

données en entrée.

Flavien BREUVART Grammaires 1 / 10

(3)

Plusieurs types de terminaux

<programme> ::= <commande>|<commande> <programme>

<commande> ::= ;

|{<programme>}

|<expression>;

|Si (<expression>) <commande>

|Si (<expression>) <commande>Sinon<commande>

|TantQue (<expression>)<commande>

|Faire<commande>TantQue (<expression>)

|Pour (<expression>;<expression>;<expression>)<commande>

|ecrire(<expression>) ;

<expression> ::= <NOMBRE>|<BOOLEEN>|<IDENT>

|(<expression>)

|<op_unair> <expression>

|<expression> <op_binair> <expression>

|<expression>?<expression>:<expression>

|<IDENT>=<expression>

<op_unair> ::= -|!|++|--|Typeof

<op_binair> ::= +|-|*|/|%|===|>|!==|&&|||

Token Boite étiquetée (fournie par le lexeur), on ne regarde que son nom

Mot clef Correspond à un

token vide Symbole

Correspond à un token vide

Symbole complexe Correspond à UN

token vide

(4)

Plusieurs types de terminaux

<programme> ::= <commande>|<commande> <programme>

<commande> ::= ;

|{<programme>}

|<expression>;

|Si (<expression>) <commande>

|Si (<expression>) <commande>Sinon<commande>

|TantQue (<expression>)<commande>

|Faire<commande>TantQue (<expression>)

|Pour (<expression>;<expression>;<expression>)<commande>

|ecrire(<expression>) ;

<expression> ::= <NOMBRE>|<BOOLEEN>|<IDENT>

|(<expression>)

|<op_unair> <expression>

|<expression> <op_binair> <expression>

|<expression>?<expression>:<expression>

|<IDENT>=<expression>

<op_unair> ::= -|!|++|--|Typeof

<op_binair> ::= +|-|*|/|%|===|>|!==|&&|||

Token Boite étiquetée (fournie par le lexeur), on ne regarde que son nom Mot clef

Correspond à un token vide Symbole

Correspond à un token vide

Symbole complexe Correspond à UN

token vide

Flavien BREUVART Grammaires 2 / 10

(5)

Règles d’une grammaire

Notation informatique

<expression> ::= <NOMBRE>

|(<expression>)

|<expression>+<expression>

Notation mathématique

<expression> 7→ <NOMBRE>

<expression> 7→ (<expression>)

<expression> 7→ <expression>+<expression>

Ici, on signifie qu’une expression est

• ou bien un nombre,

• ou bien de la forme “(w)” où w est une expression,

• ou bien de la forme “w1+w2” oùw1 etw2 sont des expressions.

(6)

Arbres syntaxiques

<programme>

<commande>

<expression>

<IDENT>

foo

= <expression>

<NOMBRE>

42

;

<programme>

<commande>

If <expression>

<IDENT>

bar

Then <commande>

;

Une grammaire permet de définir un ensemble d’arbres syntaxiques dont les noeuds sont des non terminaux et les

feuilles des terminaux.

Attention le contenu des tokens ne fait pas vraiment partie de l’arbre syntaxique, ils sont gérés en amont.

Flavien BREUVART Grammaires 4 / 10

(7)

Arbres syntaxiques abstrait

L’arbre syntaxique est souvent lourd et plein de redondance, on va généralement définir une opération de simplification :

<expression>

<expression>

(<expression>

<expression>

<NOMBRE>

<op_binaire>

+

<expression>

<NOMBRE>

)

<op_binaire>

<expression>

<NOMBRE>

+

<NOMBRE> <NOMBRE>

<NOMBRE>

Il n’y a pas de définition uniforme d’abstraction d’un arbre, cela dépend de ce que vous en faites.

(8)

Langage d’une grammaire

Langage reconnu par une grammaire

Le mot formé par les feuilles d’un arbre syntaxique est appellé le réduit de l’arbre.

Langage reconnu par une grammaire

Le langage reconnu par une grammaire est le langage des réduits de ses arbres syntaxiques.

Par exemple,

foo = 42 ; If bar Then ; est reconnu

Flavien BREUVART Grammaires 6 / 10

(9)

Analyse syntaxique

Bute de Parseur

Construire l’arbre sémantique à partir d’un mot de tokens reconnu par la grammaire.

ex : [(,<NOMBRE>,+,<NOMBRE>,),*,<NOMBRE>]devient

+

<NOMBRE> <NOMBRE>

<NOMBRE>

Problème 1

Que se passe-t-il s’il y a plusieurs arbres pour un mot ? ex : 1+2+3

Problème 2

Comment trouver cet arbre efficacement

(10)

Grammaire ambigüe

Definition

Une grammaire est ambigüe s’il existe deux arbres syntaxiques de même réduit.

Analyse syntaxique impossible

Contrairement à l’annalyse lexicale, on ne peut pas fair de choix “par défaut”, lorsqu’une grammaire est ambigüe, on refuse de la parser.

Priorités et associativités

Il y a tout de même un moyen de désambigüiser la grande majorité des cas, ce sont les rêgles de priorité et d’associativité.

mais celles-ci ne suffisent pas toujours

Flavien BREUVART Grammaires 8 / 10

(11)

Priorité

Idée

Si une rêgleN7→N+N est prioritaire sur une rêgleN7→NN, alors les motsN+NN etNN+N n’ont plus qu’un arbre accepté qui est celui qui met leen dessous :

N N

· · ·

+ N

N

· · ·

∗ N

· · ·

N N N

· · ·

∗ N

· · ·

+ N

· · ·

Peut se généraliser

• (<expr>7→ −<expr>) prioritaire sur(<expr>7→<expr><expr>)

• (<com>7→If <expr> then <prog> else <prog>)prioritaire sur (<com>7→If <expr> then <prog>)

(12)

Associativité

Idée

SiT7→TT est associative à droite, etN7→NN est associative à gauche , alors les motsTTT etNNN n’ont plus qu’un arbre accepté qui est celui qui penche à droite pour le premier et à gauche pour le second :

T T

· · ·

→ T

T

· · ·

→ T

· · ·

N N N

· · ·

N

· · · N

· · ·

Systématique sur tous les opérateurs infixes

• Pour les opérateurs associatif (ex : l’addition), peu importe le choix entre gauche et droite, mais il faut en faire un.

• On peut imaginer des opérateurs 3,4...-aires infixes avec d’autres types d’associativité, mais ça n’arrive pas en pratique.

Flavien BREUVART Grammaires 10 / 10

Références

Documents relatifs

Les notions présentées dans les programmes de 2015 dans le champ «  etude de la langue française   » appartiennent à la grammaire de phrase dont l’objet est de

• Permettre de créer des types de données usagers dérivés de types existants en contraignant certaines propriétés (domaine, précision, longueur, format)... Définitions

Des activités de réinvestissement (faisant appel à d’autres opérations mentales en liaison avec les usages de la langue). - courte production d’écrits (ex : définition

Sépare les phrases avec un crayon de papier, puis recopie-les dans l’ordre de l’histoire sans oublier les points et les majuscules.. la poule s’est mise à caquéter très fort

Souligne dans le texte suivant les verbes conjugués /5 Les fantômes sont les amis des vampires et des sorcières.. Ils se retrouvent souvent dans un

Souligne dans le texte suivant les verbes conjugués /5 Les fantômes sont les amis des vampires et des sorcières.. Ils se retrouvent souvent dans un

Les enfants, les élèves   Ils jardinent dans

18 La grammaire dans l’enseignement du français à destination de l’école africaine ne constitue pas l’élément central ou premier des apprentissages. Le français n’est pas