MPW Pascal et autres Pascals
Cette annexe contient de brèves descriptions des différences entre MPW 3.0 Pascal, ANS Pascal et MPW 2.0 Pascal.
MPW 3.0 Pascal et ANS Pascal
Le MPW 3.0 Pascal contient plusieurs exceptions et extensions à l'American National Standard (ANS) Pascal, comme décrit ci-dessous.
Exceptions à la norme ANSI
Le compilateur MPW 3.0 Pascal est conforme aux exigences de la norme ANSI/IEEE770X3.97-1983, avec les exceptions suivantes :
- Les identificateurs sont limités à 63 caractères.
- Le symbole at (@) n'est pas équivalent au caret (^).
- Les valeurs affectées aux pointeurs peuvent être obtenues autrement qu'à partir de la procédure New.
- L'intervalle d'un entier SET OF est limitée à 0..2039.
- Le type de chaîne de caractères MPW 3.0 Pascal est entreposé sous la forme d'un champ d'un octet suivi des caractères de la chaîne de caractères. Le type de chaîne de caractères standard ANSI est un PACKED ARRAY[1..n] OF char.
- Dans MPW 3.0 Pascal, le type TEXT est distinct du type FILE OF char. Le type FILE OF char est un fichier dont les enregistrements sont de type char, contenant des valeurs de caractère n'(tant ni interprétées ni converties de quelque manière que ce soit lors des opérations d'entrée/sortie.
- Les procédures Pack et Unpack, décrites par Jensen et Wirth, ne sont pas prises en charge.
- Les délimiteurs de commentaires standard {} et (**) sont utilisés pour permettre l'imbrication des commentaires ; les délimiteurs de commentaires standard (**) et (**} ne sont donc pas pris en charge.
Extensions à ANS Pascal
En plus des exigences de la Norme, cette implémentation de Pascal inclut les extensions suivantes :
- Les expressions constantes sont autorisées dans les déclarations et les index.
- Les déclarations peuvent être rédigées dans n'importe quel ordre.
- L'instruction Cycle est prise en charge.
- L'instruction Leave est prise en charge.
- Les intervalles sont autorisées dans les balises d'instruction CASE.
- L'environnement numérique Apple standard est pris en charge.
- La procédure Exit est prise en charge.
- Les opérateurs barre verticale ( | ) et esperluette (&) sont pris en charge.
- Les fonctions peuvent renvoyer des valeurs de types structurés.
- Les paramètres univ sont pris en charge.
- Les techniques de coercition de type sont prises en charge.
- Il existe des routines de manipulation de bits intégrées.
- L'opérateur d'exponentiation ** est pris en charge.
- Les unités et la déclaration USES sont prises en charge.
- Object Pascal est pris en charge.
- Les constantes prédéfinies maxlongint, pi, inf, maxcomp, minnormreal, minnormdouble, minnormextended, compsecs, compdate et comptime sont prises en charge.
- Les routines open, blockread, blockwrite, byteread et bytewrite sont prises en charge.
- Les routines Arctanh, Cosh, Sinh, Tanh, Log10, Exp10, ArcCos, Arcsin et Sincos sont prises en charge.
Fonctionnalités dépendantes de l'implémentation
Le ANSI/IEEE770X3.97-1983 définit plusieurs exigences dépendant de la mise en oeuvre. La norme utilise le terme dépendant de l'implémentation pour décrire une fonctionnalité pouvant différer entre les processeurs mais n'étant pas nécessairement définie pour un processeur particulier.
L'effet de l'utilisation d'une fonctionnalité de MPW 3.0 Pascal requise par la norme, mais dépendant de l'implémentation, n'est pas spécifié. Les programmes utilisant ces fonctionnalités ne devraient pas dépendre d'un cours spécifique choisi car les résultats peuvent être imprévisibles. Cela laisse MPW libre de choisir le cours lui convenant le mieux à ce moment-là.
MPW 3.0 Pascal et MPW 2.0 Pascal
MPW 3.0 Pascal diffère de MPW 2.0 Pascal des manières suivantes :
- Le compilateur Pascal MPW 3.0 ne fournit plus l'option de ligne de commande -z ou la directive du compilateur $LOAD.
- Le compilateur Pascal MPW 3.0 fournit un remplacement automatique du mécanisme $LOAD.
- Le compilateur Pascal MPW 3.0 fournit une directive (SK) contrôlant la destination des ressources de la table de symboles.
- Le compilateur Pascal MPW 3.0 fournit les options de ligne de commande -sym, -mbg, -noload, -clean, -rebuild, -k, -h, -rn et -n.
- Le compilateur Pascal MPW 3.0 prend en charge des données globales supérieures à 32 Ko.
- Le compilateur Pascal MPW 3.0 impose des exigences moins strictes pour les références de classe avancées.
- Le compilateur Pascal MPW 3.0 autorise les constantes de caractères comme expressions de chaîne de caractères valides.
- Le compilateur Pascal MPW 3.0 étend la possibilité d'inclure des symboles pour MacsBug.