Sistema de Tipos

O sistema de tipos de uma linguagem de programação é um sistema lógico formal, com um conjunto de regras semânticas, que por associação de uma propriedade (tipo) a entidades da linguagem (expressões, variáveis, métodos, etc.) permite a detecção de uma classe importante de erros semânticos: erros de tipos.

A verificação de erros de tipo, é aplicável nas seguintes operações:

  • Atribuição de valor: v = e.

  • Aplicação de operadores: e1 + e2 (por exemplo).

  • Invocação de funções: f(a).

  • Utilização de classes/estruturas: o.m(a) ou data.field.

Outras operações, como por exemplo a utilização arrays, podem também envolver verificações de tipo. No entanto, podemos considerar que as operações sobre arrays são atribuições de valor e aplicação de métodos especiais.

Diz-se que qualquer uma destas operações é válida quando existe conformidade entre as propriedades de tipo das entidades envolvidas.

A conformidade indica se um tipo T1 pode ser usado onde se espera um tipo T2 . É o que acontece quando T1=T2.

  • Atribuição de valor (v = e).

    • O tipo de e tem de ser conforme com o tipo de v.

  • Aplicação de operadores (e1 + e2).

    • Existe um operador + aplicável aos tipos de e1 e e2.

  • Invocação de funções (f(a)).

    • Existe uma função global f que aceita argumentos a conformes com os argumentos formais declarados dessa função.

  • Utilização de classes/estruturas (o.m(a) ou data.field).

    • Existe um método m na classe correspondente ao objecto o, que aceita argumentos a con- formes com os argumentos formais declarados desse método; e existe um campo field na estrutura/classe de data.

Last updated