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

systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 

Dernier (15)

systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 

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