Limbaje Formale și Translatoare

Curs
7/10 (2 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 78 în total
Cuvinte : 28497
Mărime: 327.61KB (arhivat)
Cost: Gratis
Profesor îndrumător / Prezentat Profesorului: Ecaterina Vladu
Cursul intreg pentru sectia Calculatoare: la materia LIMBAJE FORMALE SI TRANSLATOARE.

Extras din document

1. Introducere Curs1 LFT

Limbajele de nivel înalt au o serie de avantaje în raport cu limbajele de asamblare. Pentru a putea însă folosi limbaje de nivel înalt, trebuie să existe posibilitatea de a converti programele scrise în aceste limbaje într-o formă binară. Această necesitate a dus la dezvoltarea translatoarelor sau compilatoarelor – programe care acceptă o reprezentare textuală a unui algoritm exprimat printr-un program sursă şi care produc o reprezentare a aceluiaşi algoritm exprimat într-un alt limbaj, limbajul obiect sau un limbaj echivalent.

Translatorul este deci un program care traduce programele scrise de utilizator (într-un limbaj) în programe echivalente (într-un alt limbaj). Dacă acestea din urmă sunt programe în cod maşină sau un limbaj apropiat de limbajul calculatorului, translatorul se numeşte compilator.

Programul utilizatorului se numeşte program sursă, iar programul în cod maşină obţinut se numeşte program obiect. Între cele două programe trebuie să existe o relaţie de echivalenţă în ceea ce priveşte efectul lor asupra calculatorului.

Execuţia unui program în limbaj simbolic are loc în două faze:

Faza 1. Compilarea: Program sursă  Compilator  Program obiect

Faza 2. Execuţia propriu-zisă: Date iniţiale ale programului  Program obiect  Rezultate

În faza de translatare, calculatorul execută programul compilator, iar în faza de execuţie propriu-zisă, calculatorul execută programul obiect, adică citirea datelor iniţiale, prelucrarea lor şi memorarea sau tipărirea rezultatelor.

Pentru scrierea unui compilator, trebuiesc foarte bine definite atât limbajul sursă, cât şi limbajul ţintă. Aceasta înseamnă că ambele limbaje trebuie să fie formale.

Un limbaj are două aspecte: sintaxă şi semantică. Sintaxa stabileşte care text este corect din punct de vedere gramatical, iar semantica stabileşte modul în care se derivă semnificaţia unui text corect din punct de vedere gramatical.

Există numeroase formalisme şi instrumente software pentru descrierea sintaxei unui limbaj formal. Pentru descrierea semanticii însă, formalismele şi instrumentele existente nu sunt atât de simple şi uşor de utilizat ca şi specificaţiile de sintaxă.

2. Clasificarea şi structura translatoarelor

Un translator poate fi definit formal ca o funcţie având domeniul de definiţie limbajul sursă şi mulţimea valorilor funcţiei limbajul obiect sau un limbaj echivalent (destinaţie).

În dezvoltarea translatoarelor, sunt implicate cel puţin trei limbaje: limbajul sursă de translatat, limbajul obiect sau destinaţie şi limbajul gazdă folosit la implementarea translatorului. Dacă translatarea are loc în mai multe etape, pot exista şi alte limbaje intermediare. Desigur, limbajul gazdă şi limbajul obiect nu sunt cunoscute de utilizatorul limbajului sursă.

2.1. Diagrame T

Pentru descrierea programelor şi în particular a compilatoarelor, există o reprezentare schematică consacrată, numită diagramă T, introdusă de Bratman în 1961.

O diagramă T pentru un program general este de forma:

O diagramă T pentru un translator general este de forma:

2.2. Clasificarea translatoarelor.

- Asamblorul. Termenul de asamblor este asociat cu translatoarele care transformă instrucţiuni scrise în limbaj de nivel coborât în cod maşină, care poate fi executat direct. De obicei liniile individuale ale programului sursă corespund cu o instrucţiune la nivel maşină. Rolul asamblorului este deci să convertească reprezentările simbolice ale instrucţiunilor în configuraţii de biţi, reprezentând echivalentele în cod-maşină ale instrucţiunilor.

- Macroasamblorul este un asamblor care permite utilizarea macrodefiniţiilor. El utilizează o primă trecere şi pentru colectarea macrodefiniţiilor.

Rezultatul asamblării este un text în formă binară în care doar referinţele externe sunt păstrate în formă simbolică în tabele asociate secţiunilor. Codul binar al secţiunilor este însoţit de informaţii ce indică locul referinţelor relocabile pentru ca, în momentul încărcării, valorile acestora să se poată transforma în referinţe absolute.

Combinarea acestor secţiuni într-un program executabil se face prin rezolvarea referinţelor externe (înlocuirea numelor simbolice cu adrese de memorie) şi adăugarea eventual a rutinelor din bibliotecile standard, şi ele păstrate sub formă relocabilă. Aceste operaţii sunt deobicei făcute de un editor de legături ( linkage editor). Programul furnizat de acesta este adus în memorie de încărcător (loader).

- Compilatorul este de obicei un translator care traduce instrucţiuni de nivel înalt în cod maşină, care poate fi executat direct. Liniile individuale din programul sursă corespund de obicei cu mai multe instrucţiuni la nivel maşină.

- Preprocesorul este un translator care traduce dintr-un superset al unui limbaj de nivel înalt în limbajul de nivel înalt original, sau care face simple substituiri de text înainea procesului de translatare propriu-zis. De exemplu, există numeroase preprocesoare de FORTRAN structurat care traduc din versiuni structurate ale FORTRAN-ului în FORTRAN obişnuit.

- Translatorul de nivel înalt este un translator care traduce un limbaj de nivel înalt într-un alt limbaj de nivel înalt, pentru care există deja compilatoare sofisticate pentru un număr mare de maşini.

- Interpretorul este un program care, primind un program sursă, îl prelucrează în prealabil pentru a-l aduce într-o formă mai simplă, după care îl execută simulând execuţia în limbaj sursă. Forma intermediară executată de de interpretor este de fapt un alt limbaj mai simplu, mai apropiat de limbajele de asamblare. Principalul avantaj al folosirii unui interpretor este portabilitatea foarte simplă a unui limbaj, prin implementarea maşinii virtuale pe un nou hardware. În plus, deoarece instrucţiunile sunt interpretate şi executate în timpul rulării, pot fi implementate limbaje foarte flexibile.

- Compilatoarele incrementale îmbină calităţile compilatoarelor cu cele ale interpretoarelor. Programul sursă este divizat de compilator în mici porţiuni numite incremente. Acestea prezintă o oarecare independenţă sintactică şi semantică faţă de restul programului. Incrementele sunt traduse de compilator. Execuţia are loc interpretativ, permiţându-se intervenţia utilizatorului atât în timpul compilării cât şi în timpul execuţiei.

- Decompilatorul sau dezasamblorul sunt tremeni care se referă la translatoare care au ca intrare un cod obiect şi regenerează codul sursă într-un limbaj de nivel mai înalt. În timp ce acest lucru se poate realiza destul de bine pentru limbaje de asamblare, este mult mai dificil de implementat pentru limbaje de nivel înalt cum ar fi C, Pascal.

Preview document

Limbaje Formale și Translatoare - Pagina 1
Limbaje Formale și Translatoare - Pagina 2
Limbaje Formale și Translatoare - Pagina 3
Limbaje Formale și Translatoare - Pagina 4
Limbaje Formale și Translatoare - Pagina 5
Limbaje Formale și Translatoare - Pagina 6
Limbaje Formale și Translatoare - Pagina 7
Limbaje Formale și Translatoare - Pagina 8
Limbaje Formale și Translatoare - Pagina 9
Limbaje Formale și Translatoare - Pagina 10
Limbaje Formale și Translatoare - Pagina 11
Limbaje Formale și Translatoare - Pagina 12
Limbaje Formale și Translatoare - Pagina 13
Limbaje Formale și Translatoare - Pagina 14
Limbaje Formale și Translatoare - Pagina 15
Limbaje Formale și Translatoare - Pagina 16
Limbaje Formale și Translatoare - Pagina 17
Limbaje Formale și Translatoare - Pagina 18
Limbaje Formale și Translatoare - Pagina 19
Limbaje Formale și Translatoare - Pagina 20
Limbaje Formale și Translatoare - Pagina 21
Limbaje Formale și Translatoare - Pagina 22
Limbaje Formale și Translatoare - Pagina 23
Limbaje Formale și Translatoare - Pagina 24
Limbaje Formale și Translatoare - Pagina 25
Limbaje Formale și Translatoare - Pagina 26
Limbaje Formale și Translatoare - Pagina 27
Limbaje Formale și Translatoare - Pagina 28
Limbaje Formale și Translatoare - Pagina 29
Limbaje Formale și Translatoare - Pagina 30
Limbaje Formale și Translatoare - Pagina 31
Limbaje Formale și Translatoare - Pagina 32
Limbaje Formale și Translatoare - Pagina 33
Limbaje Formale și Translatoare - Pagina 34
Limbaje Formale și Translatoare - Pagina 35
Limbaje Formale și Translatoare - Pagina 36
Limbaje Formale și Translatoare - Pagina 37
Limbaje Formale și Translatoare - Pagina 38
Limbaje Formale și Translatoare - Pagina 39
Limbaje Formale și Translatoare - Pagina 40
Limbaje Formale și Translatoare - Pagina 41
Limbaje Formale și Translatoare - Pagina 42
Limbaje Formale și Translatoare - Pagina 43
Limbaje Formale și Translatoare - Pagina 44
Limbaje Formale și Translatoare - Pagina 45
Limbaje Formale și Translatoare - Pagina 46
Limbaje Formale și Translatoare - Pagina 47
Limbaje Formale și Translatoare - Pagina 48
Limbaje Formale și Translatoare - Pagina 49
Limbaje Formale și Translatoare - Pagina 50
Limbaje Formale și Translatoare - Pagina 51
Limbaje Formale și Translatoare - Pagina 52
Limbaje Formale și Translatoare - Pagina 53
Limbaje Formale și Translatoare - Pagina 54
Limbaje Formale și Translatoare - Pagina 55
Limbaje Formale și Translatoare - Pagina 56
Limbaje Formale și Translatoare - Pagina 57
Limbaje Formale și Translatoare - Pagina 58
Limbaje Formale și Translatoare - Pagina 59
Limbaje Formale și Translatoare - Pagina 60
Limbaje Formale și Translatoare - Pagina 61
Limbaje Formale și Translatoare - Pagina 62
Limbaje Formale și Translatoare - Pagina 63
Limbaje Formale și Translatoare - Pagina 64
Limbaje Formale și Translatoare - Pagina 65
Limbaje Formale și Translatoare - Pagina 66
Limbaje Formale și Translatoare - Pagina 67
Limbaje Formale și Translatoare - Pagina 68
Limbaje Formale și Translatoare - Pagina 69
Limbaje Formale și Translatoare - Pagina 70
Limbaje Formale și Translatoare - Pagina 71
Limbaje Formale și Translatoare - Pagina 72
Limbaje Formale și Translatoare - Pagina 73
Limbaje Formale și Translatoare - Pagina 74
Limbaje Formale și Translatoare - Pagina 75
Limbaje Formale și Translatoare - Pagina 76
Limbaje Formale și Translatoare - Pagina 77
Limbaje Formale și Translatoare - Pagina 78

Conținut arhivă zip

  • Limbaje Formale si Translatoare.doc

Alții au mai descărcat și

Medii de Programare Vizuala (JAVA) - Evidenta Autovehiculelor Inmatriculate

1. Enuntul temei: Sa se realizeze un proiect pentru evidenta autovehiculelor inmatriculate in circulatie. Pentru fiecare autoturism se considera...

Baze de Date - Gestionarea Cartilor intr-o Biblioteca

1 Introducere Trebuie menţionat faptul că lucrarea de faţă îşi propune înainte de toate să identifice cele mai importante aspecte şi probleme ale...

Sistemul Dinamic de Rutare a Pachetelor

CAPITOLUL 1 PREZENTARE GENERALĂ Această secţiune prezintă o imagine de ansamblu asupra sistemului dinamic de rutare a pachetelor (DPRS) şi...

Probleme Rezolvate Oracle

I. SISTEME DE GESTIUNE A BAZELOR DE DATE 1. Facultăţi Se dă următoarea structură de fişier: Denumire C,20 (Denumirea facultăţii) Localitate...

Subsistem Informatic Privind Evidența Fondului de Cărți în Bibliotecă

INTRODUCERE J. C. Levinson sublinia că cei care studiază “cu asiduitate proprii clienţi, clienţii concurenţei şi clienţii întregului lor domeniu...

Sistem Informatic pentru Gestiunea unei Librarii

I. Prezentarea sistemului informatic I.1. Descrierea generală a sistemului informatic Scopul aplicației ce urmează a fi proiectată este acela de...

AutoCad

APERTURE - controleazã mãrimea cursorului selector, caracteristic modului object snap. ARC - traseazã un arc de cerc de orice dimensiune. A -...

Biblioteca de Șabloane Standard

Biblioteca de Sabloane Standard (STL) asigura o abstractizare standardizata a datelor prin intermediul containerelor si o abstractizare procedurala...

Ai nevoie de altceva?