Um programa compL é uma sequência de declarações, sendo que cada declaração pode ser declaração de função, declaração de protótipo de função ou declaração de variável global com inicialização opcional. As declarações de função não podem ser aninhadas.
O corpo de uma função é definido entre chaves ‘{‘ e ‘}’. No corpo de uma função, pode-se declarar variáveis locais, incluindo do tipo array, com inicialização opcional e comandos.
Comandos básicos incluem atribuição, return, print, if, if-else ou while. Um bloco é uma sequência de declarações locais e/ou comandos – entre chaves, ‘{‘ e ‘}’. Pode-se declarar variáveis locais a um bloco mas não funções.
array, seguida pelo seu
tamanho (um valor do tipo integer entre colchetes)
e pelo tipo base de seus elementos.x: boolean;
y: integer = 123;
z: boolean = false;
a: array [10] integer;
b: array [3] boolean = {true,false,false};
function,
pelo tipo (ou void),
por uma lista de parâmetros entre ‘(‘ e ‘), o símbolo ‘=’ e, por fim,
por código entre {}.square: function integer ( x: integer ) = {
return x*x;
}
// printarray com while
printarray: function void
( a: array [] integer, size: integer ) = {
i: integer = 0;
while (i<size) {
print a[i];
i = i + 1;
}
}
Um bloco é um trecho de código entre chaves ‘{‘ e ‘}’.
Não há ‘;’ (ponto-e-vírgula) após ‘}’.
O trecho de código compL pode incluir declarações de variáveis locais
e obrigatoriamente um ou mais comandos (ver função printarray).
Declarações de variáveis devem preceder todos os comandos do bloco.
Comandos básicos em compL incluem comando de atribuição, return, print, if, if-else, e while. Comandos básicos são separados por ‘;’. No caso de if, if-else e while com blocos, não se deve colocar ‘;’ após ‘}’ (ver printarray acima).
O comando print não é considerado como chamada de função e recebe uma lista de expressões separadas por ‘,’.
print temp, total;
compL possui vários operadores aritméticos encontrados na linguagem C, com o mesmo significado, associatividade e nível de precedência. São operadores de compL, da maior para a menor precedência:
[] f() // array, chamada de função
- ! // menos, not (unários)
* / // multiplicação, divisão
+ - // adição, subtração
< <= > >= == != // comparação
= // atribuição
Adaptado do material didático cedido pelo Prof. Vinicius Petrucci e do livro de D. Thain.