Extras din proiect
Scopul lucrarii:
1. În descrierea neformală a unui limbaj dată să se evidenţieze lexemele. Pentru fiecare tip de lexemă să se construiască un automat finit, care acceptă lexeme corecte.
2. Determinaţi dacă automatele construite sunt deterministe.
3. Dacă automatul finit nu este detrminist, să se construiască pentru el un automat finit determinist echivalent.
4. Construiţi schema analizatorului lexical pentru limbajul dat.
5. Testaţi lucrul analizatorului lexical pe 5 şiruri de intrare corecte şi 3 şiruri, care conţin lexeme incorecte sau simboluri neacceptate de limbaj, construind pentru aceste şiruri:
- Vectorul sintaxic;
- Vectorul semantic;
- Completarea tabelului pentru fiecare tip de lexemă.
6. Elaboraţi un program pentru analizatorul lexical şi demonstraţi lucrul programului pentru şirurile de intrare construite.
Sarcina lucrarii
. Se examinează un limbaj simplu de programare, obţinut din limbajul ALGOL-68.
<program> → BEGIN <consecutivitate de descrieri> ;
<consecutivitate de instrucţiuni>
END
<consecutivitate de descrieri> → <descriere>
<consecutivitate de descrieri> → <descriere>, <consecutivitate de descrieri>
<descriere> → <tip><listă de identificatori>
<tip> → BOOL
<tip> → INT
<tip> → REF<tip>
<listă de identificatori> → <identificator >
<listă de identificatori> → <identificator>,<listă de identificatori>
<consecutivitate de instrucţiuni> → <instrucţiune>
<consecutivitate de instrucţiuni> → <instrucţiune>; <consecutivitate de instrucţiuni>
<instrucţiune> → <instrucţiune de atribuire>
<instrucţiune> → <instrucţiune IF> |
<instrucţiune> → <instrucţiune WHILE>
<instrucţiune de atribuire> → <identificator>:=<expresie>
< instrucţiune IF> → IF <expresie> THEN <consecutivitate de instrucţiuni> FI
< instrucţiune IF> → IF <expresie> THEN <consecutivitate de instrucţiuni > ELSE
<consecutivitate de instrucţiuni> FI
<instrucţiune WHILE> → WHILE<expresie> DO
<consecutivitate de instrucţiuni>
END
Gramatica: G = {VN,VT,P ,S }
VN= {P,A,B,C,T,L,I,N,R,F,W,E }
VT = {begin,bool,int,ref,end, ; , , , :=, then,else,if,while,fi,do }
P={ 1.P->begin A;B end
2.A->C,A
3.C->TL
4.T->bool
5.T->int
6.T->ref T
7.L->I
8.L->I,L
9.B->N
10.B->N,B
11.N->R
12.N->F
13.N->W
14.R->F:=E
15.F->if E then B fi
16.F->if E then B else B fi
17.W->while E do B}
1. Tabelul şi codul lexemelor pentru limbajul dat:
LEXEMA COD
begin 0
end 1
bool 2
int 3
ref 4
:= 5
if 6
while 7
then 8
else 9
do 10
fi 11
<identificator> 12
<expresie> 13
Automatele finite, care acceptă lexeme corecte pentru identificatori,expresii , сuvinte auxiliare:
AF pentru cuvinte auxiliare (determinist).
Preview document
Conținut arhivă zip
- Analizatorul Lexical.CPP
- Analizatorul Lexical.doc