Sunteți pe pagina 1din 18

Condiii examen

Este permis cu documentaie.


Documentaie nseamn carte, caiet sau foi legate cu numele i
prenumele scris pe prima pagin. Foile volante sunt considerate fiuici nu
documentaie.
Documentaia este individual. Nu se accept 2 studeni cu aceeai
documentaie.

01 Curs 05.10.2015
**************************
Importana domeniului Error: Reference source not found pag. 7
Ce este un compilator Error: Reference source not found pag. 11
Limbajele de programare Error: Reference source not found
pag. 3

**************************

02 Curs 12.10.2015
**************************
Descrierea sintaxei i semanticii unui limbaj Error:
Reference source not found pag. 3

Tipuri de gramatici folosite:


gramatici regulare (expresiilor regulare) n analiza lexical,
respectiv a gramaticilor independente de context n analiza
sintactic.
Gramatic BNF

Exemplu de gramatic (BNF) ce descrie un minilimbaj de programare:


<program> > begin <lista_de_instructiuni> end
<lista de instructiuni> > <instructiune> | <lista_de_instructiuni> <instructiune>
<instructiune> > <variabila> = <expresie>
Se refer doar la instruciuni de atribuire.
<variabila>

> LITERA | <variabila> LITERA | <variabila> | CIFRA

Variabil se refer la Identificator.


<expresie>

> <expresie> + <expresie>

| <expresie> <expresie>
| <variabila >
| NUMR
Aici apar dou tokenuri: LITERA i NUMR. Acestea pot la rndul lor s fie descrise prin
acelai mecanism:
LITERA > a | b | c | d | e | f | g | h | i | j | k | 1 | m | n | o | p | q | r | s | t | u | v | w | x | y | z
NUMR > < cifra > | NUMR < cifra >
<cifra> > 0|1|2|3|4|5|6|7|8|9

**************************

03 Curs 19.10.2015
**************************
1.3. Specificarea unui limbaj de programare

2.

ANALIZA LEXICAL 22

2.1. Detectare i clasificare

22

18

if (x==z) {x = y;}
Etapa de clasificare necesit ca fiecrui atom lexical s i se asocieze o singur clas de
apartenen. n cazul n care un atom nu poate fi asociat nici unei clase, adic nu respect condiiile
de apartenen la clasa respectiv, atunci analiza lexical se termin cu insucces: a fost detectat o
eroare lexical.
Algoritmul 2.1 Analiza lexical - versiunea 1
while (mai exist caractere necitite n surs) do
detectare (atom);
clasificare(atom);
codificare(atom)
end while

Clasele de atomi
Clasele de atomi corespunztoare oricrui limbaj de programare au menirea de a descrie toate
entitile importante dintr-un limbaj:

identificatori;

constante;

cuvinte rezervate (cuvinte cheie);

operatori;

separatori (delimitatori).

Pentru clasele cuvintelor rezervate, separatorilor i operatorilor se testeaz apartenena la


mulimea respectiv. Pentru clasele identificatorilor i constantelor este necesar s se verifice
respectarea criteriilor corespunztoare, care sunt descrise prin:

expresii regulare;

automate finite.

2.2. Codificare
Tabelul urmtor prezint o astfel de codificare parial. n realitate, fiecare atom lexical are un
cod ataat.

Tabel de coduri

Astfel

rezultatul

Atom

Cod

Identificato
r

Constant

==

10

11

12

13

14

15

16

if

17

else

18

for

19

while

20

do

21

...

...

analizei

lexicale,

numit

Forma

Intern

Programului (FIP), reprezint o secven de perechi, n care primul element


este codul corespunztor, iar al doilea element al perechii l reprezint
poziia

if (x==z) {x = y;}
Cod Atom
17
11
1
10
1
12
13
1
15
1
16
14

Poziie n TS
0
0
1
0
3
0
0
1
0
2
0
0

SUBIECT DE EXAMEN nr. 1


Se va da alt instruciune

if (x==z) {x = y;}

S se intocmeasc forma intern a programului (FIP)


2.3. Modelul analizorului lexical

27

Algoritmul 2.2 Analiza lexical - versiunea 2


INPUT: program surs., codificare
OUTPUT: FIP, TS, erori
while (mai exist caractere necitite n program surs) do detectare(atom);
if este cuvnt rezervat sau operator sau separator then genFIP(cod,0)
else
if este identificator then
indice := poz(atom,TS);
genFIP(codidentificator, indice);
else
if este constant then
indice := poz(atom,TS);
gcnFir(cod.constanta, indicc),
else

mesaj:Eroare lexicala la atomul:1, atom


end if
end if
end if
end while

**************************

04 Curs 26.10.2015
**************************

4. Expresii regulare Error: Reference source not


found
Notaii utilizate n gramatici:
a, b, c elemente terminale;

= {a, b, c} alfabet, mulime de elemente terminale,


u, v, x, y, z secven de elemnte terminale
w = secven de elemente terminale,

* = { u, v, x, y, z} mulimea secvenelor peste , secvene de simboluri terminale. O

secven de elemente terminale se numete propoziie (cuvnt).


N = {A, B, C} mulime de elemente neterminale;

{ , , } secven de elemente terminale i neterminale;


(N )* = { , , } mulimea secvenelor peste mulimea elementelor terminale reunite
cu mulimea elementelor neterminale. Secvenele de elemente terminale i neterminale se numesc
forme propoziionale.
A a, producie. Exemplu: numr binar 01101. O producie se mai noteaz
, P, i se nelege c dintr-o anumit secven se nlocuiete cu .

Gramatic
Definiie:
Ansamblul G = ( N, , P, S ) unde:

N este un alfabet de simboluri neterminale;


este un alfabet de simboluri terminale;
P este o mulime de finit de producii, P (N )* N (N )* (N )*;
S N simbolul iniial de start;
se numete gramatic.

Clasificarea gramaticilor. Ierarhia lui Chomsky

4. Expresii regulare Error: Reference source not


found 2

Teorem: 3
Soluia ecuaiei de forma X = X.a + b
este X = b.a*
Se d automatul finit urmtor, care reprezint o gramatic regular. S se calculeze expresia
regular corespunztoare.

Expresiile regulare ataate vrfurilor A, B i C sunt urmtoarele:


o A = + Cb
o B = Aa
o C = Ab + Bb + Ca
Valoarea definete starea A ca i stare iniial a automatului. Starea C este stare final a
automatului.
1

Error: Reference source not found. Error: Reference source not found
Error: Reference source not found. Error: Reference source not found
3
Error: Reference source not found. Error: Reference source not found
2

Rezolvarea sistemului de ecuaii regulare: 4


C = Ab + Bb + Ca = ( + Cb)b + Aab + Ca =
= ( + Cb)b + ( + Cb)ab + Ca =
= b + Cbb + ab + Cbab + Ca =
= b + ab + C(bb + bab + a) =
Rezult C = (b + ab)(bb + bab + a)*
Exemplu: 5

SUBIECT DE EXAMEN nr. 2.


Se va da un alt automat finit, care reprezint o gramatic regular.
S se calculeze expresia regular corespunztoare.
**************************

05 Curs 02.11.2015
**************************
SUBIECT DE EXAMEN S se explice forma regular a constantei
ntregi fr semn.
2.

Constant: ir de caractere care conine doar cifre, cu urmtoarele excepii:

primul caracter poate fi + sau n cazul constantelor cu semn;

poate conine caracterul . cel mult o dat, n cazul constantelor reale.

Prima cifr este nenul, exceptnd constanta 0 sau numerele subunitare, de exemplu 0.56.
Forma BNF a unei constante:
<cifra_nenula> > 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<cifra> > <cifra_nenula> | 0
<intreg> > <cifra_nenula> | <intreg><cifra>
n limbajul BNF nu am introdus <intreg> egal cu numrul 0.

Cum se poate realiza cu BNF numrul 0.


Forma BNF a unei constante:
<cifra_nenula> > 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<cifra> > <cifra_nenula> | 0
4
5

Error: Reference source not found. Error: Reference source not found
Error: Reference source not found. Error: Reference source not found

<intreg_fara_rezo> > <cifra_nenula> | <intreg_fara_rezo ><cifra>


<intreg> > <intreg_fara_rezo >| 0
n limbajul BNF am introdus numrul 0.
1. Constante ntregi fr semn:

automat finit pentru constante ntregi (fr semn)


Forma regular a unei constante:
cifra_nenula = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
cifra = cifra_nenula + 0
intreg = cifra_nenula + intreg.cifra
rezult
intreg = cifra_nenula.cifra*
sau
intreg = cifra_nenula.cifra* + "0"
n gramatica regular nu am introdus <intreg> egal cu numr format dintr-o singur cifr.
n mod asemntor putem construi un automat finit pentru constante ntregi (fr semn), ca
Figura 1:

Figura 1. Automat finit pentru constante ntregi fr semn.

Exemplu de gramatic (BNF) ce descrie un minilimbaj de programare:

<program> > begin <lista_de_instructiuni> end


<lista de instructiuni> > <instructiune> | <lista_de_instructiuni> <instructiune>

<instructiune> > <variabila> = <expresie>


Se refer doar la instruciuni de atribuire.
<variabila>

> LITERA | <variabila> LITERA | <variabila> CIFRA

Variabil se refer la Identificator.


<expresie>

> <expresie> + <expresie>

| <expresie> <expresie>
| <variabila >
| NUMR
Aici apar dou tokenuri: LITERA i NUMR. Acestea pot la rndul lor s fie descrise prin
acelai mecanism:
LITERA > a | b | c | d | e | f | g | h | i | j | k | 1 | m | n | o | p | q | r | s | t | u | v | w | x | y | z
NUMR > < cifra > | NUMR < cifra >
<cifra> > 0|1|2|3|4|5|6|7|8|9

SUBIECT DE EXAMEN
Un exemplu de program n minilimbajul de programare descris mai sus este urmtorul:
Se va da o alt secven de program.
gramatic (BNF) ce descrie un minilimbaj de programare
begin a = b + c; d = 5 a end
Compilatorul folosete doar atomi recunoscui de el.

begin ID = ID + ID; ID = INTREG ID end

derivare a acestui program n gramatica dat este (Pentru fiecare derivare s se scrie

producia corespunztoare):
<program>

=> begin <lista_de_instructiuni> end

(=> derivare)
<lista de instructiuni> > <lista_de_instructiuni> <instructiune>

(> producie)
=>

begin

<lista_de_instructiuni>; <instructiune> end

<lista de instructiuni> > <instructiune>


=>

begin

<instructiune>; <instructiune> end

<instructiune> > <variabila> = <expresie>

=>

begin

<variabila> = <expresie>; <instructiune> end

<variabila>
=>

begin

LITERA = <expresie>; <instructiune> end

<expresie>
=>

begin
begin
begin
begin
begin

> <variabila >

LITERA = LITERA + <variabila>; <instructiune> end

<variabila>
=>

> LITERA

LITERA = LITERA + <expresie>; <instructiune> end

<expresie>
=>

> <variabila >

LITERA = <variabila > + <expresie>; <instructiune> end

<variabila>
=>

> <expresie> + <expresie>

LITERA = <expresie> + <expresie>; <instructiune> end

<expresie>
=>

> LITERA

> LITERA

LITERA = LITERA + LITERA; <instructiune> end

<instructiune> > <variabila> = <expresie>


=>

begin

LITERA = LITERA + LITERA; <variabila> = <expresie> end

variabila>
=>

begin

LITERA = LITERA + LITERA; LITERA = <expresie> end

<expresie>
=>

begin
begin
begin
begin

> <variabila >

LITERA = LITERA + LITERA; LITERA = NUMAR < variabila > end

<variabila>
=>

> NUMR

LITERA = LITERA + LITERA; LITERA = NUMAR <expresie> end

<expresie>
=>

> <expresie> <expresie>

LITERA = LITERA + LITERA; LITERA = <expresie> <expresie> end

<expresie>
=>

> LITERA

> LITERA

LITERA = LITERA + LITERA; LITERA = NUMAR LITERA end

S se construiasc 2 tipuri de arbori.

SUBIECT DE EXAMEN nr. 3.


Un exemplu de program n minilimbajul de programare descris mai
sus este urmtorul:
d = 5 a . Se va da alt exemplu de program.
<program> => <instructiune>

(=> derivare)
<instructiune> > <variabila> = <expresie>

(> producie)
=>

<variabila> = <expresie>
<variabila>

=>

LITERA = <expresie> end


<expresie>

=>

> <variabila >

LITERA = NUMAR < variabila > end


<variabila>

=>

> NUMR

LITERA = NUMAR <expresie> end


<expresie>

=>

> <expresie> <expresie>

LITERA = <expresie> <expresie> end


<expresie>

=>

> LITERA

> LITERA

LITERA = NUMAR LITERA end

S se construiasc 2 tipuri de arbori.


**************************

06 Curs 09.11.2015
**************************
SUBIECT DE EXAMEN
Automat_finit_identificator
2. Identificator:
Identificator: ir de caractere care ncepe obligatoriu cu o liter, conine doar caractere
alfanumerice (litere sau cifre) i eventual unele caractere speciale (_, #), dar n mod
categoric nu spaiu.
Regula BNF pentru Identificator:
<cifra > > 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<litera> = A | B | ... | Z | a | b | ... | z
<special> = _ | #
<identificator> = <litera> | <identificator><litera> | <identificator><cifra> |
<identificator><special>
Gramatic regular pentru Identificator:
cifra = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
litera = A + B + ... + Z + a + b + ... + z
special = _ + #
identificator =litera (litera + cifra + special) *
(un identificator este o secven de caractere alfanumerice sau speciale, din care prima
este obligatoriu liter).

Identificator

Figura 2. Automat finit pentru identificatori.

3. Cuvinte rezervate:
Rezervat = if + else + for + do + ...

4. Operatori:
operator = + + + * + ... + < + > + == + ... + && + ! + |
+ ...
5. Separatori:
separator = ( + ) + { + } + ; + ...

1.4.

Tabela de simboluri

2.4.1. Tabele de dispersie


coliziune

adresare deschis;
nlnuire (sau zon auxiliar),
6

Error: Reference source not found. Error: Reference source not found pag. 30.

Subiecte de exmen
Tabele de dispersie cu nlnuire

Tabele de dispersie cu nlnuire


Exemplul 2.2. Presupunem c ntr-un program se ntlnesc urmtoarele nume simbolice
(n aceast ordine) iar valoarea funciei de dispersie asociate este cea din parantez:
Forma Intern a Programului (FIP) Se d i lungimea Tabelei de dispersie.
NODE (1), AN (3), FUNCTION (9), STORE (2), B (9), ADD (3), BRAN (9),
PARAMETER (9).

SUBIECT DE EXAMEN, nr. 4.


Se va da o alt Form Intern a Programului i
lungimea Tabelei de dispersie.
S se ntocmeasc cele dou tabele de dispersie.
**************************

07 Curs 16.11.2015
**************************
3.1. Analizor sintactic descendent cu reveniri

46

**************************

08 Curs 23.11.2015
**************************

3. Automate finite7
Mulimea configuraiilor

(q, w) este o configuraie


tranziia
(p, aw) (q, w)
Configuraia (q0, w) se numete configuraie iniial, iar (q,
), q F se numete configuraie final.
3.1.1.
reveniri

Modelul analizorului sintactic descendent cu


498

Automatul push-down corespunztor analizorului sintactic descendent cu


reveniri poate fi caracterizat de urmtoarea

(s, i, , )

configuraie [er87):

Expandare
Avans
Revenire
Alt ncercare
Succes
7
8

Error: Reference source not found. Error: Reference source not found
Error: Reference source not found. Error: Reference source not found pag. 49.

**************************

09 Curs 30.11.2015
**************************
Sfntul Andrei
zi liber

**************************

10 Curs 07.12.2015
**************************

**************************

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