Escolar Documentos
Profissional Documentos
Cultura Documentos
COMPILADORES E
COMPUTABILIDADE
• Assembly • Visual
• Java Studio
• HTML • Eclipse
• PHP • Netbeans
• C/C++ Ferramenta
Linguagem
de Apoio
Interpre- Compilador
tador Tradutor
Montador
• JVM • gcc
• dot NET • javac
• Browser • masm
Da codificação a execução
Código em
Linguagem de
Compilador Montagem
Montador
Código de
Código objeto Linker máquina
(Ligador) realocável
Código de
Loader - SO máquina
(Carregador) absoluto
Estrutura dinâmica
de um compilador
Estrutura dinâmica
de um compilador (cont.)
^
Compiladores vs. interpretadores
Compiladores vs. interpretadores
Compiladores de duas passagens
(modelo de análise e síntese)
^
Interatividade
Definição alternativa:
O scanner como um AFD
(Autômato Finito Determinístico)
Analisador Analisador
Léxico Sintático
• Tokens • Árvore
sintática
• Tabela de
símbolos
A análise sintática deve:
E + T E + T E T E T
T T T T *F T T F
F F F F F
a + a * a a + a *a a + a *a a + a *a a + a *a
Tipos de analisadores sintáticos
E E E T E T
T T T T T F T T F
F F F F F F F F F F
a + a *a a + a * a a + a *a a + a *a a + a *a
Tipos de analisadores sintáticos
Produções de erro:
aumenta-se a gramática, incluindo
regras de forma a acomodar os erros
mais comuns.
Correção global:
um algoritmo escolhe a sequência
mínima de mudanças necessárias para
se obter a correção.
Ex.: dada uma cadeia x, o parser
procura árvores gramaticais que
permitam transformar x em y (cadeia
correta) com um mínimo de
modificações.
Interatividade
Analise o texto:
Na compilação, a análise consiste em três fases.
Em uma das fases, os caracteres ou tokens são
agrupados hierarquicamente em coleções
aninhadas com significado coletivo. Essa fase
envolve o agrupamento dos tokens do programa
fonte em frases gramaticais, que são usadas pelo
compilador, a fim de sintetizar a saída. Usualmente,
as frases gramaticais do programa fonte são
representadas por uma árvore gramatical.
A fase citada no texto é conhecida como análise:
a) sintática.
b) semântica.
c) léxica.
d) binária.
e) linear.
Resposta
Analise o texto:
Na compilação, a análise consiste em três fases.
Em uma das fases, os caracteres ou tokens são
agrupados hierarquicamente em coleções
aninhadas com significado coletivo. Essa fase
envolve o agrupamento dos tokens do programa
fonte em frases gramaticais, que são usadas pelo
compilador, a fim de sintetizar a saída. Usualmente,
as frases gramaticais do programa fonte são
representadas por uma árvore gramatical.
A fase citada no texto é conhecida como análise:
a) sintática.
b) semântica.
c) léxica.
d) binária.
e) linear
Análise sintática
Seja a gramática:
(1) E T E‘ First(TE’) = { (, a}
(2) T F T‘ First(FT’) = { (, a}
(3) F (E) First((E)) = { ( }
(4) F a First(a) = { a }
(5) E' + T E‘ First(+TE’) = { + }
(6) E' Follow(E’) = { ), $}
(7) T' * F T‘ First(*FT’) = { * }
(8) T' Follow(T’) = { +, ), $}
Analisador LL(1)
Seja a gramática:
(1) E T E‘ First(TE’) = { (, a}
(2) T F T‘ M[ E, ( ] = 1
(3) F (E) M[ E, a ] = 1
(4) F a
(5) E' + T E‘
(6) E'
(7) T' * F T‘
(8) T'
Analisador LL(1)
Seja a gramática:
(1) E T E‘
(2) T F T‘
(3) F (E)
(4) F a
(5) E' + T E‘
(6) E' Follow(E’) = { ), $}
(7) T' * F T‘ M[ E’, ) ] = 6
(8) T' M[ E’, $ ] = 6
Analisador LL(1)
Seja a gramática:
(1) E T E‘ ( a + * ) $
(2) T F T'
E 1 1 - - - -
(3) F (E)
T 2 2 - - - -
(4) F a
F 3 4 - - - -
(5) E' + T E‘
(6) E' E' - - 5 - 6 6
(7) T' * F T‘ T' - - 8 7 8 8
(8) T'
Analisando a sentença: a+a