SlideShare une entreprise Scribd logo
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 1 - Automates finis
ALF 1 - Automates finis ALF 1 - Automates finis
ALF 1 - Automates finis
Alexandru Radovici
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
Alexandru Radovici
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
Alexandru Radovici
 
ALF 4 - Grammaires (2018)
ALF 4 - Grammaires (2018)ALF 4 - Grammaires (2018)
ALF 4 - Grammaires (2018)
Alexandru 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ées
Alexandru Radovici
 
ALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-UpALF 6 - Parser Bottom-Up
ALF 6 - Parser Bottom-Up
Alexandru Radovici
 
ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)ALF 2 - Automates Fini (2018)
ALF 2 - Automates Fini (2018)
Alexandru Radovici
 
ALF - Introduction (2018)
ALF - Introduction (2018)ALF - Introduction (2018)
ALF - Introduction (2018)
Alexandru Radovici
 
ALF 8 - Generation du code
ALF 8 - Generation du codeALF 8 - Generation du code
ALF 8 - Generation du code
Alexandru Radovici
 
ALF 8 - Generation de code
ALF 8 - Generation de codeALF 8 - Generation de code
ALF 8 - Generation de code
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 controlle
Alexandru Radovici
 
ALF 11 - WebAssembly
ALF 11 - WebAssemblyALF 11 - WebAssembly
ALF 11 - WebAssembly
Alexandru 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 fonction
Alexandru Radovici
 
ALF 12 - Optimisations
ALF 12 - OptimisationsALF 12 - Optimisations
ALF 12 - Optimisations
Alexandru Radovici
 
ALF 9 - Generation de code
ALF 9 - Generation de codeALF 9 - Generation de code
ALF 9 - Generation de code
Alexandru 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
 
Initiation r
Initiation rInitiation 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
Alexandru Radovici
 
Python
PythonPython
R for data analysis
R for data analysisR for data analysis
R for data analysis
Ahmadou DICKO
 

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 - Clojure
lolopetit
 
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 à scala
SOAT
 
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 Hints
Darkmira
 
cour informatique niveau3 programmation en Python.pdf
cour informatique niveau3 programmation en  Python.pdfcour informatique niveau3 programmation en  Python.pdf
cour informatique niveau3 programmation en Python.pdf
Nanchi6
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
halleck45
 
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
Didier 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.4
Laurent BUNIET
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
Ahmed12314
 
compilation1-2020.pdf
compilation1-2020.pdfcompilation1-2020.pdf
compilation1-2020.pdf
aouatifelallaji
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
Rached Krim
 
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
Laurent Beauguitte
 

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

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
 
cour informatique niveau3 programmation en Python.pdf
cour informatique niveau3 programmation en  Python.pdfcour informatique niveau3 programmation en  Python.pdf
cour informatique niveau3 programmation en Python.pdf
 
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

SdE2 - Pilot Tock
SdE2 - Pilot TockSdE2 - Pilot Tock
SdE2 - Pilot Tock
Alexandru Radovici
 
SdE2 - Systèmes embarquées
SdE2 - Systèmes embarquéesSdE2 - Systèmes embarquées
SdE2 - Systèmes embarquées
Alexandru Radovici
 
SdE2 - Planification, IPC
SdE2 - Planification, IPCSdE2 - Planification, IPC
SdE2 - Planification, IPC
Alexandru Radovici
 
ALF1 - Introduction
ALF1 - IntroductionALF1 - Introduction
ALF1 - Introduction
Alexandru Radovici
 
SdE2 - Introduction
SdE2 - IntroductionSdE2 - Introduction
SdE2 - Introduction
Alexandru Radovici
 
MDAD 6 - AIDL and Services
MDAD 6 - AIDL and ServicesMDAD 6 - AIDL and Services
MDAD 6 - AIDL and Services
Alexandru Radovici
 
MDAD 5 - Threads
MDAD 5 - ThreadsMDAD 5 - Threads
MDAD 5 - Threads
Alexandru Radovici
 
MDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recyclingMDAD 4 - Lists, adapters and recycling
MDAD 4 - Lists, adapters and recycling
Alexandru Radovici
 
MDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI ApplicationsMDAD 3 - Basics of UI Applications
MDAD 3 - Basics of UI Applications
Alexandru Radovici
 
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
Alexandru Radovici
 
MDAD 1 - Hardware
MDAD 1 - HardwareMDAD 1 - Hardware
MDAD 1 - Hardware
Alexandru Radovici
 
MDAD 0 - Introduction
MDAD 0 - IntroductionMDAD 0 - Introduction
MDAD 0 - Introduction
Alexandru Radovici
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
Alexandru Radovici
 
SdE 10 - Threads
SdE 10 - ThreadsSdE 10 - Threads
SdE 10 - Threads
Alexandru Radovici
 
SdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de executionSdE 8 - Synchronisation de execution
SdE 8 - Synchronisation de execution
Alexandru Radovici
 
SdE 8 - Memoire Virtuelle
SdE 8 - Memoire VirtuelleSdE 8 - Memoire Virtuelle
SdE 8 - Memoire Virtuelle
Alexandru Radovici
 
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
Alexandru Radovici
 
SdE 6 - Planification
SdE 6 - PlanificationSdE 6 - Planification
SdE 6 - Planification
Alexandru Radovici
 
SdE 5 - Planification
SdE 5 - PlanificationSdE 5 - Planification
SdE 5 - Planification
Alexandru Radovici
 
SdE2 4 - Processus
SdE2 4 - ProcessusSdE2 4 - Processus
SdE2 4 - Processus
Alexandru Radovici
 

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

SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
Moukagni Evrard
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
Txaruka
 
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupeCours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Yuma91
 
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
IES Turina/Rodrigo/Itaca/Palomeras
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Formation
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
WarlockeTamagafk
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Oscar Smith
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
cristionobedi
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
MelDjobo
 
Système de gestion des fichiers de amine
Système de gestion des fichiers de amineSystème de gestion des fichiers de amine
Système de gestion des fichiers de amine
sewawillis
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
Friends of African Village Libraries
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
Txaruka
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
mrelmejri
 

Dernier (13)

SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
 
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupeCours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
 
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
Evaluación docentes "Un cielo, dos países: El camino de los descubrimientos"
 
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
M2i Webinar - « Participation Financière Obligatoire » et CPF : une opportuni...
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
 
Système de gestion des fichiers de amine
Système de gestion des fichiers de amineSystème de gestion des fichiers de amine
Système de gestion des fichiers de amine
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
 

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.