46
Dirigé par : Mr.Allaoui Taher Travail Réalisé par : BENYAMMI BACHIR & HASSANI Mustapha 4 eme 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:

Réalisation d’un interpréteur en langue Arabe - Khawarizmi

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

8

Lexique du Khawarizmi

D

E

F

I

N

I

T

I

O

N

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

Automate union

15

AUTOMATES

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

20

Syntaxe du Khawarizmi

S

Y

N

T

A

X

E

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

Arbre Syntaxique

32

ARBRE

SYNTAXIQUE 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

39

S

T

R

U

C

T

U

R

E

Structure du Khawarizmi

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

4612/01/2016 Rélisation d'un interpréteur Khawarizmi