Comparaison de TML Pascal avec ANS Pascal
Cette page compare le TML Pascal avec l'American National Standard (ANS) Pascal tel que défini par ANSIIIEEE770X3.97-1983 dans le livre American National Standard Pascal Computer Programming Language (ISBN 0-471-88944-X, publié par The Institute of Electrical and Electronics Engineers à New York).
Exceptions aux requis du ANS Pascal
- Dans le ANS Pascal, un identifiant peut être de n'importe quelle longueur et tous les caractères sont significatifs. En TML Pascal, un identifiant peut être de n'importe quelle longueur, toutefoisa seul les 255 premiers caractères sont significatifs. Notez que la plupart des éditeurs limitent les longueurs de ligne à au moins cette longueur.
- Dans le AND Pascal, le symbole @ est une alternative au symbole ^. En TML Pascal, le symbole @ est un opérateur.
- Dans AND Pascal, un commentaire peut commencer par { et se terminer par *), ou commencer par (* et se terminer par }. En TML Pascal, les commentaires doivent commencer et se terminer par le même ensemble de symboles.
- Dans ANS Pascal, une variable de fichier a une variable tampon associée, est référencée en écrivant le symbole ^ après la variable de fichier. Dans le TML Pascal, une variable de fichier n'a pas de variable tampon associée, et l'écriture du symbole ^ après une variable de fichier est une erreur.
- Dans le ANS Pascal, la partie instruction d'une fonction doit contenir au moins une affectation à l'identificateur de fonction. Dans le TML Pascal, cette exigence n'est pas appliquée.
- Dans le ANS Pascal, un champ étant le sélecteur d'une pièce variante peut ne pas être un paramètre variable réel. Dans le TML Pascal, cette exigence n'est pas appliquée.
- En ANS Pascal, les procédures et les fonctions permettent des paramètres procéduraux et fonctionnels; ces paramètres ne sont pas mise en oeuvres dans le TML Pascal.
- Dans le ANS Pascal, les procédures standard Reset et Rewrite ne prennent qu'un seul paramètre, une variable de fichier. Dans le TML Pascal, les procédures Reset et Rewrite autorisent un deuxième paramètre facultatif, une expression de type chaîne de caractères, nommant un fichier externe.
- Le ANS Pascal définit les procédures standard Get et Put, étant utilisées pour lire et écrire dans des fichiers. Ces procédures ne sont pas définies dans TML Pascal.
- Dans le ANS Pascal, les procédures standard de lecture et d'écriture sont définies en termes de Get et Put et de références aux variables de tampon. Dans le TML Pascal, la fonction de lecture et d'écriture fonctionne comme dans ANS Pascal, mais ce sont des opérations automatiques.
- Dans ANS Pascal, la syntaxe New(p, cl, ..., cn) crée une variable dynamique avec une variante active spécifique. Dans le TML Pascal, cette variation de la procédure New n'est pas autorisée.
- Dans le ANS Pascal, la syntaxe Dispose(q, kl, ... km) supprime une variable dynamique avec une variante active spécifique. Dans le TML Pascal, cette variation de la procédure Dispose n'est pas autorisée.
- Le ANS Pascal définit les procédures standard Pack et Unpack, étant utilisées pour compresser et décompresser les variables compressées. Ces procédures ne sont pas définies dans le TML Pascal.
- Dans le ANS Pascal, une instruction goto dans un bloc peut faire référence à une étiquette dans un bloc englobant. Dans le TML Pascal, une erreur se produit.
- Dans le ANS Pascal, une erreur se produit si la valeur du sélecteur dans une instruction case n'est égale à aucune des consonnes de case. En TML Pascal, ce n'est pas une erreur; à la place, l'instruction case est ignorée sauf si elle contient une clause otherwise.
- Dans le ANS Pascal, un READ d'un fichier texte avec une variable de type char attribue un blanc à la variable si la fonction Eoln était True avant READ. Dans le TML Pascal, un caractère de retour chariot (Chr(13)) est affecté à la variable dans cette situation.
- Dans le ANS Pascal, un READ à partir d'un fichier texte avec un type entier ou une variable de type réel cesse dès que le caractère suivant dans le fichier ne fait pas partie d'un entier signé ou d'un numéro signé. Dans le TML Pascal, la lecture cesse lorsque le caractère suivant du fichier est un blanc, d'une tabulation ou d'un caractère de fin de ligne.
- Dans le ANS Pascal, une écriture dans un fichier texte avec une valeur de type chaîne de caractères compressée entraîne la troncature de la chaîne de caractères si la largeur de champ spécifiée est inférieure à la longueur de la chaîne de caractères. En TML Pascal, la chaîne est toujours écrite en entier, même si elle est plus longue que la largeur de champ spécifiée.
Extensions à ANS Pascal
Les fonctionnalités TML Pascal suivantes sont des extensions de Pascal telles que spécifiées par ANSIIIEEE770X.97-1983.
- Les mots suivants sont réservés dans TML Pascal : body, implemention, interface, otherwise, string, unit et uses.
- Un identifiant peut contenir des caractères de soulignement après le premier caractère.
- Les constantes entières peuvent être écrites en notation hexadécimale. Ces constantes sont préfixées par un le symbole $.
- Les constantes de chaîne de caractères sont compatibles avec les types de chaîne de caractères du TML Pascal.
- Les déclarations d'étiquette, de constante, de type, de variable, de procédure et de fonction peuvent se produire un certain nombre de fois dans n'importe quel ordre dans un bloc.
- Un identificateur de constante signé peut indiquer une valeur de type de données Integer, LongInt ou Extended.
- Le TML Pascal met en oeuvre le type entier supplémentaire LongInt et les types réels supplémentaires Single, Double, Comp et Extended.
- Les opérations arithmétiques sur les opérandes entiers produisent des résultats entiers. L'arithmétique sur les opérandes LongInt ou les opérandes mixtes Integer et LongInt produisent des résultats LongInt. Les valeurs longues sont compatibles avec le type Integer à condition qu'elles soient dans l'intervalle Integer.
- Les opérations arithmétiques sur des opérandes de type réel ou des opérandes de type entier mixte et de type réel produisent des valeurs étendues. Les valeurs étendues sont compatibles avec les types Single, Real, Double et Comp, à condition qu'elles soient dans l'intervalle de ces types.
- Le TML Pascal met en oeuvre des types de chaîne de caractères, différant des types de chaîne de caractères compressés définis par ANS Pascal en ce qu'ils incluent un attribut de longueur dynamique pouvant varier pendant l'exécution.
- Les règles de compatibilité des types sont étendues pour rendre les types char et les types de chaîne de caractères compressés compatibles avec les types de chaîne de caractères.
- Les variables de type String peuvent être indexées sous forme de tableaux pour accéder aux caractères individuels d'une chaîne de caractères.
- Le type d'une référence de variable peut être changé en un autre type via une conversion de type variable.
- Les opérateurs relationnels peuvent être utilisés pour comparer des chaînes de caractères.
- Le TML Pascal met en oeuvre l'opérateur @, étant utilisé pour obtenir l'adresse d'une variable ou d'une procédure ou d'une fonction.
- Le type d'une expression peut être changé en un autre type via une conversion de type valeur.
- L'instruction case autorise une partie facultative otherwise.
- Les procédures et les fonctions peuvent être déclarées comme externes (sous-programmes en langage assembleur), en ligne (code machine en ligne) et outil (outils ROM Apple IIGS).
- Le TML Pascal met en oeuvre des paramètres formels statiques en plus des paramètres formels de valeur et variables définis dans ANS Pascal.
- Le TML Pascal met en oeuvre le type de paramètre formel UNIV.
- Le TML Pascal met en oeuvre les unités, les spécifications d'unité et les corps d'unité pour faciliter la programmation modulaire et la compilation séparée.
- Le TML Pascal met en oeuvre les procédures et fonctions de gestion de fichiers suivantes, n'étant pas disponibles dans ANS Pascal : Close, Erase, FilePos, IOResult, Rename et Seek.
- Les valeurs de type chaîne de caractères peuvent être entrées et sorties avec les procédures standard Read, ReadLn, Write et WriteLn.
- Le TML Pascal met en oeuvre les procédures et fonctions standard suivantes, ne se trouvant pas dans ANS Pascal : Concat, Copy, Cycle, Dec, Delete, Exit, FillChar, Halt, HiWord, Inc, Insert, IsToolError, Leave, Length, LoWord, MoveLeft, MoveRight, Ord4, Pointer, Pos, ScanEQ, ScanNE, SizeOf.
Fonctionnalités dépendantes de la mise en oeuvre
L'effet de l'utilisation d'une fonctionnalité dépendante de la mise en oeuvre de Pascal, telle que définie par ANSI/IEEE770X3.97-1983, n'est pas spécifié. Les programmes ne doivent dépendre d'aucun chemin d'accès spécifique dans les cas où une fonctionnalité dépendante de la mise en oeuvre est utilisée. Les fonctionnalités dépendant de la mise en oeuvre incluent :
- L'ordre d'évaluation des expressions d'index dans une référence de variable.
- L'ordre d'évaluation des expressions dans un constructeur d'ensemble.
- L'ordre d'évaluation des opérandes d'opérateur binaire.
- L'ordre d'évaluation des paramètres réels dans un appel de fonction.
- L'ordre d'évaluation des côtés gauche et droit d'une affectation.
- L'ordre d'évaluation des paramètres réels dans une instruction de procédure.
- L'effet de la lecture d'un fichier texte auquel la procédure Page a été appliquée lors de sa création.
- Liaison de variables désignées par les paramètres du programme à des entités externes au programme.