Upload
bachir-benyammi
View
500
Download
3
Embed Size (px)
Citation preview
Dirigé par: Mr.Allaoui TaherTravail Réalisé par :
BENYAMMI BACHIR & HASSANI Mustapha
4eme Année informatique cycle long
2006 - 2007
Ministère de l’Enseignement et de la Recherche Scientifique
UNIVERSITE AMAR TELIDJI
LAGHOUAT
FACULTE DES SCIENCES ET DE L’INGENIERIE
DEPARTEMENT DE GENIE INFORMATIQUE
Module Compilation
THÈME:
2
Plan du travail
Introduction.
Objectif.
Définition du Khawarizmi
Conclusion.
P
L
A
N
D
U
T
R
A
V
A
I
L
12/01/2016 Rélisation d'un interpréteur Khawarizmi
3
Introduction Les langages de programmation ont été nés
avec l’apparition des ordinateurs.
Les langages de programmation ont été fondus essentiellement pour effectuer les grands calculs.
La majorité des langages utilisent les lettres Anglo-Saxons pour définir l’ensemble des identifications.
Les messages d’erreurs sont exprimés en anglais.
I
N
T
R
O
D
U
C
T
I
O
N
12/01/2016 Rélisation d'un interpréteur Khawarizmi
4
Des dizaines du L.P arabes on été construites :
1978العراق –غريب
1981الكويت –بيسك
1986السودان –سينا
1996السعودية –باسكال العربي ال
...
La plupart de ces langages n’ont été pas réussites, parmi les causes on distingue :
Les différents codage des lettres arabes.
La faiblesse de la maintenance et de la mise à jour.
Les problèmes de financement.
L’existence des langages standards et puissants (Pascal, C++, JAVA, …).
I
N
T
R
O
D
U
C
T
I
O
N
Introduction (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Un langage de programmation en arabe
peut facilité la tâche aux élèves et aux lycéennes
à comprendre et à appliquer les principes et les
notions d’algorithmique et de la programmation.
L'idée est de développer un langage
destiner à l'enseignement qui combine à la fois la
facilité du Pascal (utilisation des mots naturels tel
que Program, Read, Write, ..) et l'abréviation du
C ({}, ||, &&, !, …).
5
I
N
T
R
O
D
U
C
T
I
O
N
Objectif
12/01/2016 Rélisation d'un interpréteur Khawarizmi
6
Interpréteur ...؟؟
Que ce qu’un interpréteur ?
Quelle est la lexique du Khawarizmi ?
Quelle est la syntaxe du Khawarizmi ?
Quelle est la structure du”Khawarizmi ?
INTRODUCTION
12/01/2016 Rélisation d'un interpréteur Khawarizmi
7
Interpréteur
Un interpréteur est un programme informatique qui
exécute lui-même les opérations spécifiées par le
programme source, il analyse une instruction puis
l’exécute immédiatement;
A l’inverse d’un compilateur, un interpréteur travaille
simultanément sur le programme et sur les données;
L’interpréteur doit être présent sur le système à chaque
fois que le programme est exécuté;
Exemples d’interpréteurs: BASIC, Perl, Prolog, LISP, …
C
O
M
P
L
A
T
E
U
R
12/01/2016 Rélisation d'un interpréteur Khawarizmi
9
Jeu de caractères
)(}{"Espace
/\:؛،.
»«#~<>
=+-*÷%
_A..Za..z0..9ي..ا
J
E
U
D
E
C
A
R
A
C
T
E
R
E
S
Les caractères autorisés dans un programme
écrit en ”Khawarizmi“ sont:
!|&
12/01/2016 Rélisation d'un interpréteur Khawarizmi
10
Unités lexicales « tokens »
1. Les mots réservés:
2. Les variables et les fixes:
Sont les identificateurs déclarés (ayant un type )
طبيعيصحيحتصريحبرنامج
نعمسلسلةرمزمنطقي
بينمااطبعاقراال
واالفاناذاقم
T
O
K
E
N
S
12/01/2016 Rélisation d'un interpréteur Khawarizmi
11
3. Les opérateurs:
Arithmétiques:
Conditionnels:
Logiques:
4. Les séparateurs:
=+-*÷%
~# <>»«
|&!
TOKENS
Espace " ( ) { }
/ \ : ؛ ، .
Unités lexicales (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
12
5. Identificateurs:
Lettres (arabes et français), chiffres et ‘_’.
Commençant obligatoirement par une lettre.
Pas de case sensitive.
Longueur max est de 64 caractères.
6. Nombres
Suites de chiffre entre 0 et 9.
Seulement les nombres entiers sont acceptés.
7. Commentaires
‘\\’ pour les commentaires d’une seule ligne.
‘\’ et ‘\’ pour les commentaires multi-lignes.
Pas d’imprécation dans les commentaires.
TOKENS
Unités lexicales (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Automates et expressions régulières
13
0 2
L | C
1L # de L et C
1
C
C2
# de C0
0‘"’ ‘"’
1 2
# de ‘"’
Ident -> Lettre (Lettre / Chiffre)* #
Nbr -> Chiffre (Chiffre)* #
Chaine -> '"' ( # )* '"'
AUTOMATES
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Automates et expressions régulières
(suite …)
14
AUTOMATES
Comm -> '\' '\' ( # )* EOL
Comm.multi -> '\' # ( # )* '\'
2
‘\’EOL 3
# de EOL
0‘\’
1
0 2‘\’ # de ‘\’ ‘\’
31
# de ‘\’
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Table de TransitionsEtat
\Sym
L C ‘’ Sep Opr Autres
_Initial _Ident _Nbr _Chaine _Sep _Opr _Erreur
_Ident _Ident _Ident _#Ident
_Nbr _Erreur _Nbr _#Nbr
_Chaine _Fin
_Chaine
_Chaine
_Slash _#Slash
_#Slash _#Slash
_#Eol _#EOL
_Carac _Carac _#Carac
16
TRANSITIONS
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Table de Transitions (suite …)Etat
\Sym
EOL Blanc \ / Autres
_Initial _Initial _Initial _Carac _Slash _Erreur
_Ident _#Ident
_Nbr _#Nbr
_Chaine _Chaine
_Slash _#EOL _#Slash
_#Slash _Muti
_Lignes
_Comm
_#Slash
_#Eol _Comm _#EOL
_Carac _#Carac
17
TRANSITIONS
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Table de symboles
18
N° Nom Intituler Valeur Unité Type
01 Prog برنامج 0 Mot Réservé Vide
02 Conste ثابت 0 Mot Réservé Vide
…… …………… ……… ……… ……….. ……
19 Opr_Addi + 0 Opérateur Vide
…… …………… ……… ……… ……….. ……
34 Parent_Ouvr ( 0 Séparateur Vide
…… …………… ……… ……… ……….. ……
43 Ident_1 Factorielle Identificateur Vide
44 Ident_2 أ 120 Variable Entier
45 Const_1 النتيجة النتيجة Constante Chaine
46 Ident_3 منعدم نعم Variable Logic
45 Ident_4 ن 10 Fixe Naturel
TABLE
SYMBOLS
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Chaine de références
19
N° Symbole Nom Intituler Ligne Colonne
1 1 Prog برنامج 1 6
2 43 Ident_1 محاولة 1 16
3 39 Point_Virgule ؛ 1 17
4 3 Variable متغير 2 5
5 44 Ident_2 أ 3 1
6 40 Deux_Point : 3 3
7 5 Entier صحيح 3 16
..... … … … … …
61 35 Accolade_Ferm { 13 1
62 37 Point . 14 1
CHINE
DE
REFERENCES
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Syntaxe
21
Programme = " برنامج " Ident "؛" Bloc ".".
ProgrammeProgramme IdentIdent ..BlocBloc
Bloc = [Partie_Declaration_Constantes]
[Partie_Declaration_Variables]
Bloc_Instructions.
Partie_Declaration_
Constantes
Partie_Declaration_
ConstantesBlocBloc Partie_Declaration_
Variables
Partie_Declaration_
Variables Bloc_InstructionsBloc_Instructions
S
Y
N
T
A
X
E
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Syntaxe (suite …)
22
Partie_Declaration_Constantes = " ثابت" Deffinition_Constante
{Deffinition_Constante}.
Partie_Declaration_
Constantes
Partie_Declaration_
Constantes Deffinition_ConstanteDeffinition_Constante
Partie_Declaration
_Variables
Partie_Declaration
_Variables Deffinition_
Variables
Deffinition_
Variables
Partie_Declaration_Variables = " متغير " Deffinition_Variables
{Deffinition_Variables}.
S
Y
N
T
A
X
E
12/01/2016 Rélisation d'un interpréteur Khawarizmi
23
Deffinition_Constante = Ident "=" Constant "؛".
Deffinition_
Constante
Deffinition_
Constante IdentIdent == Constant Constant
Constant = [Opr_Signe] Nombre | Chaine | "ال" | "نعم".
ConstantConstant Opr_SigneOpr_Signe NombreNombre
ChaineChaine
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
24
Deffinition_Variables = Idents ":" Type "؛".
Deffinition_
Variables
Deffinition_
Variables IdentsIdents :: TypeType
Idents = Ident {'،' Ident}.
IdentsIdents IdentIdent ' '
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
25
Bloc_Instructions = "}" Instructions "{".
Bloc_InstructionsBloc_Instructions }} InstructionsInstructions {{
Instructions = Instruction {"؛" Instruction}.
InstructionsInstructions InstructionInstruction
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
26
Instruction = [Lecture | Ecriture | Affectation |
Instruction_Conditionelle | Instuction_Repetition].
InstructionInstruction
LectureLectureEcritureEcriture AffectationAffectation Instruction_
Conditionelle
Instruction_
Conditionelle Instuction_
Repetition
Instuction_
Repetition
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
27
Lecture = " اقرا " ")" Idents "(".
LectureLecture IdentsIdents (())
Ecriture = " اطبع " ")" Idents "(".
EcritureEcriture IdentsIdents (())
Affectation = Ident "=" Expression.
Affectation Affectation IdentIdent == ExpressionExpression
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
28
Expression = Expression_Simple [Opr_Rel Expression_Simple].
ExpressionExpression Expression_
Simple
Expression_
Simple Opr_RelOpr_Rel
Expression_Simple = [Opr_Signe] Terme {Opr_Add Terme}.
Expression_
Simple
Expression_
Simple Opr_SigneOpr_Signe TermeTerme Opr_AddOpr_Add
Terme = Facteur
{Opr_Mul Facteur}.FacteurFacteur Opr_MulOpr_MulTermeTerme
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
29
FacteurFacteur
IdentIdentConstConst
ExpressionExpression
))
((
FacteurFacteur
!!
Facteur = Ident | Const | ")" Expression "(" | "!" " Facteur | " ال" | "نعم".S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
30
Instruction_Conditionelle = " اذا " Expression "فان"
Bloc_Instructions ["واال " Bloc_Instructions].
Instruction_Con
ditionelle
Instruction_Con
ditionelle Expression Expression
Bloc_InstructionsBloc_Instructions
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
31
Instuction_Repetition = " بينما " Expression " قم " Bloc_Instructions.
Instuction_Repe
tition
Instuction_Repe
tition Expression Expression Bloc_InstructionsBloc_Instructions
S
Y
N
T
A
X
E
Syntaxe (suite …)
12/01/2016 Rélisation d'un interpréteur Khawarizmi
33
Exemple d’un programmeالنونية؛_القوى_حساببرنامج
متغير
؛صحيح: ، عدد، أس من،
}
\Initialisation des variables\
؛1= ن
؛1= م
\Lecture des variables\
؛(عدد، أس )اقرا
\Calcul de la puissance\
قم( أس «ن )بينما
}
عدد؛* م= م
؛1+ ن= ن
؛}
\Affichage du résultat\
؛(م+ ” يساوي ”+ + أس + ” أس ” + عدد )اطبع
{.
E
X
E
M
P
L
E
12/01/2016 Rélisation d'un interpréteur Khawarizmi
34
C
O
M
P
I
L
A
T
I
O
N
Déroulement
de la
compilation
12/01/2016 Rélisation d'un interpréteur Khawarizmi
35
Elimination des blancs et des caractères de contrôles;
Elimination des commentaires;
Reconnaissance des mots réservés, des opérateurs,
des séparateurs;
Reconnaissance des identificateurs, constantes
(nombre, chaines de caractères);
Remplissage de la table des symboles et de la chaîne
de références;
Gestion des erreurs en parallèle.
Analyseur Lexical
L
E
X
I
C
A
L
12/01/2016 Rélisation d'un interpréteur Khawarizmi
36
Méthode d'analyse par la descente récursive;
Pour chaque non terminal, une procédure est associée;
L'analyse est faite par des appels récursifs aux
procédures;
Avancement lors de la reconnaissance des terminaux;
L'arbre syntaxique est construit au fur et à mesure de
l'analyse;
A la reconnaissance d'un terminal; un nœud est crée;
Une feuille est crée lors de la reconnaissance d'un
terminal;
Gestion des erreurs en parallèle.
Analyseur Syntaxique
S
Y
N
T
A
X
E
12/01/2016 Rélisation d'un interpréteur Khawarizmi
37
L'analyse est faite en parallèle avec l'analyse
syntaxique;
Déclaration des constantes et des variables;
Contrôle et conversion de types;
Affectation des types et des valeurs;
Evaluation des expressions;
Mise à jour de la table de symboles;
Gestion des erreurs;
Analyseur Sémantique
S
E
M
A
N
T
I
Q
U
E12/01/2016 Rélisation d'un interpréteur Khawarizmi
38
Erreurs Lexicales
Pas de texte source;
Caractère illégal ou code erroné;
Identificateurs erroné ou trop long;
Fin de commentaire attendu;
Erreurs Syntaxiques
Symbole attendu mais un autre est trouvé;
Erreurs Sémantiques
Type attendu mais un autre est trouvé;
Variable non déclaré;
Constante ne peut pas être affecter;
Opération interdit;
Division par zéro;
Gestion des erreurs
E
R
R
E
U
R
S
12/01/2016 Rélisation d'un interpréteur Khawarizmi
40
Avantages du KhawarizmiA
V
A
N
T
A
G
E
S
Au niveau de l‘utilisation:
Code source en arabe;
Lettres arabe et latins (plus de 60 lettres);
Chiffres et caractères spéciaux;
Déclaration des variables et des constantes;
Divers types simples (Entier, Naturel, Logique, Caractère, Chaîne);
Boucles et expressions conditionnelles;
Commentaires simples et multi-lignes;
Opérations arithmétiques, relationnelles, logiques, affectations, …
Lecture et écriture (Entrée-sortie);
Détection des erreurs avec possibilité de correction;
Au niveau du la programmation:
Organisation du programme en unités et classes;
Tableaux dynamiques;
Interface utilisateur;
Séparation entre l’interface et l’interpréteur;
12/01/2016 Rélisation d'un interpréteur Khawarizmi
41
IHMI
N
T
E
R
F
A
C
E
Ouverture et sauvegarde des fichiers à l'aide des boites de dialogue;
Coloration syntaxique des mots réservés;
Affichages des données (Table de symboles, chaîne de référence,
arbre syntaxique, …);
Insertion rapide des mots réservés, opérateurs, séparateurs et les
caractères ASCII;
Gestion des erreurs (nature, erreur, ligne, colonne, correction);
Consultation et enregistrement des erreurs;
Commandes standard (Couper, Copier, Coller, Impression,
Recherche, …);
Extension et icône particulier (.khw) aux fichiers source;
Menus, raccourcis clavier, aide, images, …;
Glisser et déposer;
Inclusion du Rapport, Présentation, Code source, Exemples;
12/01/2016 Rélisation d'un interpréteur Khawarizmi
Historique du Khawarizmi
12/01/2016 Rélisation d'un interpréteur Khawarizmi 42
Date Version Tâche
02-12-06 Automate union.
23-12-06 0.030 Analyse lexicale.
16-01-07 Grammaire du Khawarizmi.
28-03-07 0.050 Analyse syntaxique.
04-04-07 0.060 Arbre syntaxique.
08-05-07 0.080 Analyse sémantique.
01-06-07 0.096 Transformation des unités du
programme en classes.
H
I
S
T
O
R
I
Q
U
E
43
Problèmes rencontrés Faible support de la langue arabe dans le système d’exploitation;
Sens inverse de quelque caractères ( ‘}’, ‘{’, ‘)’, ‘(‘, ‘<’, ‘>’, …);
Outil de développement Borland Delphi 07 ne support pas les
caractères Unicode tel que (≤, ≥, ≠, ≈, …);
Saisie des lettres latins et arabes (orientation du texte);
Difficulté de traitement des boucles et le conditionnel
(pas de branchements et pas étiquettes);
Manque des ressource et d’outils au niveau de l’université
(Ouvrages, Documentation, PC, Internet, …);
P
R
O
B
L
E
M
E
S
12/01/2016 Rélisation d'un interpréteur Khawarizmi
44
Futur améliorations
Utilisation des procédures et des fonctions;
Ajout des types complexes tel que les réels et les tableaux;
Ajout d'autres types de boucles et d'expressions conditionnelles
(Répéter - jusqu’à, Pour faire fait, Cas de, …);
Réalisation de la 2éme partie du Interpréteur
(synthèse : génération et optimisation du code, …);
Réécriture du code par un langage orienté objet tel que JAVA;
Adaptation pour d'autres plateformes tel que : Linux, Unix, ..;
Support pour la langue arabe
(Interface, boite de dialogue, messages, …);
A
M
E
L
I
O
R
A
T
I
O
N
S12/01/2016 Rélisation d'un interpréteur Khawarizmi
45
Conclusion
La réalisation du Khawarizmi nous a aidés à
comprendre et à appliquer les différents techniques et
méthodes d’analyse, de la compilation et de la
programmation.
Le choix de la langue arabe à pour but d’encourager des informaticiens à exploité cette langue dans leurs systèmes d’information.
En fin, en remercie infiniment notre enseignent chargé
de cours monsieur ALLAOUI Taher pour son support, son
aide et son sollicitude durant toute l’année universitaire.
C
O
N
C
L
U
S
I
O
N
12/01/2016 Rélisation d'un interpréteur Khawarizmi