SlideShare une entreprise Scribd logo
1  sur  35
ALF
Grammaires
Bibliographie pour aujourd'hui
Keith Cooper, Linda Torczon, Engineering a Compiler
– Chapitre 3
• 3.1
• 3.2
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D.
Ullman, Compilers: Principles, Techniques, and Tools (2nd
Edition)
– Chapitre 4
• 4.2
• 4.3
Contenu
• Grammaires indépendantes
du contexte
• L'arbre du parse
• Jison
John Backus
• Américain
• FORTRAN
• Forme Backus-Naur
• Turing Prix
Grammaire
• Une manière formelle de décrire une langue
• Une langue peut avoir plusieurs grammaires
• Hiérarchie de Chomsky
Hiérarchie de Chomsky
Grammaire Description
Type 0 Récursivement énumérable
Type 1 Dépendante du contexte
Type 2 Indépendant du contexte
Type 3 Grammaire régulière
Grammaire indépendante du contexte
• Terminaux
– jetons (tokens)
– a, b, c, d, e, f
• Non-terminaux
– S, V, N, E ..
• Symbole de début
– S
• Productions
– N -> …
Exemple
S -> A
S -> B
A -> a
A -> aA
B -> b
B -> bB
Exemple
Token
numero: [0-9]+
sign: [+-*/]
Production
E -> E sign E
E -> -E
E -> numero
Exemple
Token
numero: [0-9]+
sign: [+-*/]
Production
E -> E sign E | -E | numero
Exemple
Token
numero: [0-9]+
sign: [+-*/]
Production
E -> E sign E
| -E
| numero
Dérivation
• Remplacement d'un non terminal par sa
production
– 1+2-3+6
• E => 1 + E
– => 1 + 2 - E
– => 1 + 2 - 3 + E
– => 1 + 2 - 3 + 6
Dérivation de gauche
• 1+2-3+6
• E => 1 + E
– => 1 + 2 - E
– => 1 + 2 - 3 + E
– => 1 + 2 - 3 + 6
Dérivation la plus à droite
• 1+2-3+6
• E => E + 6
– => E - 3 + 6
– => E + 2 - 3 + 6
– => 1 + 2 - 3 + 6
L'arbre du parse
• 1+2-3+6
• E => 1 + E
– => 1 + 2 - E
– => 1 + 2 - 3 + E
– => 1 + 2 - 3 + 6
E
1 + E
2 - E
3 + E
6
L'arbre du parse
• 1+2-3+6
• E => E + 6
– => E - 3 + 6
– => E + 2 - 3 + 6
– => 1 + 2 - 3 + 6
E
E
E
E
1
+ 2
- 3
+ 6
L'arbre du parse
• 1+2-3+6
• E => 1 + E
– => 1 + E + 6
– => 1 + 2 - E + 6
– => 1 + 2 - 3 + 6
E
1 + E
E
2 - E
3
+ 6
Ambiguïté
• Grammaires qui produisent plus d'un arbre du
parse
E -> E sign E
| -E
| numero
Exemple de Ambiguïté
• Grammaires qui produisent plus d'un arbre du
parse
if -> IF expression statements
| IF expression statements ELSE statements
Exemple de Ambiguïté
if (a == 0)
console.log ('zero');
else
console.log ('not zero');
Exemple de Ambiguïté
if (a == 0)
if (e == 0)
console.log ('zero');
else
console.log ('not zero');
Exemple de Ambiguïté
if (a == 0)
if (e == 0)
console.log ('zero');
else
console.log ('not zero');
Exercises
• Grammaire de parenthèses
• Expression avec multiplication et division
• Expression avec parenthèses
• Vecteur
• Déclaration de variable
• Déclaration de fonction
Jison
https://github.com/GerHobbelt/jison
Frontent
Source
Lexer Parser Semantic
AST
Tokens Parse Tree
Unexpected token … Expected …
Object has no
function …
Jison
Générateur de lexer/parseur
Expressions
régulières
Grammaire
Fichier.l
Fichier.js
jison
Fichier.y
Fichiers Jison
• Lexer
– fichier.l
• Parser
– fichier.y
Letter [A-Za-z]
WS s+
%%
"FOR" { return ‘FOR'; }
"IF" { return ‘IF'; }
"+" { return ‘PLUS’; }
"-" { return ‘MINUS’; }
{Letter}+ { print (yytext); return 'ID'; }
{WS}+ { /* whitespace separates tokens */ }
%%
function print (text)
{
console.log ('token '+text);
}
Fichier.l (lex ou flex)
Règles
Code Utilisateur
Options
Fichier.y (yacc ou bison)
%token FOR ID GOTO PLUS MINUS
%start Lines
%left PLUS MINUS
%{
function rule (name, elements) {...}
function token (type, value) {...}
%}
%%
Lines:
Statement NewLine Lines { $$ = [$Statement, $Lines]; }
| Statement NewLine { $$ = $Statement; };
Statement:
| FOR ID '=' Expression TO Expression STEP Integer {...}
| GOTO Expression {...}
| IF Expression THEN Statement {...}
| RETURN {...};
Expression: Expression PLUS Expression {...}
| Expression MINUS Expression {...}
| Expression MULTIPLY Expression {...}
| Expression DIVIDE Expression {...};
Options
%token FOR ID GOTO PLUS MINUS
%start Lines
%left PLUS MINUS
%{
function rule (name, elements) {...}
function token (type, value) {...}
%}
%%
Lines:
Statement NewLine Lines { $$ = [$Statement, $Lines]; }
| Statement NewLine { $$ = $Statement; };
Statement:
| FOR ID '=' Expression TO Expression STEP Integer {...}
| GOTO Expression {...}
| IF Expression THEN Statement {...}
| RETURN {...};
Expression: Expression PLUS Expression {...}
| Expression MINUS Expression {...}
| Expression MULTIPLY Expression {...}
| Expression DIVIDE Expression {...};
Règles
Code Utilisateur
Options
Code Utilisateur
%token FOR ID GOTO PLUS MINUS
%start Lines
%left PLUS MINUS
%{
function rule (name, elements) {...}
function token (type, value) {...}
%}
%%
Lines:
Statement NewLine Lines { $$ = [$Statement, $Lines]; }
| Statement NewLine { $$ = $Statement; };
Statement:
| FOR ID '=' Expression TO Expression STEP Integer {...}
| GOTO Expression {...}
| IF Expression THEN Statement {...}
| RETURN {...};
Expression: Expression PLUS Expression {...}
| Expression MINUS Expression {...}
| Expression MULTIPLY Expression {...}
| Expression DIVIDE Expression {...};
Options
Règles
Code Utilisateur
Declarations des fonctions et variables
Règles
%token FOR ID GOTO PLUS MINUS
%start Lines
%left PLUS MINUS
%{
function rule (name, elements) {...}
function token (type, value) {...}
%}
%%
Lines:
Statement NewLine Lines { $$ = [$Statement, $Lines]; }
| Statement NewLine { $$ = $Statement; };
Statement:
| FOR ID '=' Expression TO Expression STEP Integer {...}
| GOTO Expression {...}
| IF Expression THEN Statement {...}
| RETURN {...};
Expression: Expression PLUS Expression {...}
| Expression MINUS Expression {...}
| Expression MULTIPLY Expression {...}
| Expression DIVIDE Expression {...};
Code Utilisateur
Options
Règles
règle: production de grammaire { Actions }
Règles
Code Utilisateur
Options
Fichier.y
%token FOR ID GOTO PLUS MINUS
%start Lines
%left PLUS MINUS
%{
function rule (name, elements) {...}
function token (type, value) {...}
%}
%%
Lines:
Statement NewLine Lines { $$ = [$Statement, $Lines]; }
| Statement NewLine { $$ = $Statement; };
Statement:
| FOR ID '=' Expression TO Expression STEP Integer {...}
| GOTO Expression {...}
| IF Expression THEN Statement {...}
| RETURN {...};
Expression: Expression PLUS Expression {...}
| Expression MINUS Expression {...}
| Expression MULTIPLY Expression {...}
| Expression DIVIDE Expression {...};
Sujets
• Grammaires indépendantes du contexte
• L'arbre du parse
• Ambiguïté
• Jison
Questions

Contenu connexe

Tendances

ALF 3 - Expressions régulières (2018)
ALF 3 - Expressions régulières (2018)ALF 3 - Expressions régulières (2018)
ALF 3 - Expressions régulières (2018)Alexandru Radovici
 
ALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleAlexandru Radovici
 
ALF 10 - Convention d'appel de fonction
ALF 10 - Convention d'appel de fonctionALF 10 - Convention d'appel de fonction
ALF 10 - Convention d'appel de fonctionAlexandru Radovici
 
ALF 8 - Représentation des données
ALF 8 - Représentation des donnéesALF 8 - Représentation des données
ALF 8 - Représentation des donnéesAlexandru Radovici
 
ALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyAlexandru Radovici
 
Le décodage Kaldi/FST pour la reconnaissance de l'écriture
Le décodage Kaldi/FST pour la reconnaissance de l'écriture Le décodage Kaldi/FST pour la reconnaissance de l'écriture
Le décodage Kaldi/FST pour la reconnaissance de l'écriture Wassim Swaileh
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Damien Seguy
 

Tendances (20)

ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 3 - Expressions régulières (2018)
ALF 3 - Expressions régulières (2018)ALF 3 - Expressions régulières (2018)
ALF 3 - Expressions régulières (2018)
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 4 - Grammaires (2018)
ALF 4 - Grammaires (2018)ALF 4 - Grammaires (2018)
ALF 4 - Grammaires (2018)
 
ALF 1 - Automates finis
ALF 1 - Automates finis ALF 1 - Automates finis
ALF 1 - Automates finis
 
ALF 8 - Generation de code
ALF 8 - Generation de codeALF 8 - Generation de code
ALF 8 - Generation de code
 
ALF 12 - Optimisations
ALF 12 - OptimisationsALF 12 - Optimisations
ALF 12 - Optimisations
 
ALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlleALF 11 - Diagrame de flux de controlle
ALF 11 - Diagrame de flux de controlle
 
ALF 11 - WebAssembly
ALF 11 - WebAssemblyALF 11 - WebAssembly
ALF 11 - WebAssembly
 
ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)
 
ALF 10 - Convention d'appel de fonction
ALF 10 - Convention d'appel de fonctionALF 10 - Convention d'appel de fonction
ALF 10 - Convention d'appel de fonction
 
ALF 8 - Représentation des données
ALF 8 - Représentation des donnéesALF 8 - Représentation des données
ALF 8 - Représentation des données
 
ALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssembly
 
Le décodage Kaldi/FST pour la reconnaissance de l'écriture
Le décodage Kaldi/FST pour la reconnaissance de l'écriture Le décodage Kaldi/FST pour la reconnaissance de l'écriture
Le décodage Kaldi/FST pour la reconnaissance de l'écriture
 
ALF - Introduction (2018)
ALF - Introduction (2018)ALF - Introduction (2018)
ALF - Introduction (2018)
 
ALF 9 - Generation de code
ALF 9 - Generation de codeALF 9 - Generation de code
ALF 9 - Generation de code
 
Initiation r
Initiation rInitiation r
Initiation r
 
Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)Meilleur du typage fort (AFUP Day, 2020)
Meilleur du typage fort (AFUP Day, 2020)
 
R for data analysis
R for data analysisR for data analysis
R for data analysis
 

Similaire à ALF 4 - Grammaires

cour de compilation
cour de compilation cour de compilation
cour de compilation Ens Kouba
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationYann Caron
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applicationsDamien Seguy
 
Un compilateur... comment ça marche?
Un compilateur... comment ça marche?Un compilateur... comment ça marche?
Un compilateur... comment ça marche?Dinesh Bolkensteyn
 

Similaire à ALF 4 - Grammaires (7)

cour de compilation
cour de compilation cour de compilation
cour de compilation
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - Compilation
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Programmation fonctionnelle
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
Analyse statique et applications
Analyse statique et applicationsAnalyse statique et applications
Analyse statique et applications
 
Un compilateur... comment ça marche?
Un compilateur... comment ça marche?Un compilateur... comment ça marche?
Un compilateur... comment ça marche?
 

Plus de Alexandru Radovici (20)

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
 
MDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android FrameworkMDAD 2 - Introduction to the Android Framework
MDAD 2 - Introduction to the Android Framework
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
 
SdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la MémoireSdE 7 - Gestion de la Mémoire
SdE 7 - Gestion de la Mémoire
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
 

Dernier

La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...NaimDoumissi
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 

Dernier (18)

La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 

ALF 4 - Grammaires

  • 2. Bibliographie pour aujourd'hui Keith Cooper, Linda Torczon, Engineering a Compiler – Chapitre 3 • 3.1 • 3.2 Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition) – Chapitre 4 • 4.2 • 4.3
  • 3. Contenu • Grammaires indépendantes du contexte • L'arbre du parse • Jison
  • 4. John Backus • Américain • FORTRAN • Forme Backus-Naur • Turing Prix
  • 5. Grammaire • Une manière formelle de décrire une langue • Une langue peut avoir plusieurs grammaires • Hiérarchie de Chomsky
  • 6. Hiérarchie de Chomsky Grammaire Description Type 0 Récursivement énumérable Type 1 Dépendante du contexte Type 2 Indépendant du contexte Type 3 Grammaire régulière
  • 7. Grammaire indépendante du contexte • Terminaux – jetons (tokens) – a, b, c, d, e, f • Non-terminaux – S, V, N, E .. • Symbole de début – S • Productions – N -> …
  • 8. Exemple S -> A S -> B A -> a A -> aA B -> b B -> bB
  • 12. Dérivation • Remplacement d'un non terminal par sa production – 1+2-3+6 • E => 1 + E – => 1 + 2 - E – => 1 + 2 - 3 + E – => 1 + 2 - 3 + 6
  • 13. Dérivation de gauche • 1+2-3+6 • E => 1 + E – => 1 + 2 - E – => 1 + 2 - 3 + E – => 1 + 2 - 3 + 6
  • 14. Dérivation la plus à droite • 1+2-3+6 • E => E + 6 – => E - 3 + 6 – => E + 2 - 3 + 6 – => 1 + 2 - 3 + 6
  • 15. L'arbre du parse • 1+2-3+6 • E => 1 + E – => 1 + 2 - E – => 1 + 2 - 3 + E – => 1 + 2 - 3 + 6 E 1 + E 2 - E 3 + E 6
  • 16. L'arbre du parse • 1+2-3+6 • E => E + 6 – => E - 3 + 6 – => E + 2 - 3 + 6 – => 1 + 2 - 3 + 6 E E E E 1 + 2 - 3 + 6
  • 17. L'arbre du parse • 1+2-3+6 • E => 1 + E – => 1 + E + 6 – => 1 + 2 - E + 6 – => 1 + 2 - 3 + 6 E 1 + E E 2 - E 3 + 6
  • 18. Ambiguïté • Grammaires qui produisent plus d'un arbre du parse E -> E sign E | -E | numero
  • 19. Exemple de Ambiguïté • Grammaires qui produisent plus d'un arbre du parse if -> IF expression statements | IF expression statements ELSE statements
  • 20. Exemple de Ambiguïté if (a == 0) console.log ('zero'); else console.log ('not zero');
  • 21. Exemple de Ambiguïté if (a == 0) if (e == 0) console.log ('zero'); else console.log ('not zero');
  • 22. Exemple de Ambiguïté if (a == 0) if (e == 0) console.log ('zero'); else console.log ('not zero');
  • 23. Exercises • Grammaire de parenthèses • Expression avec multiplication et division • Expression avec parenthèses • Vecteur • Déclaration de variable • Déclaration de fonction
  • 25. Frontent Source Lexer Parser Semantic AST Tokens Parse Tree Unexpected token … Expected … Object has no function … Jison
  • 27. Fichiers Jison • Lexer – fichier.l • Parser – fichier.y
  • 28. Letter [A-Za-z] WS s+ %% "FOR" { return ‘FOR'; } "IF" { return ‘IF'; } "+" { return ‘PLUS’; } "-" { return ‘MINUS’; } {Letter}+ { print (yytext); return 'ID'; } {WS}+ { /* whitespace separates tokens */ } %% function print (text) { console.log ('token '+text); } Fichier.l (lex ou flex)
  • 29. Règles Code Utilisateur Options Fichier.y (yacc ou bison) %token FOR ID GOTO PLUS MINUS %start Lines %left PLUS MINUS %{ function rule (name, elements) {...} function token (type, value) {...} %} %% Lines: Statement NewLine Lines { $$ = [$Statement, $Lines]; } | Statement NewLine { $$ = $Statement; }; Statement: | FOR ID '=' Expression TO Expression STEP Integer {...} | GOTO Expression {...} | IF Expression THEN Statement {...} | RETURN {...}; Expression: Expression PLUS Expression {...} | Expression MINUS Expression {...} | Expression MULTIPLY Expression {...} | Expression DIVIDE Expression {...};
  • 30. Options %token FOR ID GOTO PLUS MINUS %start Lines %left PLUS MINUS %{ function rule (name, elements) {...} function token (type, value) {...} %} %% Lines: Statement NewLine Lines { $$ = [$Statement, $Lines]; } | Statement NewLine { $$ = $Statement; }; Statement: | FOR ID '=' Expression TO Expression STEP Integer {...} | GOTO Expression {...} | IF Expression THEN Statement {...} | RETURN {...}; Expression: Expression PLUS Expression {...} | Expression MINUS Expression {...} | Expression MULTIPLY Expression {...} | Expression DIVIDE Expression {...}; Règles Code Utilisateur Options
  • 31. Code Utilisateur %token FOR ID GOTO PLUS MINUS %start Lines %left PLUS MINUS %{ function rule (name, elements) {...} function token (type, value) {...} %} %% Lines: Statement NewLine Lines { $$ = [$Statement, $Lines]; } | Statement NewLine { $$ = $Statement; }; Statement: | FOR ID '=' Expression TO Expression STEP Integer {...} | GOTO Expression {...} | IF Expression THEN Statement {...} | RETURN {...}; Expression: Expression PLUS Expression {...} | Expression MINUS Expression {...} | Expression MULTIPLY Expression {...} | Expression DIVIDE Expression {...}; Options Règles Code Utilisateur Declarations des fonctions et variables
  • 32. Règles %token FOR ID GOTO PLUS MINUS %start Lines %left PLUS MINUS %{ function rule (name, elements) {...} function token (type, value) {...} %} %% Lines: Statement NewLine Lines { $$ = [$Statement, $Lines]; } | Statement NewLine { $$ = $Statement; }; Statement: | FOR ID '=' Expression TO Expression STEP Integer {...} | GOTO Expression {...} | IF Expression THEN Statement {...} | RETURN {...}; Expression: Expression PLUS Expression {...} | Expression MINUS Expression {...} | Expression MULTIPLY Expression {...} | Expression DIVIDE Expression {...}; Code Utilisateur Options Règles règle: production de grammaire { Actions }
  • 33. Règles Code Utilisateur Options Fichier.y %token FOR ID GOTO PLUS MINUS %start Lines %left PLUS MINUS %{ function rule (name, elements) {...} function token (type, value) {...} %} %% Lines: Statement NewLine Lines { $$ = [$Statement, $Lines]; } | Statement NewLine { $$ = $Statement; }; Statement: | FOR ID '=' Expression TO Expression STEP Integer {...} | GOTO Expression {...} | IF Expression THEN Statement {...} | RETURN {...}; Expression: Expression PLUS Expression {...} | Expression MINUS Expression {...} | Expression MULTIPLY Expression {...} | Expression DIVIDE Expression {...};
  • 34. Sujets • Grammaires indépendantes du contexte • L'arbre du parse • Ambiguïté • Jison