SlideShare une entreprise Scribd logo
1  sur  35
ALF
Arbre de syntaxe abstraite
Bibliographie pour aujourd'hui
Keith Cooper, Linda Torczon, Engineering a Compiler
– Chapitre 4
• 4.1 – 4.5
– Chapitre 5
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

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

Tendances (20)

ALF 1 - Automates finis
ALF 1 - Automates finis ALF 1 - Automates finis
ALF 1 - Automates finis
 
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 4 - Grammaires (2018)
ALF 4 - Grammaires (2018)ALF 4 - Grammaires (2018)
ALF 4 - Grammaires (2018)
 
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 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 - Introduction (2018)
ALF - Introduction (2018)ALF - Introduction (2018)
ALF - Introduction (2018)
 
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 12 - Optimisations
ALF 12 - OptimisationsALF 12 - Optimisations
ALF 12 - Optimisations
 
ALF 9 - Generation de code
ALF 9 - Generation de codeALF 9 - Generation de code
ALF 9 - Generation de code
 
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
 
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
 
Python
PythonPython
Python
 
R for data analysis
R for data analysisR for data analysis
R for data analysis
 

Similaire à ALF 7 - Arbre de syntaxe abstraite

cour de compilation
cour de compilation cour de compilation
cour de compilation Ens Kouba
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojurelolopetit
 
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
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
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
 
Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types HintsDarkmira
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 
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
 
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
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdfAhmed12314
 
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
 

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

cour de compilation
cour de compilation cour de compilation
cour de compilation
 
Mix it 2011 - Clojure
Mix it 2011 - ClojureMix it 2011 - Clojure
Mix it 2011 - Clojure
 
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 !
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
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#
 
Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types Hints
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
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
 
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
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
 
compilation1-2020.pdf
compilation1-2020.pdfcompilation1-2020.pdf
compilation1-2020.pdf
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
 
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
 

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

SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
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
 
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
 
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
 
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
 
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
 
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
 
Pharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmaciePharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmacieLoloshka
 
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
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
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
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
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
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
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
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
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
 

Dernier (20)

SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
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
 
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)
 
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
 
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
 
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
 
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
 
Pharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour PharmaciePharmacologie des cardiotoniques pour Pharmacie
Pharmacologie des cardiotoniques pour Pharmacie
 
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...
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
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
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.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
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
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...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
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
 

ALF 7 - Arbre de syntaxe abstraite

  • 2. Bibliographie pour aujourd'hui Keith Cooper, Linda Torczon, Engineering a Compiler – Chapitre 4 • 4.1 – 4.5 – Chapitre 5 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.