Baixe o app para aproveitar ainda mais
Prévia do material em texto
Nome: Amanda Kelly Rodrigues Cândido Giovanna de Sousa Sampaio Giulianni dos Santos Oliveira Data: 01/03/2020 Professor: José Olímpio PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO CAPÍTULO 3 1. Defina sintaxe e semântica. 2. Para quem as descrições de linguagens são criadas? Um dos problemas em descrever uma linguagem é a diversidade de pessoas que precisam entender a descrição. Entre essas, estão os avaliadores iniciais, os implementadores e os usuários. 3. Descreva a operação de um gerador de linguagens típico. 4. Descreva a operação de um reconhecedor de linguagens típico. A porção de verificação de sintaxe de um compilador (um reconhecedor de linguagens) não é uma descrição de linguagem tão útil para um programador porque ela pode ser usada apenas em modo tentativa e erro. Por exemplo, para determinar a sintaxe correta de uma sentença em particular usando um compilador, o programador pode apenas submeter uma versão que ele estima estar correta e esperar para ver se o compilador a aceita. Em contrapartida, normalmente é possível determinar se a sintaxe de uma sentença está correta comparando-a com a estrutura do gerador. 5. Qual é a diferença entre uma sentença e uma forma sentencial? 6. Defina uma regra gramática recursiva à esquerda. Quando uma regra gramatical tem seu lado esquerdo aparecendo também no início de seu lado direito, a regra é dita recursiva à esquerda. Essa recursão à esquerda especifica associatividade à esquerda. 7. Que três extensões são comuns para a maioria das EBNFs? 8. Diferencie a semântica estática da semântica dinâmica. A semântica estática de uma linguagem é apenas indiretamente relacionada ao significado dos programas durante a execução; em vez disso, ela tem a ver com as formas permitidas dos programas (sintaxe em vez da semântica). 9. Para que servem os predicados em uma gramática de atributos? 10. Qual a diferença entre um atributo sintetizado e um herdado? Atributos sintetizados são usados para passar informações semânticas para cima em uma árvore de análise sintática, enquanto os atributos herdados passam informações semânticas para baixo e através de uma árvore. 11. Como a ordem de avaliação de atributos é determinada para as árvores de uma gramática de atributos? 12. Qual o principal uso das gramáticas de atributos? As gramáticas de atributos são uma abordagem formal, usada tanto para descrever quanto para verificar a corretude das regras de semântica estática de um programa. Apesar de elas não serem sempre usadas de maneira formal no projeto de compiladores, os conceitos básicos das gramáticas de atributos são ao menos informalmente usados em todos os compiladores. 13. Explique os principais usos de uma metodologia e notação para descrever a se- mântica de linguagens de programação. 14. Por que as linguagens de máquina não podem ser usadas para definir sentenças em semântica operacional? Segundo, o armazenamento de um computador real é muito grande e complexo. Existem normalmente diversos níveis de dispositivos de memória, assim como conexões para incontáveis outros computadores e dispositivos de memória por meio de redes. Dessa forma, linguagens de máquina e computadores reais não são usados para semântica operacional formal. 15. Descreva os dois níveis de uso da semântica operacional. 16. Na semântica denotacional, o que são os domínios sintáticos e semânticos? Na semântica denotacional, o domínio é chamado de domínio sintático, porque são mapeadas estruturas sintáticas. A imagem é chamada de domínio semântico. 17. O que é armazenado no estado de um programa para semântica denotacional? 18. Que abordagem semântica é mais conhecida? A semântica denotacional é o método mais rigoroso e mais conhecido para a descrição do significado de programas. Ela é solidamente baseada na teoria de funções recursivas. 19. Que duas coisas devem ser definidas para cada entidade de linguagem de forma a construir uma descrição denotacional da linguagem? 20. Que parte de uma regra de inferência é o antecedente? A parte de cima de uma regra de inferência é chamada de antecedente. 21. O que é uma função de transformação de predicado? 22. O que a corretude parcial significa para um laço? Por causa da dificuldade de provar o término de laços, esse requisito é geralmente ignorado. Se o término de um laço puder ser mostrado, a descrição axiomática do laço é chamada de corretude total. Se as outras condições puderem ser satisfeitas, mas o término não é garantido, ela é chamada de corretude parcial. Em laços mais complexos, encontrar uma invariante de laço adequada, mesmo para corretude parcial, requer uma boa dose de criatividade. Como computar a pré-condição para um laço while depende da descoberta de uma invariante de laço, provar a corretude de programas com laços while usando semântica axiomática pode ser difícil. 23. Em que ramo da matemática a semântica axiomática é baseada? 24. Em que ramo da matemática a semântica denotacional é baseada? Em semântica denotacional as mudanças de estado são definidas por funções matemáticas. Na semântica denotacional, objetos matemáticos são usados para representar o significado das construções da linguagem. Entidades de linguagem são convertidas para esses objetos matemáticos por meio de funções recursivas. 25. Qual é o problema em usar um interpretador puro de software para semântica operacional? 26. Explique o que as pré-condições e as pós-condições de uma sentença significam na semântica axiomática. A regra de inferência diz que, para obter a pré-condição da sequência, a pré-condição da segunda deve ser computada. Essa nova asserção é usada como a pós-condição da primeira sentença, a qual pode ser usada para computar a pré-condição da primeira – a qual também é a pré-condição de toda a sequência. 27. Descreva a abordagem de usar semântica axiomática para provar a corretude de um programa. 28. Descreva o conceito básico de semântica denotacional. A semântica denotacional é o método mais rigoroso e mais conhecido para a descrição do significado de programas. 29. De que forma fundamental a semântica operacional e a semântica denotacional se diferem?
Compartilhar