Lista haskell

Disponível somente no TrabalhosFeitos
  • Páginas : 10 (2495 palavras )
  • Download(s) : 0
  • Publicado : 26 de fevereiro de 2013
Ler documento completo
Amostra do texto
Questão 1


Procure entender os conceitos de sintaxe concreta e sintaxe abstrata. Explique-os e faça uso de exemplos para mostrar o seu entendimento.

A sintaxe concreta é uma forma de escrever programas sintaticamente bem formados utilizando, para isso, todos os recursos visíveis no código de uma linguagem, tais como parênteses e delimitadores. Entretanto, ao especificar umasemântica, é conveniente concentrar-se apenas na estrutura das frases, sendo para esta finalidade, utilizada a sintaxe abstrata. Através desta última obtêm-se as árvores sintáticas abstratas, onde cada nó representa uma regra de produção e há exatamente uma sub-árvore por sub-frase. Essa gramática não tem como objetivo gerar sentenças, pois símbolos terminais não possuem nenhum papel real na sintaxeabstrata.

Como exemplo, temos:

Sintaxe Concreta


Program ::= single-Command


Command ::= single-Command
| Command ';' single-Command


single-Command ::= V-name ':=' Expression
| Identifier '(' Expression ')'
| 'if' Expression 'then' single-Command
'else' single-Command| 'while' Expression 'do' single-Command
| 'let' Declaration 'in' single-Command
| 'begin' Command 'end'


.
.
.


Type-denoter ::= Identifier
Identifier ::= Letter | Identifier Letter | Identifier Digit


Sintaxe Abstrata


Program::= Command


Command ::= V-name ':=' Expression
| Identifier '(' Expression ')'
| Command ';' Command
| 'if' Expression 'then' Command
'else' Command
| 'while' Expression 'do' Command
| 'let' Declaration 'in' Command


..
.


Type-denoter ::= Identifier

Como declarado anteriormente, nesse trecho de código da linguagem Mini-Triangle, na sintaxe concreta a gramática é mais detalhada, chegando a descrever os sub-tipos do tipo, enquanto que a sintaxe abstrata não se apega a essas particularidades.



Questão 2


Procure entender a notação BNF. Faça umhistórico desta notação dando exemplos do seu uso. Qual a relação entre uma gramática e uma BNF?


Histórico

John Backus e Peter Naur introduziram, pela primeira vez, uma notação formal para descrever a sintaxe de uma dada linguagem (em particular, ALGOL 60). Para ser preciso, a maior parte da notação foi introduzida por Backus num relatório apresentado numa conferência anterior da UNESCO sobre ALGOL58. Naur, uma das poucas pessoas que leram o relatório, ficou surpreso com algumas das diferenças que encontrou entre a interpretação de Backus e a sua de ALGOL 58. Ele decidiu que, para o sucessor dessa, todos os participantes do primeiro projeto deveriam concordar sobre a notação que estavam utilizando para evitar algumas incoerências. Ele fez algumas modificações que são quase universalmenteusadas e fez seu próprio BNF para ALGOL 60 no encontro onde foi projetada. Desde então, quase todo autor de livros de linguagens de programação usa essa notação original ou extensões (as principais são Augmented BNF e Extended BNF) para especificar as regras de sintaxe da linguagem.


Relação

Uma gramática é uma definição formal da estrutura sintática de uma linguagem. Em particular, asgramáticas livres de contexto são aquelas onde a sintaxe de cada constituinte é independente dos símbolos que ocorrem antes e depois dele numa sentença. BNF (Backus-Naur Form) é um tipo de meta-sintaxe utilizada para expressar justamente esses tipos de gramáticas (livres de contexto).



Questão 3


Defina o que você entende por "efeito colateral" em uma linguagem de programação. Dê um...
tracking img