Syntaxe de Pseudo-Pascal

La syntaxe de notre langage est quasiment celle de Pascal. Si on connaît déjà Pascal on est un peu aidé.

Voici donc sa description informelle, accompagnée d’exemples illustratifs. A chaque fois qu’une sous-partie est facultative dans une définition, on la fait suivre de ceci : (f).

Un programme est introduit par le mot-clé program et est constitué dans l’ordre de déclarations de variables (f), de définitions de procédures ou de fonctions (f), et d’un bloc d’instructions.

Les définitions de procédures sont introduites par le mot-clé procedure. Elles sont composées du nom de la procédure, de la liste de ses arguments (f) entre parenthèses terminée par un point-virgule, des déclarations de variables locales et d’un bloc d’instructions terminé par un point-virgule. Par exemple :

procedure affiche (e : array of integer; i, j : integer);
var k : integer;
begin
  ...
end;

Les définitions de fonctions sont similaires aux définitions de procédures. Elles sont introduites par le mot-clé function, et la liste de leurs arguments est suivie de deux-points puis du type de retour attendu. Par exemple :

function affiche (e : array of integer; i, j : integer) : boolean;
var k : integer;
begin
  ...
end;

Les déclarations de variables (globales ou locales) sont introduites par le mot-clé var. Comme en Pascal, elles autorisent la déclaration simultanée de plusieurs variables de même type. La syntaxe est la suivante : les noms de variables sont séparés par des virgules, suivis de deux-points, puis vient le nom du type. Ces listes de déclarations sont séparées par des point-virgules. Plusieurs listes de variables peuvent ainsi être déclarées, aucune de ces listes ne pouvant être vide. Le tout se termine par un point-virgule. Par exemple :

var r : array of integer;
    i, j : integer;

La liste des arguments utilisée dans la définition d’une procédure ou d’une fonction suit les mêmes règles à l’exception de l’utilisation de var au début et du point-virgule à la fin.

Un bloc d’instructions est une liste d’instructions (f) séparées par des points-virgules, entre les mots-clés begin et end.

Une instruction peut être de différentes sortes :

Une expression peut aussi être de différentes sortes :

Les opérateurs binaires sont les opérateurs arithmétiques habituels (+ - / *), l’égalité (=), les opérateurs de comparaison (<> < > <= >=) et les opérateurs logiques (and or). Les opérateurs unaires sont la négation arithmétique (-) et la négation logique (not).

La syntaxe des expressions est tout-à-fait standard. Les ambiguïtés engendrées par la règle des opérateurs binaires sont levées par les conventions usuelles sur les priorités relatives des opérateurs. Les ambiguïtés relatives aux accès dans les tableaux seront levées selon la raison, (penser par exemple à « t[0] + t[1] » qui s’interprète comme « (t[0]) + (t[1]) ».

Enfin, la syntaxe des types est inspirée de celle de Pascal, mais en beaucoup plus simple, car notre seul type construit est celui des tableaux. Le type entier s’appelle integer, le type booléen s’appelle boolean et le type tableau de «t» s’appelle array of «t».


Ce document a été traduit de LATEX par HEVEA