COMPILATOARE
1// # include " stdio.h "
2// int x = 10 ;
3// float f = 2.5f ;
4//fara "f" trimite in double
Un compilator are 2 etape:
are un analizor lexical
un analizor sintactic
Analizor lexical
cunoaste fel de fel de secvente de caractere consecutive, le recunoaste ca fiind tokeni (sau unitati atomice) exemplu:
intalneste
#, il recunoaste ca fiind tokenintalneste
define- tot tokengaseste, sa zicem ,
#includesi dupa ghilimea , dupa care gaseste un text si dupa iar ghilimea (#include "stdio.h") iar el va identifica tokenii din cuvinte el intelege semantica acestor tokeni, isi da seama ca e vorba despre o includere a acestui antet
Analizor sintactic
isi da seama ca e vorba de un string
trimiterea de la analizator sintactic la cel lexical se face cu ajutorul campurilor union
analizorul lexical isi va da sema care sunt substantive si care sunt adjective; el le trimite analizorului sintactic, iar daca acesta primeste subst, verb, subst, adj isi da seama de functia sintactica a acestora; le traduce in engleza in ordinea in care trebuie
ex: ana are mere rosii => ana has red apples
Analizoare:
lex (analizor lexical)
yacc (yet another compiler compiler)
bison(linux)