VI.6 –CATEGORIAS DE IDENTIFICADORES DA
LSI131
01 – ID-PROGRAMA
02 – ID-CONSTANTE
03 – ID-VARIÁVEL
04 – ID-MÉTODO
05 – ID-PARÂMETRO
• CATEGORIAS DE ID’s E SEUS ATRIBUTOS
01 – ID-PROGRAMA
nome, categoria
02 – ID-CONSTANTE
nome, categoria, nível
tipo (pré-definido) e valor
03 – ID-VARIÁVEL
nome, categoria, nível, deslocamento
sub-categoria (tipo):
pré-definido : tipo (inteiro, real caracter ou booleano)
cadeia : tamanho
vetor : tamanho (número de elementos)
tipo dos elementos
04 – ID-MÉTODO
nome, categoria, nível, endereço da 1a instrução
número de parâmetros, ponteiro para lista de parâmetros
tipo do resultado (pré-definido ou nulo)
05 – ID-PARÂMETRO
nome, categoria, nível, deslocamento (relativo ao procedimento),
mecanismo de passagem (valor ou referência), tipo (pré-definido)
1
VI.7 - REGRAS SEMÂNTICAS DA LSI131
• Declaração e Uso de Identificadores
01 - O identificador do programa não poderá ter nenhum outro uso.
02 – Todos os identificadores usados no programa devem ser previamente
declarados.
03 - Identificadores não podem ser declarados mais de uma vez no mesmo
nível (independentemente de sua categoria).
04 - Os identificadores só terão validade no escopo (nível) onde foram
declarados e nos escopos (níveis) internos a ele.
05 – Identificadores declarados com valor inicial, devem ser considerados como
constantes;
06 – Vetores e cadeias não podem ter valor inicial;
07 – A constante usada na inicialização de um identificador deve ser do mesmo
tipo da declaração;
08 - Identificadores devem ser usados de acordo com a categoria na qual foram
declarados, ex.:
• id de variável só pode ser usado em contextos que aceitem variáveis,
• Id de constante não pode ser usado no lado esquerdo de uma
atribuição nem em comandos de leitura
• Id de método sem tipo só pode ser usado em contextos que aceitem
comandos
• Id de método com tipo só pode ser usado em contextos que aceitem
uma expressão
09 - Variáveis do tipo Vetor só podem ser usados de forma indexada e o índice
deve ser uma expressão inteira;
10 - O tamanho de um vetor (número de elementos) deve ser estabelecido na
declaração, por uma constante de tipo inteiro;
11 - Vetores não podem ser do tipo cadeia de caracteres
2
12 – Somente variáveis do tipo vetor e do tipo cadeia podem ser indexadas; no
caso de cadeia, com o objetivo de acessar um caracter em particular;
13 - Variáveis do tipo Cadeia podem ser usadas de forma indexada ou não; se
indexada, o tipo do índice deve ser inteiro;
14 – Identificadores de parâmetros podem ser usados em todos os contextos
onde for válido o uso de variáveis.
15 – Parâmetros devem ser de tipo pré-definido.
16 – Constantes literais de tamanho 1, devem ser consideradas como sendo do
tipo caracter;
17 – Referências a uma posição (um elemento) de uma variável cadeia, devem
ser consideradas do tipo caracter;
18 - A constante usada na declaração de uma cadeia, deve ser inteira, positiva e
menor que 256.
COMANDOS
SE e ENQUANTO
19 - A expressão de controle deve ser booleana ou inteira (neste caso, se = 0
considera-se FALSO, senão VERDADEIRO).
LEIA / ESCREVA
20 - Os identificadores a serem lidos devem ser das categorias variável ou
parâmetro e devem ser de tipo pré-definido (exceto booleano) ou cadeia.
21 – As expressões a serem impressas deverão ser de tipo pré-definido (exceto
booleano) ou cadeia (literal).
CHAMADA DE MÉTODO
22 - Deve haver correspondência em número e tipo (salvo exceções previstas)
entre parâmetros atuais (reais) e formais.
23 - Parâmetros formais por referência devem ter um id (da categoria variável
ou parâmetro) como parâmetro atual correspondente.
3
24 - Id de métodos sem tipo (procedimentos) só podem ser usados como
comandos.
25 – Métodos sem tipo (procedimentos) não devem possuir comando de retorno
(cláusula retorne).
26 - Id de métodos com tipo (funções) só podem ser usados em expressões.
27 – Todo método com tipo (função) deve possuir pelo menos um comando de
retorno (cláusula retorne).
28 – O tipo da expressão usada na cláusula de retorno deve ser pré-definido e
compatível com o tipo do método.
COMANDO DE ATRIBUIÇÃO
29 – O id do lado esquerdo deve ser uma variável (simples ou indexada) ou um
parâmetro.
30 - O tipo da expressão deve ser igual ao tipo do id usado no lado esquerdo da
atribuição.
EXCEÇÕES:
REAL aceita INTEIRO
CADEIA aceita CARACTER
EXPRESSÕES
OPERADORES RELACIONAIS
31 - Os operandos envolvidos devem ser do mesmo tipo (exceto real/int. e
cadeia/caracter).
OPERADORES ARITMÉTICOS
32 - Podem ser aplicados a operandos inteiros e reais (qualquer combinação).
33 – Expressões numéricas mistas (envolvendo inteiros e reais) resultarão em
tipo real.
34 – O uso do operador “/” entre inteiros resultará em tipo real.
35 – O operador “div” só pode ser usado na divisão de inteiros e o tipo
resultante será do tipo inteiro.
4
36 – O operador unário “-“ não pode ser usado consecutivamente.
OPERADORES LÓGICOS
37 - Os operandos envolvidos devem ser booleanos.
38 – O operador “não” não pode ser usado consecutivamente.
OPERANDOS CONSTANTES
39 - Literais de tamanho 1 devem ser considerados constantes do tipo caracter.
40 – Falso é menor que Verdadeiro.
OPERANDOS VARIÁVEIS
41 - Devem ser de tipo pré-definido, cadeia ou elemento de um vetor.
42 – Identificadores da categoria “parâmetro” devem ser vistos como variáveis.
43 - Variáveis do tipo vetor devem ser referenciadas de forma indexada e a
expressão usada como índice deve ser do tipo inteiro. Para verificação de tipo
do operando, vale o tipo dos elementos (sempre um tipo pré-definido).
44 - Variáveis do tipo CADEIA, quando indexadas, resultam no tipo caracter. O
índice deve ser uma expressão do tipo inteiro.
OPERANDOS DESIGNADORES DE MÉTODOS COM TIPO
45 - O TIPO do RESULTADO do método deve ser válido (compatível) no
contexto em que o método (função) está sendo chamado.
AÇÕES SEMÂNTICAS
• Implementam as verificações necessárias para a validação
semântica do programa fonte; ou seja, verificam se as regras
semânticas foram observadas.
• Montam os descritores (tabela de símbolos) de todos os
identificadores declarados, visando:
o Verificação das regras semânticas
o Geração de Código Intermediário
• Montam as tabelas de constantes numéricas e literais a serem
usadas na Geração de Código Intermediário
5
Download

VI.6 –CATEGORIAS DE IDENTIFICADORES DA LSI131