SlideShare une entreprise Scribd logo
1  sur  35
ALF
Arbre de syntaxe abstraite
Bibliographie pour aujourd'hui
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey
D. Ullman, Compilers: Principles, Techniques,
and Tools (2nd Edition)
– Chapitre 5
• 5.1
• 5.2
• 5.3
Contenu
• Définition dirigée par
syntaxe (SDD)
– S-attributs
– L-attributs
• Types
• Arbre de syntaxe abstraite
• Analyse sémantique
Grace Hopper
• Américain
• Vassar College
• Yale
• Premier compilateur
• Langage A-0
The Imitation Game
Slides
Partie de slides sont écrie par
Bogdan Nitulescu
Frontend
Source
Lexer Parser Semantic
AST
Tokens Parse Tree
Unexpected token … Expected …
Object has no
function …
Analyse sémantique
Analyse sémantique
Programmes lexicales corrects Analyse lexicale
Analyse syntactique
Programmes syntaxiquement correctes
Programmes qui compilent sans erreur
Programmes en cours
d'exécution sans erreurs
Analyse sémantique
 Nous sommes intéressés par
 Annotez l'arbre de syntaxe avec des informations de
type
 Créer le tableau des symboles
 Ajouter des noeuds "typecast"
 La plupart de l'analyse sémantique se réfère à la
gestion du contexte
Analyse sémantique
• a=b;
• e = a*b;
• sum (a, b);
• a[i] = s;
• s.element = 7;
Définition dirigée par syntaxe
• Syntax-Directed Definitions (SDD)
– Grammaire
– Attributs
– Règles (pour les attributs)
E -> E + E { … }
Attributs
• Grammaire
– E -> E + E
• Attributs
– E.val - valeur
– E.type - type
SDD Exemple
Production Règle
L-> E L.val = E.val
E -> E1 + T E.val = E1.val + T.val
E -> T E.val = T.val
T -> T1 * F T.val = T1.val * F.val
T -> F T.val = F.val
F -> ( E ) F.val = E.val
F-> digit F.val = digit.text
Translation dirigée par syntaxe
• Syntax-Directed Translation (SDT)
– Grammaire
– Attributs
– Règles (pour les attributs)
– Actions
E -> E + E { … }
Arbre de syntaxe abstraite
Parse Tree AST
function
FUNCTION s LP parameters
a COMMA parameters
b
RP LB statements
return
RETURN expression
a
PLUS
b
PV
RB
FUNCTION (name: s,
parameters: [a, b])
RETURN
PLUS
VAR (name: a)
VAR (name: b)
Exemple de AST
function factorial (n)
{
var f = 1;
for (var i=1; i < n; i++)
f = f * i;
return f;
}
Exemple de AST
{
“type”: “function”,
“name”: “factorial”,
“parameters”: {
“n”: “var”
},
statements: [ … ]
}
Contexte (scope)
 Les contextes mémorisent les déclarations
 Nom et structure de type
 Nom de variable
 Nom, type de retour et les paramètres pour les fonctions
 Lorsqu'elles sont déclarées, les variables, les types et les
fonctions sont ajoutés au contexte
 Lorsqu'ils sont consultés, ils sont recherchés dans le
contexte actuel
 Les contextes sont imbriqués
Contexte
Image from http://staff.polito.it/silvano.rivoira/HowToWriteYourOwnCompiler_file/Page392.htm
Contexte - exemple
 C++
 Locale (block { … } ou fichier)
 Label - le contexte c’est la fonction
 Attributs/méthodes – toute la classe.
 Java
 Niveaux: Package, Class, Inner class, Method
Contexte et espace de nom
 C:
 typedef int foo; foo foo;
 int int;
 Java
 Integer Integer = new Integer(4);
 C, Java:
 int foo(x) { return x+4;}
 int f() { int foo=3; return foo(foo);}
Implémentation du contexte
 Tableau de symbole
 Actions:
 Nouveau contexte
 Ajoute un symbole
 Retrouve un symbole
 Ferme le contexte
 Pile ou hashtable
Pile
var a;
function work (p)
{
var i;
{
var a;
let l;
}
}
• l: var
Inside
{…}
• p: var
• i: var
• a: var
work
• a: var
• work: function
Program
Hashtable
var a;
function work (p)
{
var i;
{
var a;
let l;
}
}
Symbol Type
a_program var
work_program function
i_work var
a_work var
l_work_inner var
Exemple de AST
function factorial (n) // make new context (function)
{
// add variable n to conext
var f = 1; // add variable f to conext
for (var i=1; i < n; i++) // make new context (for),
//add variable i to context (function)
f = f * i;
// destroy context (for)
return f;
// destroy context (function)
}
Contexte statique et dynamique
 Statique - a la compilation
 C/C++
 Java
 Pascal
 Dynamique – lors de l'exécution
 Javascript
 Python
 Ruby
Types
 Type
 Valeurs autorisées
 Opérations autorisées
 Types
 Simple
 int, float, double, char, bool
 Composée
 array, string, pointer, struct
 Complexe
 listes ,arbres
Paramètres pour les type
 Simple
 Le type (int, char, float … )
 Compose
 struct
 Liste avec les components
 Nom
 Type
 array
 Type des éléments
 Numéro des éléments
 Les index
Les types sont pour
 Constantes
 Variables
 Fonctions
 Expressions
 Instructions
Langage et type
• Dynamique vs. Statique
• Ou est-ce que la vérification de type est
effectuée?
Exécution vs compilation
• Strongly typed vs. Weakly typed
• Que se passe-t-il si les types ne
correspondent pas?
Erreur vs. conversion
Vérification de type
 Synthèse
 Détermination de type pour un instruction
 Expression
 Overloading
 Inférence
 Détermine un type dans le contexte
Equivalence de types compose
 Un arbre pour l’information de type
 Nom
 Structure
 Vérifiez de façon récursive que l'arbre correspond
Inférence de type
 Déduction de type pour un expression
dans le contexte
 A compilation ou a exécution.
 C’est important
 Vérification de type
 Overloading de fonction
 Conversion implicite
 Widening / Narrowing
Sujets
• Définition dirigée par syntaxe (SDD)
• Types
• Arbre de syntaxe abstraite
• Analyse sémantique
Questions

Contenu connexe

Tendances (18)

ALF 6 - Parser
ALF 6 - ParserALF 6 - Parser
ALF 6 - Parser
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
ALF 5 - Parser
ALF 5 - ParserALF 5 - Parser
ALF 5 - Parser
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
 
ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
 
ALF 8 - Generation de code
ALF 8 - Generation de codeALF 8 - Generation de code
ALF 8 - Generation de code
 
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 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 9 - Generation de code
ALF 9 - Generation de codeALF 9 - Generation de code
ALF 9 - Generation de code
 
ALF 12 - Optimisations
ALF 12 - OptimisationsALF 12 - Optimisations
ALF 12 - Optimisations
 
cour de compilation
cour de compilation cour de compilation
cour de compilation
 
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
 
Initiation r
Initiation rInitiation r
Initiation r
 
Python
PythonPython
Python
 

Similaire à ALF 7 - Arbre de syntaxe abstraite

Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojurelolopetit
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Yi YANG
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#MSDEVMTL
 
Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Laurent BUNIET
 
Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types HintsDarkmira
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDidier Plaindoux
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RLaurent Beauguitte
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaCh'ti JUG
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfYasushiTsubakik
 
Présentation Logiciel R.pptx
Présentation Logiciel R.pptxPrésentation Logiciel R.pptx
Présentation Logiciel R.pptxssusera0d0e81
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinterRYMAA
 

Similaire à ALF 7 - Arbre de syntaxe abstraite (18)

Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojure
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données ! Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
Avec le langage R, prenez de la hauteur dans l’analyse de vos données !
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
 
Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4
 
Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types Hints
 
De java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvementsDe java à swift en 2 temps trois mouvements
De java à swift en 2 temps trois mouvements
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Introduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec RIntroduction à l'analyse de réseaux avec R
Introduction à l'analyse de réseaux avec R
 
Java 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambdaJava 8 : Un ch'ti peu de lambda
Java 8 : Un ch'ti peu de lambda
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
 
Développement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdfDéveloppement Web- PHP (partie I).pdf
Développement Web- PHP (partie I).pdf
 
Présentation Logiciel R.pptx
Présentation Logiciel R.pptxPrésentation Logiciel R.pptx
Présentation Logiciel R.pptx
 
compilation1-2020.pdf
compilation1-2020.pdfcompilation1-2020.pdf
compilation1-2020.pdf
 
XML Xpath & XSLT
XML  Xpath & XSLTXML  Xpath & XSLT
XML Xpath & XSLT
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Interface collectionsinter
Interface collectionsinterInterface collectionsinter
Interface collectionsinter
 
Drools
DroolsDrools
Drools
 

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

Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxlamourfrantz
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
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
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfssuser40e112
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxpopzair
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 

Dernier (20)

Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptx
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
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
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
 
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
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
Présentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptxPrésentation de cartes d'extension zhr..pptx
Présentation de cartes d'extension zhr..pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 

ALF 7 - Arbre de syntaxe abstraite

  • 2. Bibliographie pour aujourd'hui Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd Edition) – Chapitre 5 • 5.1 • 5.2 • 5.3
  • 3. Contenu • Définition dirigée par syntaxe (SDD) – S-attributs – L-attributs • Types • Arbre de syntaxe abstraite • Analyse sémantique
  • 4. Grace Hopper • Américain • Vassar College • Yale • Premier compilateur • Langage A-0
  • 6. Slides Partie de slides sont écrie par Bogdan Nitulescu
  • 7. Frontend Source Lexer Parser Semantic AST Tokens Parse Tree Unexpected token … Expected … Object has no function …
  • 8. Analyse sémantique Analyse sémantique Programmes lexicales corrects Analyse lexicale Analyse syntactique Programmes syntaxiquement correctes Programmes qui compilent sans erreur Programmes en cours d'exécution sans erreurs
  • 9. Analyse sémantique  Nous sommes intéressés par  Annotez l'arbre de syntaxe avec des informations de type  Créer le tableau des symboles  Ajouter des noeuds "typecast"  La plupart de l'analyse sémantique se réfère à la gestion du contexte
  • 10. Analyse sémantique • a=b; • e = a*b; • sum (a, b); • a[i] = s; • s.element = 7;
  • 11. Définition dirigée par syntaxe • Syntax-Directed Definitions (SDD) – Grammaire – Attributs – Règles (pour les attributs) E -> E + E { … }
  • 12. Attributs • Grammaire – E -> E + E • Attributs – E.val - valeur – E.type - type
  • 13. SDD Exemple Production Règle L-> E L.val = E.val E -> E1 + T E.val = E1.val + T.val E -> T E.val = T.val T -> T1 * F T.val = T1.val * F.val T -> F T.val = F.val F -> ( E ) F.val = E.val F-> digit F.val = digit.text
  • 14. Translation dirigée par syntaxe • Syntax-Directed Translation (SDT) – Grammaire – Attributs – Règles (pour les attributs) – Actions E -> E + E { … }
  • 15. Arbre de syntaxe abstraite Parse Tree AST function FUNCTION s LP parameters a COMMA parameters b RP LB statements return RETURN expression a PLUS b PV RB FUNCTION (name: s, parameters: [a, b]) RETURN PLUS VAR (name: a) VAR (name: b)
  • 16. Exemple de AST function factorial (n) { var f = 1; for (var i=1; i < n; i++) f = f * i; return f; }
  • 17. Exemple de AST { “type”: “function”, “name”: “factorial”, “parameters”: { “n”: “var” }, statements: [ … ] }
  • 18. Contexte (scope)  Les contextes mémorisent les déclarations  Nom et structure de type  Nom de variable  Nom, type de retour et les paramètres pour les fonctions  Lorsqu'elles sont déclarées, les variables, les types et les fonctions sont ajoutés au contexte  Lorsqu'ils sont consultés, ils sont recherchés dans le contexte actuel  Les contextes sont imbriqués
  • 20. Contexte - exemple  C++  Locale (block { … } ou fichier)  Label - le contexte c’est la fonction  Attributs/méthodes – toute la classe.  Java  Niveaux: Package, Class, Inner class, Method
  • 21. Contexte et espace de nom  C:  typedef int foo; foo foo;  int int;  Java  Integer Integer = new Integer(4);  C, Java:  int foo(x) { return x+4;}  int f() { int foo=3; return foo(foo);}
  • 22. Implémentation du contexte  Tableau de symbole  Actions:  Nouveau contexte  Ajoute un symbole  Retrouve un symbole  Ferme le contexte  Pile ou hashtable
  • 23. Pile var a; function work (p) { var i; { var a; let l; } } • l: var Inside {…} • p: var • i: var • a: var work • a: var • work: function Program
  • 24. Hashtable var a; function work (p) { var i; { var a; let l; } } Symbol Type a_program var work_program function i_work var a_work var l_work_inner var
  • 25. Exemple de AST function factorial (n) // make new context (function) { // add variable n to conext var f = 1; // add variable f to conext for (var i=1; i < n; i++) // make new context (for), //add variable i to context (function) f = f * i; // destroy context (for) return f; // destroy context (function) }
  • 26. Contexte statique et dynamique  Statique - a la compilation  C/C++  Java  Pascal  Dynamique – lors de l'exécution  Javascript  Python  Ruby
  • 27. Types  Type  Valeurs autorisées  Opérations autorisées  Types  Simple  int, float, double, char, bool  Composée  array, string, pointer, struct  Complexe  listes ,arbres
  • 28. Paramètres pour les type  Simple  Le type (int, char, float … )  Compose  struct  Liste avec les components  Nom  Type  array  Type des éléments  Numéro des éléments  Les index
  • 29. Les types sont pour  Constantes  Variables  Fonctions  Expressions  Instructions
  • 30. Langage et type • Dynamique vs. Statique • Ou est-ce que la vérification de type est effectuée? Exécution vs compilation • Strongly typed vs. Weakly typed • Que se passe-t-il si les types ne correspondent pas? Erreur vs. conversion
  • 31. Vérification de type  Synthèse  Détermination de type pour un instruction  Expression  Overloading  Inférence  Détermine un type dans le contexte
  • 32. Equivalence de types compose  Un arbre pour l’information de type  Nom  Structure  Vérifiez de façon récursive que l'arbre correspond
  • 33. Inférence de type  Déduction de type pour un expression dans le contexte  A compilation ou a exécution.  C’est important  Vérification de type  Overloading de fonction  Conversion implicite  Widening / Narrowing
  • 34. Sujets • Définition dirigée par syntaxe (SDD) • Types • Arbre de syntaxe abstraite • Analyse sémantique

Notes de l'éditeur

  1. Pasii de analiza – o serie de filtre Tipurile de gramatici
  2. A "statically-typed" language is a language designed to facilitate automatic correctness checking by a tool that has access to only the source code, not the running state of the program. The facts that are deduced by the tool are called "types." The language designers produce a set of rules about what makes a program "type safe," and the tool seeks to prove that the program follows those rules; if it does not then it produces a type error. A "dynamically-typed" language by contrast is one not designed to facilitate this kind of checking. The meaning of the data stored in any particular location can only be easily determined by inspection while the program is running.