Você está na página 1de 11

Prova de: Compiladores Docente: Reginaldo A.

Gotardo Srie: 7 Semestre Curricular Prova 1 Bimestre - 1 Semestre 2007 Nome do aluno: N de matrcula:

Durao: 90 min Turma: CCP N7 Perodo: Noturno Data: 11/04/2008 Nota

Instrues para realizao da prova: 1 - Leia atentamente os enunciados da prova 2 - As questes podem ser respondidas a lpis ou a tinta 3 - O valor total da prova de 7 pontos 3 - Cada questo vale um ponto, desta forma, necessrio resolver apenas 7 das 8 questes 4 - Caso o aluno resolva as 8 questes, aquela com menor nota ser descartada

Questes: Exerccio 1 - Liste as fases e componentes de um compilador e descreva brevemente suas funcionalidades e atividades. Fases: Anlise: Lxica identificao de lexemas ou tokens. Sinttica Verificao da estrutura gramatical. Semntica Verificao do significado do cdigo (necessria, pois usamos uma gramtica Livre de Contexto ao invs de uma sensvel ao contexto) Sntese: Gerao de Cdigo Intermedirio Gerao de cdigo num formato de expresses. Gerao de Cdigo Gerao de cdigo Objeto Otimizao Eliminao de Redundncias, melhorias em expresses, ... Mdulos Auxiliares: Tabela de Smbolos Auxlio na construo do cdigo com identificadores. Tabela de Palavras Reservadas Usada no Lxico. Controlador de Erros Auxlio ao Usurio e Recuperao.

Exerccio 2 - Sendo, G1=({S,B,C} , {a,b,c} , P , S) P={ 1. S -> aSBC 2. S -> aBC 3. CB -> BC 4. aB -> ab 5. bB -> bb 6. bC -> bc 7. cC -> cc } Qual a linguagem gerada por G1, ou seja, L(G1)? Mostre, a partir dos nmeros indicados em P, quais as regras de produo utilizadas para chegar sua resposta.

Exerccio 3 - Construir autmatos para se reconhecer: a) Nmeros inteiros com e sem sinal: 5, -1, 100

b) Nmeros reais: 3.11, 0.1

c) Literais que se iniciam e terminam por aspas simples e podem contem aspas simples em seu interior, denotados por duas aspas seguidas.

d) Comentrios que se iniciam pelo smbolo { e terminam com o smbolo }

Exerccio 4 - Faa as modificaes necessrias na gramtica abaixo para que ela se torne LL(1). A->Ac | Aad | bc | bac | lambda O primeiro passo eliminar a recurso esquerda usando a regra de substituio Logo para: A-> Ac | bc Temos 1) A -> bcA A ->cA | <vazio> Para a regra A->Aad | bac Temos 2) A -> bacA A ->adA | <vazio> Usamos A novamente, pois nas regras originais temos o mesmo A. Por fim, temos ento A-> bcA | bacA A->adA| cA | <vazio> O segundo passo agora a fatorao, pois, para a gramtica ser usada na anlise preditiva, toda regra precisa ter conjunto primeiro disjunto em relao s opes de escolha. Logo, devemos fatorar a primeira regra, com A e eliminas as duas possibilidades de b, assim: A-> bX X -> cA | acA As regras ficam assim: A-> bX X -> cA | acA A->adA| cA | <vazio>

Exerccio 5 Considere a Gramtica G2 Abaixo: G2 = {{S,A,B}, {a,b,c,d}, S, P} P: S A A a | aB B bB | cB | d ... e a sentena abcd, qual a anlise segundo o mtodo de Anlise Sinttica Descendente com Retrocesso? Obs.: Para cada nova derivao desenhe uma nova rvore, de modo que fique clara a progresso de derivaes.

Exerccio 6 Considere a Gramtica G3 Abaixo: G3 = {{S,A,B}, {0,1,2}, S, P} P: S 0A | 1B A 1B | 2 B 0A | 2 ... e a sentena 01012, qual a anlise segundo o mtodo de Anlise Sinttica Descendente Preditiva No-Recursiva? Obs.: Crie e apresente a criao da Tabela Sinttica, apresente a evoluo da pilha, da leitura da cadeia e da aplicao das regras. Soluo:

Tabela Sinttica 0 S->0A B->0A 1 S->1B A->1B 2 A->2 B->2 $

S A B Anlise: Passo 1 2 3 4 5 6 7 8 9 10 11

Pilha $S $A0 $A $B1 $B $A0 $A $B1 $B $2 $

Cadeia 01012$ 01012$ 1012$ 1012$ 012$ 012$ 12$ 12$ 2$ 2$ $

Regra S->0A ---------------A->1B ---------------B->0A ---------------A->1B ---------------B->2 ---------------Cadeia Aceita!

Exerccio 7 - Calcule os conjuntos FIRST e FOLLOW para os itens a seguir: a) G4 = ({S,B,C}, {a,b,c,d,e}, S, P) P: S -> a S e | B B -> b B e | C C -> c C e | d Soluo: First(S) = {a} U First(B) = {a, b, c, d} First(B) = {b} U First(C) = {b, c, d} First(C) = {c, d} Follow(S) = {e} U $ = {e, $} Follow(B) = {e} U Follow(S) = {e, $} Follow(C) = {e} U Follow(B) = {e, $} Obs.: por definio, Follow para smbolo inicial da gramtica contm $. b) G5 = ({S,A,B,C,D}, {a,b,c,d}, S, P) P: S->ABCD A-> A->aA B-> B->Bb C->c C->AB D->d First(S) = First(A) U First(B) U First(C) U First(D) - = {a, b, c, d} // vazio no, pois First de D no contm First(A) = {a, } First(B) = {b, } First(C) = {c} U First(A) U First(B) = {a, b, c, } First(D) = {d} Follow(S) = {$} Follow(A) = First(B) U Follow(B) U Follow(C) = {a, b, c, d} //First B contm ento calcula Follow B. No clculo deste deve-se calcular Follow C. Follow(B) = {b} U Follow(B) U First(C) U Follow(C)= {a, b, c, d} // como First(C) contm ento inclui-se Follow(C) Follow(C) = First(D) = {d} Follow(D) = Follow(S) = {$}

Exerccios 8 - Simule a sada da anlise lxica para o programa abaixo. Para cada sada, imprima a cadeia reconhecida e o tipo de token detectado. O tipo pode ser representado atravs de nmeros (indique uma tabela separada com os nmeros) ou atravs enumeradores.

program ProvaDeCompiladores var a, b: integer; var c: real begin read(a,b); c:=5; while a<b do a:=a+1; c:=c*a $ write(c@) end. Soluo program ProvaDeCompiladores var a , b : integer ; var c : real begin read ( a , b ) ; c := 5 ; while a Palavra Reservada Identificador Palavra Reservada Identificador Smbolo Identificador Smbolo Palavra Reservada Smbolo Palavra Reservada Identificador Smbolo Palavra Reservada Palavra Reservada Palavra Reservada Smbolo Identificador Smbolo Identificador Smbolo Smbolo Identificador Smbolo Nmero Smbolo Palavra Reservada Identificador

< b do a := a + 1 ; c := c * a $ write ( c @ ) end .

Smbolo Identificador Palavra Reservada Identificador Smbolo Identificador Smbolo Nmero Smbolo Identificador Smbolo Identificador Smbolo Identificador Smbolo Palavra Reservada Smbolo Identificador Erro Smbolo Palavra Reservada Smbolo Boa Prova!

Você também pode gostar