Baixe o app para aproveitar ainda mais
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');
Compartilhar