programaçao
DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLOGIA
COORDENAÇÃO DE CIÊNCIAS DA COMPUTAÇÃO
CONSTRUÇÃO DE COMPILADORES I
(notas de aula)
PROF. GIUSEPPE MONGIOVI
João Pessoa agosto/2000 EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO
op X Y
Linguagem de Máquina : 0110 001110 010110
Linguagem de montagem (assembly) : ADD X Y
Macros (substituição textual) : MULT X Y Z LOAD X MULT Y STORE Z
Linguagens de Alto Nível : BASIC, FORTRAN, COBOL, PL/I, LISP, C, PASCAL ...
TRADUTORES
COMPILADOR (C)
LF - Linguagem de Alto Nível (Pascal, C,...)
LO- Linguagem de Baixo Nível (assembly/ling. máquina)
MONTADOR (Assembler)
LF - Linguagem de montagem (Assembly)
LO- Linguagem de máquina)
PROCESSADOR DE MACROS (PM)
INTERPRETADOR (I)
Exemplo: SNOBOL
Interpretador puro
Ex: Ling. Consulta, Editor textos, Comandos SO’s, ...
PRÉ-PROCESSADOR (PP)
LF e LO são linguagens de alto nível
Ex: RATFOR/FORTRAN
RATFOR FORTRAN
L2: If (not Exp-lóg.) GOTO L1
While Exp-lóg. do S S GOTO L2 L1: ...
ESTRUTURA DE UM COMPILADOR
ANALISADOR LÉXICO (SCANNER)
Separa caracteres da Linguagem Fonte em grupos logicamente bem definidos, fornecendo símbolos (“tokens”).
Ex: if, begin, 0 Ex: A = a, b A2 = AA = aa, ab, ba, bb A3 = A A2=aaa, aab, aba, abb, baa, bab, bba, bbb
Fecho (A*) e fecho positivo (A+)
A+ = A1A2 ... An ... A* = A0 A+ Ex: A = a, b A* = , a, b, aa, ba, bb, aaa, aab, ...
Notações usuais
Notação Significado y = x...