Sunteți pe pagina 1din 2

2.4.

Expresii regulate

Să considerăm următorul exemplu în care folosim operaţiile cu limbaje definite în


§ 1.3:
Exemplul 2.4.1 Fie următoarele două alfabete:
L={A,B,…,Z,a,b,…,z}, alfabetul literelor mari şi mici
C={0,1,…,9}, alfabetul cifrelor din baza 10.
Cu aceste alfabete, pe care le putem chiar considera limbaje formate din cuvinte de
lungime 1, putem construi numeroase alte limbaje, cum ar fi:
(a) L  C = mulţimea literelor şi a cifrelor;
(b) LC = mulţimea cuvintelor de lungime 2, formate din o literă urmată de o cifră;
(c) L4 = mulţimea cuvintelor formate din exact patru litere;
(d) L* = mulţimea cuvintelor formate din oricâte litere (inclusiv cuvântul vid);
(e) L( L  C )* = mulţimea cuvintelor de lungime cel puţin 1, formate din litere şi
cifre, primul caracter fiind obligatoriu o literă;
(f) C+ = mulţimea şirurilor numerice formate din cel puţin o cifră.
Modul de reprezentare al limbajelor de mai sus sugerează un alt mod de descriere
al limbajelor de tip 3 şi anume cu ajutorul expresiilor regulate.
Definiţia 2.4.1 Se numeşte expresie regulată o expresie care poate fi construită cu
următoarele reguli:
1.  este o expresie regulată indicând mulţimea vidă.
2. λ este o expresie regulată indicând limbajul format doar din cuvântul vid,
{λ}.
3. Dacă a  VT , atunci a este o expresie regulată indicând limbajul format
dintr-un cuvânt de lungime 1, construit cu simbolul a şi anume limbajul {a}.
4. Dacă e1 şi e2 sunt expresii regulate indicând limbajele L1 şi L2, atunci
următoarele expresii sunt regulate:
a) Alternarea (e1)|(e2), indicând L1  L 2 ;
b) Concatenarea (e1)(e2), indicând L1  L 2 ;

c) Închiderea Kleene (e1*), indicând L1 .
Observaţia 2.4.1 Parantezele ( ) pot fi eliminate în următoarele cazuri:
({ }) = { }
(|) = |
(( )) = ( )
Observaţia 2.4.2
a) Operaţiile de alternare, |, concatenare, ., şi închidere, *, au precedenţa descrescând
de la cea mai mare ,  , la cea mai mică , | .
b) Toate operaţiile sunt asociative iar alternarea este şi comutativă.
Există un număr de reguli algebrice pentru expresii regulate care pot fi folosite pentru a
le transforma în alte expresii echivalente, conform tabelului următor.
Tabelul 2.4.1
Regulă Descriere
r|s=s|r Alternarea este comutativă
r|(s|t)=(r|s)|t Alternarea este asociativă
(rs)t=r(st) Concatenarea este asociativă
r(s|t)=(rs)|(rt) Concatenarea este distributivă la stânga
(s|t)r=(sr)|(tr) şi la dreapta faţă de alternare
λr=r Cuvântul vid este element neutru pentru concatenare
rλ=r
r*=(r|λ)*
r**=r* Idempotenţa închiderii (produs Kleene)
Operatorii folosiţi pentru scrierea expresiilor regulate sunt analogi cu forma BNF
de descriere a limbajelor (sunt simboluri ale metalimbajului).
Exemplul 2.4.2 Exemple de expresii regulate:
a) Expresia 110 reprezintă limbajul format dintr-un singur cuvânt {110}.
b) Expresia 0|1 reprezintă limbajul {0,1}.
c) Expresia 1* reprezintă limbajul {1i | i=0,1,2,…}.
a*b* reprezintă limbajul  a b m, n  0 ;
m n
d)
(ab)* reprezintă limbajul  (ab) m  0 ;
m
e)
f) (aa|ab|ba|bb)* reprezintă mulţimea şirurilor peste {a,b} de lungime pară.
Vom defini în continuare egalitatea a două expresii regulate.
Definiţia 2.4.3 Două expresii regulate sunt egale (=) sau echivalente dacă ele reprezintă
acelaşi limbaj.
Exemplul 2.4.4 00* = 000*|0 (ele reprezintă acelaşi limbaj, al şirurilor peste alfabetul
{0} formate din cel puţin un simbol 0).
Exemplul 2.4.5 Elementele unui limbaj de programare pot fi definite atât în termenii
gramaticilor regulate cât şi în cei ai expresiilor regulate. Spre exemplu, un identificator
format din litere mici şi cifre, începând cu o literă, poate fi descris de gramatica regulată
ale cărei reguli sunt:
S  aA | bA | cA | ... | zA | a | b | c | ... | z
A  aA | bA | cA | ... | zA | 0A | 1A | ... | 9A | a | b | c | ... | z | 0 | 1 | ... | 9

şi de expresia regulată:
(a|b|c| . . . |z) (a|b|c| . . . |z|0|1| . . . |9)*
Putem folosi <literă> pentru a scurta reprezentarea lui a | b | c | ... | z şi <cifră> pentru
0 | 1 | ... | 9 , expresia putând fi scrisă în acest caz astfel:
<literă>(<literă>|<cifră>* .

S-ar putea să vă placă și