Você está na página 1de 2

Departamento de Eletrnica da Universidade Tecnolgica Federal do Paran

Prof. Bertoldo Schneider Jr.


Resumo sobre o conceito de Compilao

Quando se fala em programas, geralmente se est falando dos cdigos-
fonte escritos em linguagens de programao de alto nvel, i.e., com um nvel
de abstrao muito grande, mais prximo do modo de pensar de nosso crebro
do que das mquinas. Em oposio, um cdigo objeto ou cdigo executvel
um cdigo feito numa linguagem de baixo nvel de abstrao, muito mais prxima
do modo de funcionamento das mquinas do que do raciocnio humano.
Quando se fala em programao, existem duas maneiras de se
transformar um programa escrito em uma linguagem de programao qualquer
em um cdigo capaz de ser executado por um dispositivo computacional. Uma
delas atravs de um compilador, que gera um cdigo executvel que pode ser
executado a qualquer momento por determinada arquitetura. A outra atravs do
interpretador, onde o cdigo-fonte geralmente interpretado e executado (linha a
linha, conforme vai executando) somente no instante em que se precisa do
mesmo. Existem compiladores que compilam somente quando o cdigo fonte
chamado, processo facilmente confundvel com o interpretador. O C e o C++ so
linguagem compiladas enquanto o Javascript e o C# so interpretadas.

Um compilador um programa que transforma um cdigo fonte (cdigo
escrito em uma linguagem de programao) em um outro cdigo, chamado
cdigo objeto, para uma determinada arquitetura (hardware especfico ou
genrico). Para fazer isso, o compilador atravessa algumas etapas definidas,
como:

1.- Identificao de Tokens: Tokens (estruturas de retorno: Um token uma
seqncia de um ou mais caracteres (caracter, segmento de texto ou smbolo) que
possuem um significado (absoluto ou relativo ao contexto: por exemplo, o * tem
um significado quando operador unrio e outro quando binrio) conhecido (por
um parser) dentro da gramtica da linguagem utilizada.

2- Anlise: O objetivo da anlise entender o cdigo fonte e represent-lo em
uma forma intermediria, fornecendo todos os subsdios necessrios para a
sntese e pode ser subdividida ainda em anlise lxica, anlise sinttica e anlise
semntica.
2.1.- Anlise lxica: A anlise lxica transforma o cdigo fonte em uma seqncia
de smbolos lxicos (lexical tokens) para que o compilador possa manipul-los
mais facilmente. Ela tambm verifica se todos os tokens so reconhecveis, i.e., se
pertencem linguagem ou foram construdos conforme as regras gramaticais da
mesma ( nesta fase que so detectados strings que foram mal escritos como por
exemplo, quando se troca printf por print em linguagem C.

O analisador lxico funciona em dois estgios: No primeiro estgio, os caracteres
so lidos um a um e reconhecidos (ou no) para formarem o conjunto lxico do
programa. No segundo estgio, cada lxico valorado e tipificado, i.e., cada
elemento recebe valor e tipo (ou demais atributos), quando passam a constituir um
smbolo (nesta etapa, parnteses no tm valor algum e no retornam nada nesta
Departamento de Eletrnica da Universidade Tecnolgica Federal do Paran
Prof. Bertoldo Schneider Jr.
anlise). Neste ponto, os tokens so renomeados apropriadamente, aumentando a
eficincia da programao, e o analisador passa a fase da anlise sinttica. Este
processo um dos mais demorados da compilao.

2.2.- Anlise sinttica: O analisador sinttico que d significado s seqncias
de tokens, analisando a relao entre os mesmos dentro de cada declarao
(frase). Logo aps, o compilador procede a anlise semntica.

2.3.- Anlise semntica: A anlise semntica, terceira fase da compilao,
onde se analisa o significado de cada elemento em relao declarao e onde
se detecta os erros semnticos, tais como o uso incorreto de variveis de tipos
diferentes numa multiplicao. Terminada esta fase, tem-se a representao
intermediria do processo e o compilador d incio gerao do cdigo objeto
intermedirio, primeira fase da sntese.

3.- Sntese: A sntese constri o cdigo objeto a partir desta representao
intermediria, nas seguintes etapas, no necessariamente obrigatrias.
3.1.- Gerao do cdigo objeto intermedirio:
3.2.- Otimizao do Cdigo intermedirio, para uma determinada arquitetura X.
Por isso mesmo, o compilador conhecido como compilador para arquitetura X
(Um hardware especfico e um sistema operacional especfico).
3.3.- Gerao do programa executvel, escrito no cdigo da mquina na qual se
quer rodar o programa.

Resumo:
Cdigo Fonte (em txt) -> Anlise Sinttica, Lxica e Semntica -> Gerao de
cdigo intermedirio ->> Otimizao de cdigo ->> Cdigo objeto otimizado para
arquitetura x ->> programa executvel (cdigo de mquina), ou pr-executvel,
quando h necessidade de se usar o linker.

Ligador ou Linker: Separadamente do compilador, h um outro programa cuja
funo ligar vrios objetos, programas, sub-programas, rotinas, funes j
independente e previamente compilados para unific-los coerentemente num
nico programa executvel.

Declarao (declaration or statement): uma orao completa conforme as
regras gramaticais de uma determinada linguagem. Por exemplo, x=a+sqrt(y);
uma declarao completa, terminada em ;.

Você também pode gostar