Buscar

Compiladores: Identificação de Palavras Reservadas e Tratamento de Erros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

01/06/2020 Estácio: Alunos
simulado.estacio.br 1/4
 
 
 
Disc.: COMPILADORES 
Aluno(a): VINICIUS DUARTE DE SOUZA Matríc.: 201602842401
Acertos: 0,2 de 0,5 07/05/2020 (Finaliz.)
 
 
Acerto: 0,1 / 0,1
 
Escreva um programa em Lex que reconheça um texto
escrito em minúsculas e que detecta a palavra reservada
integer.
 %%
 integer printf("Entrou na primeira");
 [aA-zZ]* printf("Entrou na segunda");
 . ;
 %%
 main() { yylex(); }
 yywrap() { return(0); }
 %%
 integer printf("Entrou na primeira");
 [a-z]+ printf("Entrou na segunda");
 . ;
 %%
 main() { yylex(); }
 yywrap() { return(1); }
 %%
 integer printf("Entrou na primeira");
 [a:z]+ printf("Entrou na segunda");
 . ;
 %%
 main() { yywrap() }
 yylex(); { return(1); }
 
 Questão1
http://simulado.estacio.br/alunos/inicio.asp
javascript:voltar();
01/06/2020 Estácio: Alunos
simulado.estacio.br 2/4
 %%
 integer printf("Entrou na primeira");
 [a-z]+ ;
 . ; printf("Entrou na segunda");
 %%
 main() { yylex(); }
 yywrap() { return(1); }
 
 %%
 [integer]* printf("Entrou na primeira");
 [a-z]* printf("Entrou na segunda");
 . ;
 %%
 main() { yylex(); }
 yywrap() { return(1); }
Respondido em 07/05/2020 17:31:26
 
 
Compare com a sua resposta:
 
Acerto: 0,1 / 0,1
 
A identificação e o tratamento de erros em programas de computador estão entre as tarefas dos compiladores. Os
erros de um programa podem ter variados tipos e precisam ser identificados e tratados em diferentes fases da
compilação. Considere uma linguagem de programação que exige que as variáveis manipuladas por seus programas
sejam previamente declaradas, não podendo haver duplicidade de identificadores para variáveis em um mesmo
escopo. Considere, ainda, que a sintaxe dessa linguagem tenha sido definida por meio de uma gramática livre de
contexto e as produções seguintes definam a forma das declarações de variáveis em seus programas.
 D --> TL; | TL; D
 T --> int | real | char
 L --> id | id,L
Considere os exemplos de sentenças ¿ I e II ¿ a seguir, com a indicação ¿ entre os delimitadores /* e */ ¿ de
diferentes tipos de erros.
 I int: a, b; /* dois pontos após a palavra int */
 II int a,b; real a; /* declaração dupla da variável a */
 
 A partir dessas informações, assinale a opção correta.
O compilador não tem meios para identificar e relatar erros como o da sentença I.
A identificação e a comunicação do erro em qualquer uma das sentenças são funções do analisador léxico.
A identificação e a comunicação do erro na sentença II são funções do analisador léxico.
A identificação e a comunicação do erro na sentença I são funções da geração de código intermediário.
 A identificação e a comunicação do erro na sentença II são funções da análise semântica
Respondido em 07/05/2020 17:33:37
 
 
Compare com a sua resposta:
 
Acerto: 0,0 / 0,1
 
Construa os conjuntos Primeiros e Seguidores para a seguinte
 Questão2
 Questão3
01/06/2020 Estácio: Alunos
simulado.estacio.br 3/4
gramática:
 S : bAb
 A : CB | a
 B : Aa
 C : c | ε
primeiros(S) = {b}
 primeiros(B) = {a,c}
 primeiros(C) = {c,ε}
 primeiros(bAb) = {b}
 primeiros(CB) = {c,b}
 primeiros(a) = {a}
 primeiros(Ab) = {a,b}
 primeiros(c) = {c}
seguidores(S) = {$}
 seguidores(A) = {a,b}
 seguidores(B) = {a,a}
 seguidores(C) = {a,c}
 primeiros(S) = {b}
 primeiros(A) = {a,c}
 primeiros(C) = {c,ε}
 primeiros(bAb) = {b}
 primeiros(CB) = {a,c}
 primeiros(a) = {a}
 primeiros(c) = {c}
seguidores(S) = {$}
 seguidores(A) = {a,b}
 seguidores(C) = {a,c}
primeiros(S) = {b}
 primeiros(A) = {a,c}
 primeiros(B) = {b,c}
 primeiros(C) = {c,ε}
 primeiros(bAb) = {b}
 primeiros(CB) = {a,c}
 primeiros(a) = {a}
 primeiros(Aa) = {a,b}
 primeiros(c) = {c}
seguidores(S) = {$}
 seguidores(A) = {a,b}
 seguidores(B) = {a,c}
 seguidores(C) = {a,c}
primeiros(A) = {a,c}
 primeiros(B) = {a,b}
 primeiros(C) = {c,ε}
 primeiros(bAb) = {a,b}
 primeiros(a) = {a}
 primeiros(Aa) = {a,c}
seguidores(A) = {a,b}
 seguidores(B) = {a,b}
 seguidores(C) = {a,c}
 primeiros(S) = {b}
 primeiros(A) = {a,c}
 primeiros(B) = {a,c}
 primeiros(C) = {c,ε}
 primeiros(bAb) = {b}
 primeiros(CB) = {a,c}
 primeiros(a) = {a}
 primeiros(Aa) = {a,c}
 primeiros(c) = {c}
seguidores(S) = {$}
 seguidores(A) = {a,b}
 seguidores(B) = {a,b}
 seguidores(C) = {a,c}
Respondido em 07/05/2020 17:35:56
 
 
Compare com a sua resposta:
 
Acerto: 0,0 / 0,1
 
 Questão4
01/06/2020 Estácio: Alunos
simulado.estacio.br 4/4
Uma das formas de se construir um analisador Léxico é utilizar autômatos finitos. Qual deveria ser a forma correta ?
Criar uma transição vazia para cada estádo de um Autômato Finito Determinístico e associar cada estado a
um Lexema diferente
 Combinar Autômatos Finitos Não Determinísticos através de um estado inicial de transição vazia.
 Utilizar Autômatos Finitos Determinísticos onde cada estado irá identificar um lexema
Combinar Autômatos Finitos Não Determinísticos ligados a um Autômato Determinístico que resolve os
conflitos de prefixo
Combinar Automatos Finitos Determinísticos para cada prefixo conflitante dos Lexemas
Respondido em 07/05/2020 17:36:07
 
 
Compare com a sua resposta:
 
Acerto: 0,0 / 0,1
 
Na criação de um analisador léxico utilizamos combinações de NFA para cada
lexema a ser identificado e o analizador precisa começar no "LexemeBegin" mas
como ele encerra ?
 Uma variável, em geral chamada de ponteiro "Forward" vai indicando quantos estados ele já passou. Dessa
forma ele sabe que achou o prefixo mais longo.
 
 A chamada da função que avança os estados retorna o prefixo com o maior tamanho.
 
O ponteiro "Forward" vai indicando quantos lexemas ele já passou. Dessa forma ele sabe que achou o
lexema com tamanho mais longo.
 
O Autômato sempre encerra quando encontra o lexema de menor tamanho.
 
O contador de lexemas indica todos os caractéres já foram comparados
 
Respondido em 07/05/2020 17:36:05
 
 
Compare com a sua resposta:
 
 
 
 
 
 
 
 
 
 Questão5
javascript:abre_colabore('34442','190498394','3800159567');

Outros materiais