Nom Un nom est une lettre suivie éventuellement d’une suite de chiffre, de lett
Nom Un nom est une lettre suivie éventuellement d’une suite de chiffre, de lettres ou du caractère _. Seuls les 255 premiers caractères sont significatifs. name : type ; cname = [ clettre | _ ], *( cchiffre | clettre | _ ) ; clettre = a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z ; cchiffre = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ; Les mots réservés suivants ne peuvent pas être utilisés comme nom de variable and array as asm begin case class const constructor destructor dispinterface div do downto else end except exports file finalization finally for function goto if implementation in inherited initialization inline interface is label library mod nil not object of or out packed procedure program property raise record repeat resourcestring set shl shr string then threadvar to try type unit until uses var while with De plus, private, protected, public, published, automated, at et on ne peuvent pas être utilisés comme nom. Il n’y a pas de distinction entre majuscule et minuscule. alpha et aLphA désignent la même variable. Le programme ( name : type ) : procedure ; cherche un endroit libre sur l’unité (mémoire centrale, disque dur, etc.) courant capable de contenir un objet dont le type est spécifié. Exemple : n : name ; Le programme ( *name : type ) : procedure ; permet de déclarer plusieurs variables de même type. Exemple, pour déclarer deux noms x1, x2 : name ; Un memoire_insuffisante sera levé s’il n’y a plus de mémoire disponible. La pseudo– fonction at name retourne ou désigne le contenu d’une variable nom, le programme cname := cname transfère le contenu d’un nom à un autre nom at n := alpha ; Le programme kill name : procedure ; libère l’endroit occupé par l’objet dont le nom est spécifié. Si un programme t := t est défini sur le type t, alors on peut écrire x : t := y ; au lieu de x : t ; x := y ; Si y est un littéral ou une expression (dont le type du résultat est connu), alors l’instruction précédente peut être abrégé : x ::= y ; La fonction ( type at adr ) : function variant ; permet de fixer l’adresse où l’on va mettre une variable x : int63 at 2_345 ; Commentaire Un commentaire est une suite de caractères ignorés par le compilateur. Un commentaire est entouré des caractères { et }, ou (* et *), ou // et une fin de ligne cCom = {, *nonAccoladeDroite, } | (*, *nonEtoilePDroite, *) | //, *nonCR, CR Exemples { Texte entre Accolade gauche et Accolade droite } (* Texte entre parenthèse gauche-étoile et étoile-parenthèse droite *) // Texte entre deux barres et une fin de ligne Opérateur Un littéral opérateur est une suite des caractères +, -, *, /, ^, <, >, =, :,° ou un nom ou un ; 2 cop = cop1,*cop1 | ; | cname ; cop1 = + | - | * | / | ^ | < | > | = | : | ° ; Un opérateur possède une priorité, les opérateurs de grande priorité sont évalués avant les faibles priorités Priorité Opérateurs 1 ^ ^/ 2 * / div 3 + - 4 < > = <= >= <> 5 and or 6 := 8 ; Ainsi l’expression g := a + b * c ^ h > d and f est équivalente à ( g := ( ( ( a + ( b * ( c ^ h ) ) ) > d ) and f ) ) Bit Un chiffre binaire est représenté sur un bit. bit : type ; Exemple : pour créer un bit, nous écrivons b : bit ; Un littéral bit est formée par le chiffre 0 ou 1. cbit = 0 | 1 Le programme bit := bit copie la valeur d’un bit à un autre bit : ( bit := bit ) : procedure ; b := 0 ; Les fonctions suivantes sont définies sur les bits bit and bit : function bit ; bit > bit : function bit ; bit < bit : function bit ; bit <> bit : function bit ; bit or bit : function bit ; bit = bit : function bit ; bit >= bit : function bit ; bit <= bit : function bit ; not bit : function bit ; 3 avec les significations suivantes a 0 0 1 1 b 0 1 0 1 a and b 0 0 0 1 a > b 0 0 1 0 a < b 0 1 0 0 a <> b 0 1 1 0 a or b 0 1 1 1 a = b 1 0 0 1 a >= b 1 0 1 1 a <= b 1 1 0 1 La fonction asString bit convertit un bit en texte, la fonction asBit string convertit un texte en un bit. La taille d’un bit est size bit = 1 Booléen Une variable booléenne est représenté sur un octet boolean : type ; Exemple : pour créer un booléen, nous écrivons b : boolean ; Il existe deux constantes booléennes false, true : boolean ; Les fonctions suivantes sont définies sur les booléens boolean and boolean : predicate ; boolean > boolean : predicate ; boolean < boolean : predicate ; boolean <> boolean : predicate ; boolean or boolean : predicate ; boolean = boolean : predicate ; boolean >= boolean : predicate ; boolean <= boolean : predicate ; not boolean : predicate ; avec les significations suivantes a false false true true b false true false true a and b false false false true a > b false false true false a < b false true false false a <> b false true true false a or b false true true true 4 a = b true false false true a >= b true false true true a <= b true true false true Un predicate est une fonction booléenne avec des effets de bord. Entier naturel Un entier naturel est représenté par une suite de bits. Le type nat8 représente un entier relatif sur 8 bits dont un pour le signe. nat8 : type ; cardinal nat8 : type ; cardinal x := x*bit ; n : cardinal x <=> n [ 0..2x-1 ] Tous les compilateurs doivent avoir les types cardinal n, n [ 1..64 ] Le but est de pouvoir convertir n’importe quelle données provenant de n’importe quelle machine vers les types existants sur la machine utilisée. Les autres types prédéfinis sont byte ::= cardinal 8 ; word ::= cardinal 16 ; longword ::= cardinal 32 ; cardinal ::= cardinal 32 ; Exemple : pour créer un entier naturel sur 64 bits, nous écrivons : n : cardinal 64 ; Un littéral entier naturel est composé d’un chiffre 0 à 9 suivi éventuellement par des chiffres 0 à 9 ou des lettres A à F ou a à f, séparés éventuellement par le caractère _, et terminé éventuellement par un o pour un nombre en base 8 ou commençant par un $ pour un nombre en base 16. cnat = cDec, *( _ | cDec ) | cOct, *( _ | cOct ), o | $,cDec, *( _ | cHex ) ; cOct = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 ; cDec = cOct | 8 | 9 ; cHex = cDec | A | B | C | D | E | F | a | b | c | d | e | f ; Le programme ( cardinal nat8 := cardinal nat8 ) : procedure ; copie la valeur d’entier naturel à un autre entier naturel. Les instructions suivantes sont équivalentes n := 123_456 ; 5 n := 36_1100o ; n := 1_E240h ; Lors de l’affectation d’un entier de plus grande précision à un autre de plus petite précision et si la valeur du premier ne peut être contenu dans le second, l’erreur dépassement_capacité sera levée à l’exécution. Le compilateur est libre d’ajouter l’addition, la soustraction, la multiplication, la division, et les comparaisons de deux entiers naturels sur 8, 16, 32, 64, etc bits cardinal 64 + cardinal 64 : function cardinal uploads/S4/ pascal.pdf
Documents similaires










-
28
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 05, 2021
- Catégorie Law / Droit
- Langue French
- Taille du fichier 0.2309MB