Baixe o app para aproveitar ainda mais
Prévia do material em texto
2º Prova de Construção de Compiladores Nome: R.A.: 1- Escreva o código gerado, usando as instruções vistas em sala de aula, para o seguinte trecho de programa. (3,0 pts) programa test; var a,b,c: inteiro; funcao soma: inteiro; var c,a: inteiro; funcao ler: inteiro; inicio leia (c); a:=10*c; ler:=a; fim; procedimento loop; var x: inteiro; inicio leia (x); se se (x < 10) e ((c*10+5)>30) entao x:=ler; fim; inicio loop; soma:= c+a; fim; inicio escreva(soma) fim. 2- Considerando os comandos abaixo: ALLOC m, n (alocar memória) DALLOC m, n (desalocar memória). CALL p (chamar procedimento ou função) RETURN (retornar procedimento) (1,0 pts) Em quais procedimentos do analisador sintático estes comandos são utilizados? Cite cada um deles. (1,0 pts) De que forma os comandos alloc e dalloc resolvem o problema de localidade de variáveis em chamadas recursivas? Dê um exemplo de um trecho de código, e sua execução na pilha. 3- Considere a construção de um novo comando para a LPD: <comando f_enquanto>::= faca <comandos> enquanto <expressão> Escreva um algoritmo sintático Analisa_FacaEnquanto. Insira chamadas para o analisador semântico e geração de código, se existirem. Podem ser utilizados algoritmos auxiliares da análise sintática. (3,0 pts) 4- A memória M da Máquina Virtual, vista em sala de aula, pode ser considerada como uma Pilha. Qual o benefício da utilização de expressões (lógicas e aritméticas) no formato pos fixa em relação a essa estrutura de dados da memória M da máquina virtual? (2,0 pts)
Compartilhar