Cap2
!
Amarração (binding) é um conceito amplamente utilizado no estudo de
LPs. Em termos gerais, uma amarração é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador e um tipo.
Nesse capítulo se discute o conceito de amarração enfocando especialmente as associações feitas entre identificadores e símbolos da LP com entidades de programação, tais como constantes, variáveis, procedimentos, funções e tipos.
Inicialmente apresentam-se os diversos momentos nos quais podem ocorrer amarrações. Em seguida, discutem-se as propriedades relacionadas com identificadores. Abordam-se também os ambientes de amarração e as noções de escopo das entidades de programação. Por fim, discute-se como podem ser feitas definições e declarações dessas entidades.
2.1 Tempos de Amarração
Existem inúmeros tipos de amarrações, as quais podem ocorrer em momentos distintos. O momento no qual uma amarração é realizada é conhecido como tempo de amarração. A seguir, são apresentadas descrições de diferentes tempos de amarração juntamente com exemplos.
• Tempo de Projeto da LP: Ao se projetar uma LP é necessário definir os símbolos e alguns identificadores que poderão ser usados para a construção de programas, bem como amarrá-los às entidades que representam. Por exemplo, a escolha do símbolo * para denotar a operação de multiplicação em C foi feita durante o projeto da linguagem.
• Tempo de Implementação do Tradutor: Algumas amarrações são efetuadas no momento em que se implementa o software responsável por traduzir o código da LP (em geral, o compilador). Por exemplo, a definição do intervalo de inteiros associado ao tipo int de C é realizada durante a implementação do compilador. Isso sig-
27
nifica que diferentes compiladores podem adotar diferentes intervalos para o tipo int.
• Tempo de Compilação: Um grande número de amarrações ocorre no momento em que o programa é compilado. São exemplos desse tipo de