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

CAMPUS UBERLNDIA

Pgina 1 de 2

Curso de Eng. de Computao/Sistemas de Informao
Disciplina de Compiladores
1 Lista de Exerccios
Prof. Me. Stfano Schwenck Borges Vale Vita
Valor: 6,0 pontos Data de entrega: 19/09/2013


1. ORIENTAES
Esta lista dever ser resolvida de forma individual e entregue de forma impressa.
Este trabalho ser avaliado em 6,0 pontos para os trabalhos entregues at 10/09/2014.
Para cada dia de atraso o trabalho entregue ser penalizado em 1,5 pontos.

2. QUESTES

Questo 1
Um compilador baseado em trs fases (anlises). Quais so elas? Qual a ordem que
acontecem?

Questo 2
Explique o que caracteriza um erro lxico, um erro sinttico e um erro semntico.

Questo 3
Considere a linguagem de programao C e fornea um exemplo de um erro lxico, um erro
sinttico e um erro semntico.

Questo 4
Considere a seguinte gramtica:
E E op E | (E) | NUM

Modifique essa gramtica para que ela passe a utilizar uma notao pr-fixada, ou seja, invs de
escrever 2 + 3 * 4 escreveria + 2 * 3 4. A gramtica resultante precisa de parntesis?
OBS.: op pode ser +, -, / ou* e NUM um nmero.

Questo 5
Para o fragmento de cdigo e as expresses regulares abaixo, monte a tabela com os tokens e lexemas
(parser) de acordo com as respectivas expresses regulares;

EXPRESSES REGULARES:
if if
int int
FRAGMENTO DE CDIGO:
int main()
main main
then then
else else
pletra a|b|...|z
return return
relop <|<=|=|<>|>|>=
digito 1|2|3|4|5|6|7|8|9|0
idf letra(letra|digito)*
num digito
+

del ;|{|}|(|)|
. erro
{






}

int a = 3, x = 10;

if a <= 3 then
proc(x);
else
proc(a); return 0;
-x = @123;







CAMPUS UBERLNDIA
Pgina 2 de 2

Curso de Eng. de Computao/Sistemas de Informao
Disciplina de Compiladores
1 Lista de Exerccios
Prof. Me. Stfano Schwenck Borges Vale Vita
Valor: 3,0 pontos Data de entrega: 12/09/2012


Questo 6
De acordo com Autmato Finito abaixo, qual expresso regular pode ser formada?












Questo 7
Faa a expresso regular que reconhea a mesma string que o analisador lxico dado abaixo (boolean
analise). Veja que return true significa chegar a um estado final e que return false sinaliza um
erro.

boolean analize(char in[])
{
k = 0;
while ( in[k] == $ || in[k] == + || in[k] == - )
k++;

if ( in[k] == 0 || in[k] == 1 )
return true;
else
return false;
}


Questo 8
Faa um programa em C que simule/reconhea um identificador/varivel (regra idf, questo cinco).





Bomtrabalho a todos!

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