|
|
Начало на Zazz.info | За Zazz.info | За реклама | Връзка с редактора |
Страници
Търсене
Избрани сайтове
|
КомпилаторКомпилаторът (англ. compiler - от compile - съчетавам, съставям) е компютърна програма, която превежда (съставя, компилира) даден компютърен изходен код в семантично отговаряща програма (на друг компютърен език). Английското "съставям" е малко подвеждащо, тъй като компилаторът е повече от само съставяне на таблици, необходими за вътрешната обработка на данни. Стъпки на превежданеИма две основни фази при създаването на кода:
Аналитичната фазаНарича се също така предно стъпало (англ. Frontend). Лексикален анализИзходният код се разгражда на взаимно свързани градивни единици (англ. Token) от различни групи, напр. ключови думи, еднозначни определения (англ. Identifier), числа и задействащи символи (оператори от англ. Operator). Тази част на компилатора се нарича преведено речник (англ. Lexer) или описвач (англ. Scanner). Синтактичен анализПри тази стъпка се проверява дали използваните градивни единици са формално допустими, т.е. отговарят на зададената граматика за програмния език. За целта програмния код се превръща в синтактична дървовидна структура. Другото наименование на тази стъпка е преведено раздробвач (англ. Parser). Смислов (семантичен) анализСледващата стъпка е да се провери дали зададените програмни единици са логично свързани по между си (англ. Semantik (гр. значение)). Напр.
или пък дали
Синтезираща фазаНарича се също така задно стъпало (англ. Backend), където създадената синтактична дървовидна структура се превежда в крайния код. Създаване на междинен кодПри тази стъпка се създава междинен код, който по правило е близък до структурата на крайния език. Чрез него се и осъществява и подобрение на бързината на изпълнение (англ. Optimization). Това стъпало се използва и за изходна точка за създаване на код за различни операционни системи. ОптимизацияТова е най-сложната част от превеждането на програмите. Целта е
Окончателно създаване на кодПри таза стъпка се превежеда окончателно синтактичната дървовидна структура на програмата в крайния език. Ако крайният език е машинен език, създаденият код може директно да бъде изпълнен или пък се създава така наречения обектен файл (.obj), който чрез свързване (англ. linking) с други обектни файлове и (динамични) споделени библиотеки (централно място за често използвани функции в работен режим от различни програми) води до създаване на изпълним код. |