Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Bibliothèque  Cadre d'application  API  GUI  Projet  Composante  IDE  Outils  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Installation de Free Pascal
Installation de CodeTyphon Studio
Installation de Lazarus
Installation de Pascal XE
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucles
Les instructions d'exceptions
Type de données élémentaires
Référence des unités
Référence de mots réservés (mots clefs)
Référence de procédures et fonctions
Référence des directives de compilation
Référence de classes
BASEUNIX
CLASSES
CMEM
CRT
CTHREADS
CWSTRING
GRAPH
MATH
SYSTEM
Référence de procédures et fonctions avec prototype
Les jetons
Les constantes
Directives du compilateur
Utiliser des conditions, des messages et des macros
Utilisation du langage de programmation assembleur
Code généré
Prise en charge d'Intel MMX
Problèmes de code
Problèmes de liaison
Problèmes de mémoire
Chaînes de caractères de ressources
Programmation de processus léger
Optimisations
Programmation de bibliothèques partagées
Utiliser les ressources Windows
Bonjour
Affichage
Astronomie
Biochimie
Électricité
Fichiers
Finance
Géographie
Géométrie
Histoire
Jeux & stratégies
Mathématique
Médicale
Météorologie
Océanographie
Sport
Temps
Tri
Trigonométrie
Validation
«DRAW» du BASIC
Phase lunaire
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Comparaison de séquence de polypeptides
Tarif d'une piscine pour 1 mois
Texte séquentiel
Liste des fichiers
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Treillis
Chiffre romain
Pac-Man
Tetris
Tours d'Hanois
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Année bissextile
Calendrier
Date de la Pâque
Heure courante
Horloge à aiguille
FirstDayOfMonth
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan
Cos
Sin
Courriel
Extension de nom de domaine
Ararat Synapse
CryptoLib4Pascal
FBLib (Firebird Pascal Library)
FCL (Free Component Library)
GraphiX
HashLib4Pascal
INDY (Internet Direct)
LCL (Lazarus Component Library)
QuickLib
QuickLogger
WinGraph
ZeosLib
Daraja (cadre d'application pour Web)
Fano Framework
Free Spider
Horse
Synopse mORMot
tiOPF
CAI NEURAL API
tensorflowforpascal
fpGUI
MOS
Corail
Double Commander
LDAP Admin for Linux
MSDOS-0
Transmission Remote GUI
UNIX-0
Python for Delphi (P4D)
CodeTyphon Studio
Free Pascal IDE
Lazarus
Pascal XE
GNU Debugger (GDB)
Delp
FPCMake
H2Pas
PPDep
PPUDump
PPUMove
PtoP
Références des codes d'erreur
Anatomie d'un fichier unité
Structure de l'arborescence des sources du compilateur et RTL
Limites du compilateur
Modes du compilateur
Utiliser fpcmake
Compilation du compilateur
Compilateur définit lors de la compilation
Préface
Notes légal
Dictionnaire
Recherche

Les jetons

Les jetons sont les éléments lexicaux de base du code source : ce sont les «mots» du langage : les caractères sont combinés en jetons selon les règles du langage de programmation. Il existe cinq classes de jetons :

Classes Description
Mots réservés Ce sont des mots ayant une signification fixe dans la langue. Ils ne peuvent pas être modifiés ou redéfinis.
Identifiants Ce sont des noms de symboles définis par le programmeur. Ils peuvent être modifiés et réutilisés. Ils sont soumis aux règles de portée du langage.
Les opérateurs Ce sont généralement des symboles pour des opérations mathématiques ou autres : +, -, *,...
Séparateurs Il s'agit généralement d'un espace blanc.
Constantes Les constantes numériques ou caractères sont utilisées pour désigner les valeurs réelles dans le code source, telles que 1 (constante entière) ou 2,3 (constante flottante) ou «Constante de chaîne de caractères» (une chaîne de caractères : un morceau de texte).

Dans cette page nous décrivons tous les mots réservés en Free Pascal, ainsi que les différentes manières de désigner des chaînes de caractères, des nombres, des identifiants,...

Symboles

Le Free Pascal autorise tous les caractères, chiffres et certains symboles de caractères spéciaux dans un fichier source Pascal.

Les caractères suivants ont une signification particulière :

' + - * / = < > [ ] . , ( ) : ^ @ { } $ # & %

et les paires de caractères suivantes également :

<< >> ** <> >< <= >= := += -= *= /= (* *) (. .) //

Lorsqu'elle est utilisée dans un spécificateur d'intervalle, la paire de caractères (. équivaut au crochet gauche [. De même, la paire de caractères .) est équivalente au crochet droit ]. Lorsqu'elle est utilisée pour les délimiteurs de commentaires, la paire de caractères (* équivaut à l'accolade gauche { et la paire de caractères *) est équivalente à l'accolade droite }. Ces paires de caractères conservent leur signification normale dans les expressions de chaîne de caractères.

Commentaires

Les commentaires sont des éléments du code source étant complètement supprimés par le compilateur. Ils n'existent que pour le programmeur, afin qu'il puisse expliquer certains morceaux de code. Pour le compilateur, c'est comme si les commentaires n'étaient pas présents.

Le morceau de code suivant illustre un commentaire :

  1. (* La fonction Beaute renvoie un résultat intéressant *)
  2. Function Beaute:Integer;

L'utilisation de (* et *) comme délimiteurs de commentaires date des tout premiers jours du langage Pascal. Il a été remplacé principalement par l'utilisation de { et } comme délimiteurs de commentaires, comme dans l'exemple suivant :

  1. { La fonction Beaute renvoie un résultat intéressant }
  2. Function Beaute:Integer;

Le commentaire peut également s'étendre sur plusieurs lignes :

  1. {
  2. Ma fonction Beaute renvoie un résultat intéressant,
  3. mais seulement si le paramètre A est inférieur à B.
  4. }
  5. Function Beaute(A,B:Integer):Integer;

Des commentaires sur une seule ligne peuvent également être faits avec le délimiteur // tirant ses origines du C++ :

  1. // La fonction Beaute renvoie un résultat intéressant
  2. Function Beaute:Integer;

Le commentaire s'étend du caractère // jusqu'à la fin de la ligne. Ce type de commentaire a été introduit par Borland dans le compilateur Delphi. Le Free Pascal prend en charge l'utilisation de commentaires imbriqués. Les constructions suivantes sont des commentaires valides :

  1. (* Ceci est un commentaire à l'ancienne *)
  2. { Ceci est un commentaire Turbo Pascal }
  3. // Ceci est un commentaire Delphi. Tout est ignoré jusqu'à la fin de la ligne.

Les méthodes suivantes sont valables pour imbriquer des commentaires :

  1. { Commentaire 1 (* commentaire 2 *) }
  2. (* Commentaire 1 { commentaire 2 } *)
  3. { commentaire 1 // Commentaire 2 }
  4. (* commentaire 1 // Commentaire 2 *)
  5. // commentaire 1 (* commentaire 2 *)
  6. // commentaire 1 { commentaire 2 }

Les deux derniers commentaires doivent être sur une seule ligne. Les deux suivants donneront des erreurs :

  1. // Commentaire valide { Commentaire plus valide !!
  2. }

et

  1. // Commentaire valide (* Commentaire plus valide !!
  2. *)

Le compilateur réagira avec une erreur «caractère invalide» lorsqu'il rencontrera de telles constructions, quel que soit le commutateur -Mtp.

Remarque : En mode TP et Delphi, les commentaires imbriqués ne sont pas autorisés, pour une compatibilité maximale avec le code existant de ces compilateurs.

Mots réservés

Les mots réservés font partie du langage Pascal et, en tant que tels, ne peuvent pas être redéfinis par le programmeur. Tout au long des diagrammes de syntaxe, ils seront indiqués en caractères gras. Pascal n'est pas sensible à la casse, le compilateur acceptera donc toute combinaison de lettres majuscules ou minuscules pour les mots réservés.

Le Free Pascal fait une distinction entre les mots réservés Turbo Pascal et Delphi. En mode TP, seuls les mots réservés Turbo Pascal sont reconnus, mais ceux Delphi peuvent être redéfinis. Par défaut, Free Pascal reconnaît les mots réservés Delphi.

Mots réservés Turbo Pascal

Les mots-clefs suivants existent en mode Turbo Pascal :

Mots réservés Objet Pascal

Les mots réservés d'Object Pascal (utilisés en mode Delphi ou Objfpc) sont les mêmes que ceux de Turbo Pascal, avec les mots clefs supplémentaires suivants :

Modificateurs

Ce qui suit est une liste de tous les modificateurs. Ce ne sont pas exactement des mots réservés dans le sens où ils peuvent être utilisés comme identifiants, mais à des endroits spécifiques, ils ont une signification particulière pour le compilateur, c'est-à-dire, par exemple, le compilateur les considère comme faisant partie du langage Pascal.

Remarque : Les types prédéfinis comme Byte, Boolean et les constantes comme MaxInt ne sont pas des mots réservés. Ce sont des identifiants, déclarés dans l'unité System. Cela signifie que ces types peuvent être redéfinis dans d'autres unités. Le programmeur n'est cependant pas encouragé à le faire, car cela entraînerait beaucoup de confusion.

Remarque : Depuis la version 2.5.1 du Free Pascal, il est possible d'utiliser des mots réservés comme identifiants en les faisant échapper par le signe &. Cela signifie que ce qui suit est possible&nbps;:

  1. Var
  2.  &var:Integer;
  3.  
  4. BEGIN
  5.  &var:=1;
  6.  Writeln(&var);
  7. END.

cependant, il n'est pas recommandé d'utiliser cette fonctionnalité dans un nouveau code, car elle rend le code moins lisible. Il est principalement destiné à corriger l'ancien code lorsque la liste des mots réservés change et englobe un mot qui n'était pas encore réservé.

Identifiants

Les identifiants désignent les noms définis par le programmeur pour des constantes, des types, des variables, des procédures et des fonctions, des unités et des programmes spécifiques. Tous les noms définis par le programmeur dans le code source - à l'exclusion des mots réservés - sont désignés comme identifiants.

Les identifiants sont constitués de 1 à 127 caractères significatifs (lettres, chiffres et caractère de soulignement), dont le premier doit être une lettre (a à z ou A à Z) ou un trait de soulignement (_). Le diagramme suivant donne la syntaxe de base des identifiants.

Comme les mots réservés en Pascal, les identifiants ne sont pas sensibles à la casse, c'est-à-dire :

  1. maprocedure;

et

  1. MaProcedure;

se reporte à la même procédure.

Remarque : Depuis la version 2.5.1, il est possible de spécifier un mot réservé comme identifiant en le faisant précéder d'une esperluette (&). Cela signifie que ce qui suit est possible :

  1. Program TestDo;
  2.  
  3. Procedure &do;Begin
  4. End;
  5.  
  6. BEGIN
  7. &do;
  8. END.

Le mot réservé do est utilisé comme identifiant pour la déclaration ainsi que pour l'appel de la procédure do.

Directives d'indice

La plupart des identifiants (constantes, variables, fonctions ou méthodes, propriétés) peuvent avoir une directive d'indice ajoutée à leur définition :

Chaque fois qu'un identifiant marqué avec une directive d'indice est rencontré ultérieurement par le compilateur, un avertissement sera affiché, correspondant à l'indice spécifié.

Directive d'indice Description
deprecated L'utilisation de cet identifiant est obsolète, utilisez plutôt une alternative. Le mot-clef obsolète peut être suivi d'une constante de chaîne de caractères avec un message. Le compilateur affichera ce message chaque fois que l'identifiant est rencontré.
experimental L'utilisation de cet identifiant est expérimentale : il peut être utilisé pour signaler de nouvelles fonctionnalités qui doivent être utilisées avec prudence.
platform Il s'agit d'un identifiant dépendant de la plateforme : il peut ne pas être défini sur toutes les plateformes.
unimplemented Cela doit être utilisé uniquement sur les fonctions et les procédures. Il doit être utilisé pour signaler qu'une fonctionnalité particulière n'a pas encore été implémentée.

Voici des exemples :

  1. Const
  2.  AConst=12 deprecated;
  3.  
  4. Var
  5.  P:Integer platform;
  6.  
  7. Function Something:Integer; Experimental;Begin
  8.  Something:=P+AConst;
  9. End;
  10.  
  11. BEGIN
  12.  Something;
  13. END.

Cela donnerait le résultat suivant :

testhd.pp(11,15) Warning: Symbol "p" is not portable
testhd.pp(11,22) Warning: Symbol "AConst" is deprecated
testhd.pp(15,3) Warning: Symbol "Something" is experimental

Les directives Hint peuvent suivre toutes sortes d'identifiants : unités, constantes, types, variables, fonctions, procédures et méthodes.

Nombres

Les nombres sont par défaut notés en notation décimale. Les nombres réels (ou décimaux) sont écrits en utilisant une notation technique ou scientifique (par exemple 0,314E1).

Pour les constantes de type entier, Free Pascal prend en charge quatre formats :

  1. Format décimal normal (base 10). C'est le format standard.
  2. Format hexadécimal (base 16), de la même manière que le Turbo Pascal. Pour spécifier une valeur constante au format hexadécimal, ajoutez-la au début du signe dollar ($). Ainsi, le $FF hexadécimal est égal à 255 décimal. Notez que la casse est insignifiante lors de l'utilisation de constantes hexadécimales.
  3. Depuis la version 1.0.7, le format Octal (base 8) est également pris en charge. Pour spécifier une constante au format octal, ajoutez-la au début d'une esperluette (&). Par exemple, 15 est spécifié en notation octale sous la forme &17.
  4. Notation binaire (base 2). Un nombre binaire peut être spécifié en le faisant précéder d'un signe de pourcentage (%). Ainsi, 255 peut être spécifié en notation binaire sous la forme %11111111.

Les diagrammes suivants montrent la syntaxe des nombres :

Remarque : Les notations Octale et Binaire ne sont pas supportées en mode de compatibilité TP ou Delphi.

Étiquettes

Une étiquette (LABEL) est le nom d'un emplacement dans le code source vers lequel il est possible d'accéder depuis un autre emplacement avec une instruction goto. Une étiquette est un identifiant standard ou une séquence de chiffres.

Remarque : Les commutateurs -Sg ou -Mtp doivent être spécifiés avant de pouvoir utiliser des étiquettes. Par défaut, Free Pascal ne prend pas en charge les instructions label et goto. La directive {$GOTO ON} peut également être utilisée pour autoriser l'utilisation d'étiquettes et de l'instruction goto.

Voici des exemples d'étiquettes valides :

  1. Label
  2.  123,
  3.  abc;

Chaînes de caractères

Une chaîne de caractères (ou chaîne en abrégé) est une séquence de zéro ou plusieurs caractères (de la taille d'un octet), entourée de guillemets simples et sur une seule ligne du code source du programme : aucun retour chariot littéral ou caractère de saut de ligne ne peut apparaître dans la chaîne de caractères.

Un ensemble de caractères sans rien entre les guillemets ('') est une chaîne de caractères vide.

La chaîne de caractères se compose de caractères ASCII standard de 8 bits ou de caractères Unicode (normalement codés en UTF-8). La chaîne de caractères de contrôle peut être utilisée pour spécifier des caractères qui ne peuvent pas être saisis sur un clavier, comme #27 pour le caractère d'échappement.

Le guillemet simple peut être intégré dans la chaîne en le tapant deux fois. La construction C consistant à échapper des caractères dans la chaîne de caractères (à l'aide d'une barre oblique inverse) n'est pas prise en charge en Pascal.

Les constantes de chaîne de caractères suivantes sont valides :

  1. 'C''est une chaîne de caractères pascale'
  2. ''
  3. 'a'
  4. 'Un caractère de tabulation : '#9' est facile à intégrer'

La chaîne de caractères suivante est invalide :

  1. 'la chaîne commence ici
  2. et continue ici'

La chaîne de caractères ci-dessus doit être saisie comme :

  1. 'la chaîne de caractères commence ici'#13#10' et continue ici'

ou :

  1. 'la chaîne de caractères commence ici '#10' et continue ici'

sur Unix (y compris Mac OS X), et comme :

  1. 'la chaîne de caractères commence ici '#13' et continue ici'

sur un système d'exploitation classique de type Mac.

Il est possible d'utiliser d'autres ensembles de caractères dans les chaînes de caractères : dans ce cas la page de codes du fichier source doit être spécifiée avec la directive {$CODEPAGE XXX} ou avec l'option de ligne de commande -Fc pour le compilateur. Dans ce cas, les caractères d'une chaîne de caractères seront interprétés comme des caractères de la page de codes spécifiée.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mercredi, le 28 juin 2023