View
61
Download
1
Category
Preview:
DESCRIPTION
Expressions sur les chaînes de caractères. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz. Chaînes de caractères : Objectif. On distingue les variables Chaîne de caractères ( CHAINE ) : tableau de caractères - PowerPoint PPT Presentation
Citation preview
Expressions sur les chaînes de caractères
Pr ZEGOUR DJAMEL EDDINE
Ecole Supérieure d’Informatique (ESI)
http://zegour.esi.dz/
email: d_zegour@esi.dz
Chaînes de caractères : Objectif
On distingue les variables
- Chaîne de caractères (CHAINE) : tableau de caractères
- Caractère (CAR) : un seul caractère
Une seule opération : + (concaténation)
Une expression peut contenir un mélange entre variable chaîne de caractères et caractères. Le résultat est toujours une chaîne de caractères
Le résultat de l’affectation dépend de la variable réceptrice
- si caractère : le résultat est tronqué à un seul caractère
Sémantique des expressions sur les chaînes de caractères: Quadruplés
B, C : pointeurs dans TABOB vers les opérandes
D : pointeur dans TABOB sur l’objet qui va contenir le résultat
‘+S’ désigne la concaténation
(‘+S’, B, C , D )
Chaînes de caractères : Déclarations
Sep dans {:, Un, Une, Des}
Cste désigne une constante numérique entière
Idf désigne un identificateur
Opr dans { <, <=, >, >=, =, <> };
Opa dans { +, -, Ou }
Opm dans { *, /, Et };
Sign dans {+, -};
Chaîne : chaîne de caractères
Chaînes de caractères : Déclarations
<Algo Z> [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;]
<Ps> <S>;{ [~Soit|Soient~] <S>;}*
<S> <Li>[Sep <Typ> ]
<Li> Idf {, Idf}*
<Typ> Entier | Booleen | Chaine | Car
Chaînes de caractères : Instructions
< Lis > < Inst > { ; < Inst > }*
<Inst> Idf := <Exp> |
Lire ( Idf {, Idf }* ) |
Ecrire (<Exp> {,<Exp>}* ) |
Chaînes de caractères : Expressions
<Exp> <Exps>[ Opr <Exps>]
<Exps> [Sign] <Terme> { Opa <Terme> }*
<Terme> <Facteur>{Opm <Facteur>}*
<Facteur> Idf | Cste | ( <Exp>) | Non <Facteur> |
Vrai | Faux |
Chaine
Sémantique des expression CC : déclarations
Pour chaque Identificateur déclaré comme CAR :
- Le mettre dans la table des symboles
- Lui attribuer une adresse relative et le mettre dans la table des objets (soit Pt son emplacement)
- Générer le quadruplé (‘DCC’+Type, Pt, , ) ou (‘DC’+Type, Pt, , )
Sémantique des expressions CC : Fonctions sémantiques
<Exp> <Exps>[ Opr <Exps>]
<Exps> <Terme>
{ Opa <Terme> }*
<Terme> <Facteur>{Opm <Facteur>}*
<Facteur> Idf | Cste | ( <Exp>) | Non <Facteur> |
Vrai | Faux | Chaine
F1
F2
F3
F4 F5
Sémantique des expressions CC : Fonctions sémantiques
F1
F2
Vérifier que l’identificateur Idf est déclaré, sinon Erreur. Soit Pt1 son emplacement dans TABOB. Retourner (Pt1)
Si la constante n’existe pas la mettre dans TABCONSCAR et TABOB. Soit Pt1 son emplacement dans TABOB. Retourner (Pt1)
<Facteur>
<Facteur> Idf | Cste | ( <Exp>)
Non <Facteur> | Vrai | Faux | chaine
F1
F2
Sémantique des expressions CC : Fonctions sémantiques
F3 Sauvegarder le résultat de <Terme> dans Temp1 (emplacement dans TABOB). Retourner (Temp1)
<Exps>
<Exps> <Terme> F3 { Opa <Terme> }* F4 F5
F4Sauvegarder l’opérateur dans une variable Op et le résultat de <Terme> dans Temp1 (emplacement dans TABOB)
Récupérer le résultat de <Terme> dans Temp2 (emplacement dans TABOB). Vérifier l’incompatibilité des types de Temp1 et Temp2. Générer une variable temporaire dans TABOB. Soit Ptx son emplacement dans TABOB.Générer le quadruplet (Op, Temp1, Temp2, Ptx). Retourner (Ptx).
F5
Sémantique des expressions CC : Exemple
Soit s, s2 des chaines; c un car;
debut
s := 'abc';s2 := 'xyz';c := 'd';
ecrire( s+ s2 + c);
fin
‘abc’
‘xyz’
‘d’
TABCONS
0
1
En fin de compilation, programme source = table des quadruplés + TABOB + TABCONS + LONGZDD
‘L’ ‘S’ 0
‘L’ ‘S’ 1
‘L’ ‘C’ 2
‘C’ ‘S’ 0
‘C’ ‘S’ 1
‘C’ ‘S’ 2
‘X’ ‘S’ 3
‘X’ ‘S’ 4
0
1
2
TABOB5
LONGZDD
3
4
Quadruplés pour l’expression
…
‘+S’ 0 1 6
‘+S’ 6 2 7
…
5
6
7
Recommended