Analiza sintactica
extrage componentele gramaticale ale codului sursa si constuieste arborele de derivare (parse tree)
identifica atomii lexicali si le asociaza o valoare unica
identifica atomii lexicali si le asociaza valoarea preluata din aplicatia care se compileaza
genereaza codul executabil al aplicatiei analizate
T* reprezinta
concatenarea tuturor sirurilor din multimea T
multimea tuturor sirurilor din T
multimea vida
multimea tuturor sirurilor finite din T
Optimizarea codului reprezinta
o etapa a asezarii in pagina a programului scris
o caracteristica a IDE-ului care se executa pentru reducerea amprentei de memorie a programului
o etapa a decompilatorului
o etapa a compilatorului
Care din urmatoarele faze nu fac parte din structura unui compilator
JIT(just-in-time)
gestionarea tabelei de simboluri
analiza sintactica
analiza lexicala
In teoria limbajelor formale, "<b>*</b>" reprezinta
operatorul Kleene
operatorul concatenare
operatorul de multiplicare
pointer
Un program translator este:
un program care converteste programele scrise de utilizatori intr-un limbaj de programare in alt limbaj de programare
un program care converteste programele scrise de utilizatori intr-un limbaj accesibil calculatorului (cod-masina)
o componenta a sistemului de operare care incarca fisierele binare in memoria sistemului
o componenta a sistemului de operare care compileaza modulele progamului utilizator
Daca masina destinatie(cea pentru care compilatorul trebuie sa genereze cod) poate sa difere de masina-sursa (cea pe care se executa compilatorul), procesul se numeste
bytecode compiling
cross-compiling
just-in-time compiling
revenire din eroare a programului
Gramatica reprezinta
o descriere precisa a unui limbaj, definita cu ajutorul unui alfabet
setul de caractere utilizat pentru definirea operatorilor pe multimile finite de simboluri
setul de caractere utilizat pentru implementarea unui alfabet
o descriere a regulilelor de derivare pentru un limbaj dat
O expresie regulata este
un identificator numeric
o secventa de caractere cu rol de sablon(pattern)
o variabila
un tip de instructie
Atomii lexicali sunt caracterizati prin
constanta de memorie
tip si valoare
cantitatea de memorie ocupata
lungime (nr. de caractere)
Arborele de derivare este
reprezentarea grafica a unei secvente de derivari
reprezentarea regulilor de derivare utilizant operatorul Kleene
reprezentarea grafica a unei reguli de productie
reprezentarea interna a starii unui program
Limbajul unei gramatici formale va defini
toate sirurile care pot fi generate cu simbolul de start dat si aplicand regulile de productie specificate, pana la epuizarea tuturor simbolurilor neterminate
tipul de simboluri care pot fi utilizate in cadrul acelei gramatici(terminale sau non-terminale)
atat alfabetul cat si cuvintele-cheie necesare descrierii unui limbaj formal
alfabetul necesar descrierii unui limbaj formal
In definirea gramaticilor P din tupla G(N,T,P,S) reprezinta
setul finit de reguli de productie
tipul limbajului de programare pe care se bazeaza respectiva gramatica
multimea nula
Compilatorul este
o aplicatie software care translateaza un program scris intr un limbaj de programare intr-o forma executabila de catre calculator
o aplicatie software care interactioneaza cu memoria sistemului pentru a determina arhitectura acestuia (32/64 biti)
o aplicatie software rezidenta in memoria care executa instructiuni preluate de la utilizator, scrise intr-un limbaj de programare de nivel inalt
o aplicatie software care incarca in memorie un program scris intr-un limbaj de nivel inalt
"Revenirea din eroare" semnifica
tratarea erorilor detectate si continuarea procesului de compilare(daca e posibil)
afisarea codului de eroare pentru eroarea curenta detectata in codul sursa
oprirea executiei unui program care s-a blocat prin utilizarea combinatiei de taste "Ctrl+c"
resetarea memoriei sistemului
Outputul unui compilator consta din
fisier(e)-obiect sau erori
un fisier c/c++
un fisier executabil
un scanner de stringuri
Un alfabet reprezinta
o multime finita de simboluri(caractere si cifre)
o baza de numeratie
literele(fara semnele speciale) ce se pot utiliza pentru a scrie un program
caracterele ASCII de baza ce se pot utiliza pentru a scrie un progam
Identificatorii utilizati in programul-sursa sunt stocati
in tabela de simboluri
nu sunt stocati, ci elimnati imediat dupa cifre
in macrouri
in memoria swap
In definirea gramaticilor S din tupla G(N,T,P,S) reprezinta
simbol de start pentru gramatica
multimea de simboluri ce vor fi utilizate in gramatica, inclusiv multimea vida
multimea de simboluri ce vor fi utilizate in gramatica
simbol de stop pentru gramatica
O gramatica specifica
setul de siruri ce pot fi considerate ca fiind cuvinte sau declaratii valide in limbajul respectiv
setul de operatiuni ce se pot efectua asupra unui limbaj
caracterele utilizate pentru descrierea unui limbaj
setul de operatiuni ce se pot efectua asupra unui alfabet
O gramatica se poate utiliza pentru
determinarea apartenentei unui sir la un limbaj dat
determinarea apartenentei unui caracter din alfabet la un limbaj dat
generarea de noi alfabete finite, mai avansate
generarea de noi alfabete, mai avansate
Arborele de derivare se poate construi
top-down sau bottom-up
circular
right-to-left
left-to-right
Iesirea analizatorului lexical consta din
un sir de atomi lexicali
un program executabil
un sir de perechi cheie-valoare
un sir de valori numerice ce descriu instructiunile din codul-surs
Expresiile regulate permit
extragerea tuturor subsirurilor care au aceeasi structura cu sablonul definit
detectia pozitiei tuturor subsirurilor identificate, identice cu subsirul cautat
detectia pozitiei tuturor subsirurilor identificate ce au aceeasi lungime ca substringul cautat
analiza lexicala a unui program