Вы находитесь на странице: 1из 13

ATIVIDADE SUPERVISIONADA DE COMPILADORES

PROFESSOR: ROGERIO MALHEIROS

JEFERSON LUIZ VENANCIO SILVEIRA


MATRICULA: 2014202118

RICARDO SARACUZA
MATRICULA: 2016103921

DANIELLE PINNA
MATRICULA: 2014100513

LUAN LIMA DASILVA


MATRICULA: 2014101161

TATIANA PEREIRA DE OLIVEIRA


MATRICULA: 2011101463

SANDRO MARCELO ARPI


MATRICULA: 2014202316

GABRIELLA
MATRICULA: 2014101719

ATIVIDADES PARA NOTA AV2


CURSO: CINCIA DA COMPUTAO

ATIVIDADE PARA NOTA AV2


Trabalho de Compiladores com resoluo de 4 listas com exerccios,
relacionados ao contedo dado em sala pelo professor Rogerio
Malheiros.

SUMRIO

1 INTRODUO...4

2 PERGUNTAS E
RESPOSTAS.............5
1 INTRODUO

Neste trabalho sero apresentadas resolues das questes postadas


no AVA pelo professor Rogerio Malheiros.
LISTA DE EXERCCIOS NMERO 1

1) Defina o que um compilador.

R: Programa tradutor, um programa que converte o cdigo fonte de alto nvel para o
de baixo nvel com instrues com memria, chamadas e registradores.

2) O que uma linguagem fonte? D dois exemplos.

R: Linguagem-fonte a linguagem usada para escrever programas que so entrada de


processadores de linguagens (cdigo de alto nvel convertido pelo compilador).
Exemplos: Ruby e C#.

3) O Delphi uma linguagem fonte? Por que?

R: No. O Delphi um ambiente de desenvolvimento. Sua linguagem o Object Pascal.

4) O que um programa tradutor? D dois exemplos e explique por que eles so


programas tradutores.

R: um programa que converte uma linguagem em outra linguagem.


Exemplos: Compilador e interpretador. So programas tradutores pois convertem
linguagem de alto nvel em linguagem de baixo nvel.

5) Quais so as fases de compilao?

R: Anlise Lxica, Anlise Sinttica, Anlise Semntica, Gerador de Cdigo


Intermedirio, Otimizador de Cdigo e Gerador de Cdigo Objeto.

6) O que so o LEX e o YACC?

R: LEX: Gerador de Analisadores Lxicos, que trabalha recebendo do criador do


compilador as especificaes que so arquivos texto divididos em 3 partes pelo smbolo
%%.

R: YACC: um gerador de analisadores sintticos, realiza todos os passos da anlise


sinttica, cuja primeira verso faz parte do conjunto de ferramentas de programao do
sistema operacional Unix.

7) O que so Tokens?

R: Os tokens constituem-se em classes de smbolos, tais como palavras reservadas,


delimitadores e operadores, podendo ser representados internamente pelo prprio
smbolos, os tokens so representados por pares ordenados, onde o primeiro indica a
classe do smbolo (identificador) e o segundo um apontador para uma entrada na tabela
de smbolos.
8) Faa a rvore de derivao sinttica das seguintes expresses:

a) C:= d*(c+e)/h-l b) L:= g/h*l-o c) J:=o+p+g*(m/q) d) S:=t*y+i-q

9) Explique o que seria a anlise lxica e exemplifique.

R: Esse o primeiro sub-processo de anlise. Neste processo, verificado para cada token
se ele existe no dicionrio da linguagem (Estrutura tabela de smbolos). Se sim o token
armazenado numa tabela auxiliar como sua categoria. Se no, h o erro lxico (unknown
identifica).

10) O que seria o Gerenciador de tabelas? Exemplifique.

R: a poro do compilador que manipula os nomes usados pelo programa e registra


informaes essenciais sobre cada um deles, tal como seu tipo (inteiro, real, etc). A estrutura
de dados usada para registrar essa informao chamada Tabelas de Smbolos.

11) Qual a diferena entre um compilador e um interpretador?

R: Compilador traduz um programa de uma linguagem de alto nvel para um programa de


linguagem de baixo nvel.
Interpretador traduz programas codificados de linguagem de alto nvel para um cdigo
intermedirio que realiza a execuo do algoritmo original sem precisar traduzir para
linguagem de mquina.

12) Explique o que seria um parser e exemplifique.


R: o processo de analisar uma sequncia de entrada (lida de um arquivo de computador
ou do teclado, por exemplo) para determinar sua estrutura gramatical segundo uma
determinada gramtica formal. Essa anlise faz parte de um compilador, junto com a anlise
lxica e anlise semntica.

LISTA DE EXERCCIOS NMERO 2

1) Defina o que so smbolos terminais e no- terminais:

R: Smbolos Terminais: smbolos bsicos, tokens. Por exemplo: if, then, else.
Smbolos No-Terminais: variveis sintticas que denotam conjuntos de smbolos. Por
exemplo, comando.

2) Qual a fase da anlise em que ocorre mais erros de compilao? Justifique sua
resposta.

R: Ocorrem na anlise sinttica. nesta fase que analisada uma sequncia de tokens
de acordo com regras gramaticais precisas e utiliza mtodos precisos de anlise, sendo a
fase mais complexa.

3) Quando ocorre a anlise semntica e qual a sua finalidade? D dois exemplos e expliqueos.

R: Ocorre junto com a anlise sinttica. Verificar se o tipo da varivel adequado a


operao.
Exemplos:
O co fala lngua portuguesa. ( Um co no sabe falar apenas latir).
O Mosquito Morde. (Um mosquito no Morde, pois no tem dentes. Apenas
pica).

4) H gerenciamento de tabelas na anlise semntica? Por que?

R: Sim. Pois nesta fase assim como em outras fases ela pode ser usada como base para
comparao ou mesmo ser atualizada com novos identificadores durante a sada de cada
fase.

5) O que o cdigo intermedirio e qual a sua funo na compilao?

R: a transformao da rvore de derivao (representao interna produzida pelo


analisador sinttico) em uma sequncia de cdigo mais prximo do cdigo objeto. A
funo do cdigo intermedirio permitir que sejam feitas otimizaes.

6) Todos os compiladores atualmente geram cdigo intermedirio? Por que?

R: Sim, pois eles ajudam a melhorar a execuo dos compiladores.

7) No que o cdigo intermedirio difere primordialmente do cdigo objeto?


R: que o intermedirio no especifica detalhes de baixo nvel de implementao, tais
como endereos de memria e registradores, entre outros.

8) Considere os seguintes comandos abaixo em pascal:

Repeat
J:=j+1;
Until j > 1

Escreva este comando na linguagem de trs endereos e depois otimize-o, explicando


porque ele melhorou.

CDIGO INTERMEDIRIO
L0 temp = j+1;
J = temp;

L1

If j > 1 Goto L2
Goto L0

L2 continuao

CDIGO INTERMEDIRIO OTIMIZADO

L0
J = j+1;
IF j <= 1 Goto L0

Melhorou porque na gerao do cdigo intermedirio foi feita primeiro a fase de teste e
depois foi feito a comparao, no cdigo intermedirio otimizado foram feitas numa mesma
fase o teste e a comparao fazendo com que o cdigo ficasse mais rpido pois est sendo
executado e comparado ao mesmo tempo.

9) H alguma influncia na gerao do cdigo intermedirio para uma melhor traduo


para o cdigo objeto? Justifique sua resposta.

R: Sim, pois o usa o cdigo de 3 endereos que usa linhas numeradas e estruturas IF Goto ao
invs de repeties.
10) Faa a rvore sinttica de:

a) a:= L/M/(N+(5*2)/3)+4 b) b := A*B/H*L+E/R/(T-J)

LISTA DE EXERCCIOS NMERO 3

1) O que o LEX? Explique sua funo. Para quais linguagens usualmente ele usado?)

R: O que : O LEX nada mais que um Analisador Lxico.

R: Funo: O LEX serve para gerar automaticamente programas (usualmente em C) fazendo


a leitura de uma entrada, de modo a varrer um texto e/ou programa (scanners) a fim de obter
uma sequncia de unidades lxicas (tokens). Os tokens gerados pelos programas criados pelo
LEX sero usualmente processados posteriormente por um programa que realizar a anlise
sinttica. Usualmente usado em C, C++ e Pascal.

2) Do que se compe uma especificao em LEX?

R: Definio, Regras e Sub-rotinas. Sendo que Definio e Sub-rotinas so opcionais.


3) O que uma definio e para que serve?

R: funo que que pode ter a funo de dar nome a uma especificao, chamar o arquivo ytab.h
(tabela de regras da anlise sinttica ao reconhecer um token) e dar nome (apelido) a uma regra
da Lex para ficar mais legvel.

4) O que uma regra e para que serve?

R: uma das especificaes do LEX.


Para que serve: Cada regra consiste em um padro que ser pesquisado na entrada, seguido por
uma ao que dever ser feita caso este padro seja reconhecido. Estes padres so expresses
regulares, que utilizam os seguintes operadores.

5) O que uma ao no LEX?

R: Uma ao um bloco de cdigo na linguagem de configurao do LEX que executado


sempre que o padro correspondente reconhecido. Normalmente, estas aes especificam
operaes tais como transformaes do padro reconhecido, retorno de um token ou coleta de
estatsticas.

6) Explique o que uma sub-rotina no LEX e d um exemplo.

R: Sub-rotinas so utilizadas quando cdigo utilizado em aes pode ser escrito uma vez e
utilizado vrias vezes.

Exemplo:
%Subrotina%
%%
While escreva ( );
%%
Void escreve ( );
{
Printf (Este um comando de repetio);
}
7) Para que serve o YACC? Que tipo de programa ele ?

R: Serve para realizar todas as etapas da anlise sinttica. do tipo Analisador

8) O que um gerador de anlise lxica e para que ela serve?


R: um analisador que trabalha recebendo do criador do compilador as especificaes que so
arquivos texto divididos em 3 partes pelo smbolo %%.

9) D trs exemplos diferentes de especificaes em LEX, explicando cada parte de uma


especificao e para que ela serve.

R: Definio: Na seo de definio so definidas as macros e importados as bibliotecas escritas


em C. Tambm sendo possvel escrever cdigo em C.

Regras: A seo de regras associa padres com instrues em C, padres escritos na forma de
expresses regulares.

Sub-rotinas: Essa seo contm blocos de cdigos em C que sero apenas copiados ao arquivo
final. Assume-se que tal cdigo ser invocado a partir das regras da seo de regras.

10). D 7 exemplos de operadores de regras e explique cada um deles

PALAVRA: Uma sequncia de caracteres, sem operadores, que reconhecem a palavra


PALAVRA.

p*: O operador * especifica 0 ou mais ocorrncias da expresso (no caso, da letra p ).

[0 9]: O padro constitui-se em qualquer dgito entre 0 e 9.

[0 9] [a z]: Expresses podem ser concatenadas, atravs da sequncia. No exemplo, o padro


constitui-se em qualquer dgito entre 0 e 9, seguido de qualquer letra de a a z .

[abcde]: O padro reconhecido por qualquer um dos caracteres entre colchetes.

(a/b)*c: Os parnteses agrupam expresses. No exemplo, o padro pesquisa por qualquer


nmero de letras a ou b , seguidas por uma letra c.

^Primeiro: O operador ^ especifica que o padro deve ser reconhecido no incio da linha.
LISTA DE EXERCCIOS NMERO 4

1) O que um alfabeto ou vocabulrio? D dois exemplos.

R: Um alfabeto, denotado por V, um conjunto finito de smbolos formado pelos smbolos


terminais e smbolos no-terminais.
Exemplo: Vbinrio = {0, 1}; Vvogais = {a, e, i, o, u}. importante observar que um conjunto
vazio tambm pode ser considerado um alfabeto.

2) O que uma palavra? D um exemplo.

R: uma sequncia finita de smbolos. As sentenas vazias representadas por , uma


sentena constituda por nenhum smbolo.
Exemplo: V, E, R, A, O smbolos, ento VERAO uma sentena.

3) O que uma linguagem? D um exemplo.

R: Uma linguagem um conjunto de todos os textos que podem ser gerados a partir da
gramtica que define aquela linguagem. Exemplo: V = {0,1}.

4) Defina o que uma Gramtica e d dois exemplos.

R: Uma gramtica uma estrutura formada por 4 conjuntos (V, VT, S, P). A gramtica define
uma estrutura sobre um alfabeto de forma a permitir que apenas determinadas combinaes
de smbolos sejam consideradas sentenas, um sistema gerador de linguagens.

Exemplos: Gramticas Livres de Contexto ou Tipo 2 e Gramticas Lineares ou Tipo 3.

5) D dois exemplos de derivao em uma linguagem.

R: DERIVAO MAIS A ESQUERDA DE UMA SENTENA


Sequncia de formas sentenciais que se obtm derivando sempre o smbolo no-terminal mais
esquerda.

R: DERIVAO MAIS A DIREITA DE UMA SENTENA


Sequncia de formas sentencias que se obtm derivando sempre o smbolo no-terminal mais
direita.

6) O que uma linguagem gerada por uma gramtica? D um exemplo.


R: Conjunto de cadeia de terminais formado a partir do smbolo. Exemplo: O
Idoso, A Idosa, O Velho, A Velha.

7) Segundo a Hierarquia de Chomsky quais so os tipos de Gramtica e as caractersticas de


cada uma?

R: GRAMTICA IRRESTRITA OU TIPO 0: So aquelas s quais nenhuma limitao


imposta. So capazes de reconhecer linguagens recursivamente enumerveis. O universo das
linguagens que se podem definir atravs dos mecanismos gerativos definidos pela gramtica
corresponde exatamente ao conjunto das linguagens que esta classe de gramtica capaz de
gerar.

GRAMTICA SENSVEL AO CONTEXTO OU TIPO 1: sensvel ao contexto quando todo


da produo tal que tamanho < = tamanho de .

GRAMTICA LIVRE DE CONTEXTO OU TIPO 2: uma gramtica livre de contexto


quando obedece a conveno de eliminao e, para toda produo , um nico
smbolo no terminal. Em uma gramtica livre de contexto um smbolo no terminal do lado
esquerdo em uma produo pode ser substitudo sempre que aparecer do lado direito em
outra produo.

GRAMTICA REGULAR OU TIPO 3: uma gramtica regular quando tipo 0, tipo 1, tipo
2, e em todo B1 Terminal, B1 Terminal com 1 no-terminal, B1 no-terminal com
1 terminal.

Вам также может понравиться