Difference between revisions of "The parser/fr"

From Lazarus wiki
Jump to navigationJump to search
(→‎Interface de l'analyseur: Adding extra line breaks)
 
(29 intermediate revisions by the same user not shown)
Line 122: Line 122:
 
| Description: || Pointeur vers l'information de symbole pour la routine en cours d'analyse.
 
| Description: || Pointeur vers l'information de symbole pour la routine en cours d'analyse.
 
|}
 
|}
 +
  
 
==== LexLevel ====
 
==== LexLevel ====
Line 132: Line 133:
 
2 = pour des sous-routines locales/imbriquées
 
2 = pour des sous-routines locales/imbriquées
 
|}
 
|}
 +
  
 
==== Current_Module ====
 
==== Current_Module ====
Line 151: Line 153:
 
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
 +
  
 
==== cCharDef ====
 
==== cCharDef ====
Line 156: Line 159:
 
| Déclaration: || <tt><b>var</b> cCharDef: POrdDef;</tt>
 
| Déclaration: || <tt><b>var</b> cCharDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Définition de type pour un caractère (char)
+
| Description: || Définition de type pour un caractère (''char'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur  
 
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur  
 
|}
 
|}
 +
  
 
==== cWideCharDef ====
 
==== cWideCharDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cWideCharDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> cWideCharDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a unicode character (WideChar)
+
| Description: || Définition de type pour un caractère unicode (''WideChar'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 179: Line 183:
 
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
 +
  
 
==== u8BitDef ====
 
==== u8BitDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> u8BitDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> u8BitDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an 8-nit unsigned value (byte)
+
| Description: || Deéfinition de type pour une value 8-bit non signée (''byte'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 192: Line 197:
 
==== u16BitDef ====
 
==== u16BitDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> u16BitDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> u16BitDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an unsigned 16-bit value (word)
+
| Description: || Définition de type pour une valeur 16-bit non signée (''word'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 202: Line 207:
 
==== u32BitDef ====
 
==== u32BitDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> u32BitDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> u32BitDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an unsigned 32-bit value (cardinal)
+
| Description: || Définition de type pour une valeur 32-bit non signée (''cardinal'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 212: Line 217:
 
==== s32BitDef ====
 
==== s32BitDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> s32BitDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> s32BitDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a signed 32-bit value (Longint)
+
| Description: || Définition de type pour une valeur 32-bit signée (''Longint'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 222: Line 227:
 
==== cu64BitDef ====
 
==== cu64BitDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cu64BitDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> cu64BitDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an unsigned 64-bit value (QWord)
+
| Description: || Définition de type pour une valeur 64-bit non signée (''QWord'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 232: Line 237:
 
==== cs64BitDef ====
 
==== cs64BitDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cs64BitDef: POrdDef;</tt>
+
| Déclaration: || <tt><b>var</b> cs64BitDef: POrdDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a signed 64-bit value (Int64)
+
| Description: || Définition de type pour une valeur 64-bit signée (''Int64'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
 
The following variables are default type definitions which are created each time compilation
 
begins (default system-unit definitions), these definitions should always be valid:
 
  
 
==== s64FloatDef ====
 
==== s64FloatDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> s64FloatDef: PFloatDef;</tt>
+
| Déclaration: || <tt><b>var</b> s64FloatDef: PFloatDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a 64-bit IEEE floating point type (double)
+
| Description: || Définition de type pour une valeur en virgule flottante 64-bit IEEE (''double'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler. This might not actually really point to the double type if the cpu does not support it.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur. Cela pourrait ne pas vraiment pointer vers le type ''double'' si le processeur ne le prend pas en charge.
 
|}
 
|}
  
Line 255: Line 257:
 
==== s32FloatDef ====
 
==== s32FloatDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> s32FloatDef: PFloatDef;</tt>
+
| Déclaration: || <tt><b>var</b> s32FloatDef: PFloatDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a 32-bit IEEE floating point type (single)
+
| Description: || Définition de type pour une valeur en virgule flottante 32-bit IEEE (''single'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler. This might not actually really point to the single type if the cpu does not support it.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur. Cela pourrait ne pas vraiment pointer vers le type ''single'' si le processeur ne le prend pas en charge.  
 
|}
 
|}
  
Line 265: Line 267:
 
==== s80FloatDef ====
 
==== s80FloatDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> s80FloatDef : PFloatDef;</tt>
+
| Déclaration: || <tt><b>var</b> s80FloatDef : PFloatDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an extended floating point type (extended)
+
| Description: || Définition de type pour une valeur en virgule flottante étendue (''extended'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler. This might not actually really point to the extended type if the cpu does not support it.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur. Cela pourrait ne pas vraiment pointer vers le type ''extended'' si le processeur ne le prend pas en charge.
 
|}
 
|}
  
Line 275: Line 277:
 
==== s32FixedDef ====
 
==== s32FixedDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> s32FixedDef: PFloatDef;</tt>
+
| Déclaration: || <tt><b>var</b> s32FixedDef: PFloatDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a fixed point 32-bit value (fixed)
+
| Description: || Définition de type pour une valeur en virgule fixe 32-bit (''fixed'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler. This is not supported officially in FPC 1.0
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur. Ceci n'est pas supporté officiellement dans FPC 1.0
 
|}
 
|}
  
 
The following variables are default type definitions which are created each time compilation begins (default system-unit definitions), these definitions should always be valid:
 
  
 
==== cShortStringDef ====
 
==== cShortStringDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cShortStringDef: PStringDef;</tt>
+
| Déclaration: || <tt><b>var</b> cShortStringDef: PStringDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a short string type (ShortString)
+
| Description: || Définition de type pour une valeur chaîne courte (''ShortString'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 297: Line 297:
 
==== cLongStringDef ====
 
==== cLongStringDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cLongStringDef: PStringDef;</tt>
+
| Déclaration: || <tt><b>var</b> cLongStringDef: PStringDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a long string type (LongString)
+
| Description: || Définition de type pour une valeur chaîne longue (''LongString'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur
 
|}
 
|}
  
Line 307: Line 307:
 
==== cAnsiStringDef ====
 
==== cAnsiStringDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cAnsiStringDef: PStringDef;</tt>
+
| Déclaration: || <tt><b>var</b> cAnsiStringDef: PStringDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an ansistring type (AnsiString)
+
| Description: || Définition de type pour une valeur chaîne longue ANSI (''AnsiString'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 317: Line 317:
 
==== cWideStringDef ====
 
==== cWideStringDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cWideStringDef: PStringDef;</tt>
+
| Déclaration: || <tt><b>var</b> cWideStringDef: PStringDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an wide string type (WideString)
+
| Description: || Définition de type pour une valeur chaîne longue large (2 octets/car., ''WideString'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 327: Line 327:
 
==== OpenShortStringDef ====
 
==== OpenShortStringDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> OpenShortStringDef: PStringDef;</tt>
+
| Déclaration: || <tt><b>var</b> OpenShortStringDef: PStringDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an open string type (OpenString)
+
| Description: || Définition de type pour une valeur chaîne ouverte (''OpenString'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 337: Line 337:
 
==== OpenCharArrayDef ====
 
==== OpenCharArrayDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> OpenCharArrayDef: PArrayDef;</tt>
+
| Déclaration: || <tt><b>var</b> OpenCharArrayDef: PArrayDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for an open char array type(OpenCharArray)
+
| Description: || Définition de type pour une valeur tableau de caractères ouvert (''OpenCharArray'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler.
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
 
The following variables are default type definitions which are created each time compilation begins (default system-unit definitions), these definitions should always be valid:
 
  
 
==== VoidPointerDef ====
 
==== VoidPointerDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> VoidPointerDef: PPointerDef;</tt>
+
| Déclaration: || <tt><b>var</b> VoidPointerDef: PPointerDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a pointer which can point to anything (Pointer)
+
| Description: || Définition de type pour une valeur pointeur qui peut désigner n'importe quoi (''Pointer'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 359: Line 357:
 
==== CharPointerDef ====
 
==== CharPointerDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> CharPointerDef: PPointerDef;</tt>
+
| Déclaration: || <tt><b>var</b> CharPointerDef: PPointerDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a pointer which can point to characters (PChar)
+
| Description: || Définition de type pour une valeur pointeur vers des caractères (''PChar'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 369: Line 367:
 
==== VoidFarPointerDef ====
 
==== VoidFarPointerDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> VoidFarPointerDef: PPointerDef;</tt>
+
| Déclaration: || <tt><b>var</b> VoidFarPointerDef: PPointerDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || Type definition for a pointer which can point to anything (intra-segment) (far Pointer)
+
| Description: || Définition de type pour une valeur pointeur qui peut désigner n'importe quoi (intra-segment) (''far Pointer'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 379: Line 377:
 
==== cFormalDef ====
 
==== cFormalDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cFormalDef: PFormalDef;</tt>
+
| Déclaration: || <tt><b>var</b> cFormalDef: PFormalDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Description: || &nbsp;
 
| Description: || &nbsp;
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
  
Line 389: Line 387:
 
==== cfFileDef ====
 
==== cfFileDef ====
 
{|
 
{|
| Declaration: || <tt><b>var</b> cfFileDef: PFileDef;</tt>
+
| Déclaration: || <tt><b>var</b> cfFileDef: PFileDef;</tt>
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Description: || This is the default file type (file)
+
| Description: || Ceci est le type de fichier par défaut (''file'')
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
| Notes: || This is loaded as a default supported type for the compiler
+
| Notes: || Ceci est chargé comme un type supporté par défaut pour le compilateur.
 
|}
 
|}
 +
  
 
Prochain chapitre: [[The inline assembler parser/fr|L'analyseur d'assembleur inline]]
 
Prochain chapitre: [[The inline assembler parser/fr|L'analyseur d'assembleur inline]]

Latest revision as of 13:13, 31 December 2020

English (en) français (fr)

Retour au contenu FPC internals

L'analyseur syntaxique

(Dernière mise à jour pour FPC version 1.0.x)

La tâche de l'analyseur syntaxique est de lire le jeton produit par l'analyseur lexicale et de s'assurer du respect de la syntaxe du Pascal. Il remplit aussi la table des symboles et créée les noeuds intermédiaires (l'arbre) qui sera utilisé par le générateur de code.

Une vue d'ensemble du processus d'analyse, aussi bien que la relation entre l'arbre, le contrôle de type et le générateur de code est montré dans le diagramme suivant :

http://www.pjh2.de/fpc/CompilerInternalsFigure08.png

Information de module

(Dernière mise à jour pour FPC version 1.0.x)

Chaque module étant compilé, qu'il soit une bibliothèque, une unité ou un programme principal a de l'information qui est requise. Ceci est stocké en mémoire dans l'objet TModule. Pour éviter la recompilation des modules déjà compilés, les dépendances des modules sont stockées dans le fichier PPU, ce qui rend aisée la détermination des modules à recompiler.

type
  PModule = ^TModule;
  TModule = object(TLinkedList_Item)
    PPUFile: PPPUFile;                        // Pointer to PPU file object (unit file)
    Crc: Longint;                             // CRC-32 bit of the whole PPU file
    Interface_CRC: Longint;                   // CRC-32 bit of the interface part of
                                              // the PPU file
    Flags: Longint;                           // Unit file flags
    Compiled: Boolean;                        // TRUE if module is already compiled
    Do_Reload: Boolean;                       // TRUE if the PPU file must be reloaded
    Do_Assemble: Boolean;                     // Only assemble, don’t recompile unit
    Sources_Avail: Boolean;                   // TRUE if all sources of module are available
    Sources_Checked: Boolean;                 // TRUE if the sources has already been checked
    Is_Unit: Boolean;                         // TRUE if this is a unit (otherwise a library 
                                              // or a main program)
    In_Compile: Boolean;                      // module is currently being recompiled
    In_Second_Compile: Boolean;               // module is being compiled for second time
    In_Second_Load: Boolean;                  // module is being reloaded a second time
    In_Implementation: Boolean;               // currently compiling implementation part 
                                              // (units only)
    In_Global: Boolean;                       // currently compiling implementation part
                                              // (units only)
    Recompile_Reason: TRecompile_Reason;      // Reason why module should be recompiled
    Islibrary: Boolean;                       // TRUE if this module is a shared library
    Map: PUnitMap;                            // Map of all used units for this unit
    Unitcount: Word;                          // Internal identifier of unit (for GDB support)
    Unit_index: Word;
    Globalsymtable: Pointer;                  // Symbol table for this module of externally
                                              // visible symbols
    Localsymtable: Pointer;                   // Symbol table for this module of locally
                                              // visible symbols
    Scanner: Pointer;                         // Scanner object pointer
    Loaded_From: PModule;                     // Module which referred to this module
    Uses_Imports: Boolean;                    // TRUE if this module imports symbols
                                              // from a shared library
    Imports: PLinkedList;                     // Linked list of imported symbols
    _Exports: PLinkedList;                    // Linked list of exported symbols (libraries only)
    SourceFiles: PFileManager;                // List of all source files for this module
    ResourceFiles: TStringContainer;          // List of all resource files for this module
    Used_Units: TLinkedList;                  // Information on units used by this module 
                                              // (pused_unit)
    Dependent_Units: TLinkedList;
    LocalUnitSearchPath,                      // Search path for obtaining module source code
    LocalObjectSearchPath,
    LocalIncludeSearchPath,                   // Search path for includes for this module
    LocalLibrarySearchPath: TSearchPathList;
    Path: PString;                            // Path were module is located or created
    OutputPath: PString;                      // Path where object files (unit), 
                                              // executable (program) or 
                                              // shared library (library) is created
    ModuleName: PString;                      // Name of the module in uppercase
    ObjFileName: PString;                     // Full name of object file or executable file
    AsmFileName: PString;                     // Full name of the assembler file
    PPUFileName: PString;                     // Full name of the PPU file
    StaticLibFilename: PString;               // Full name of the static library name
                                              // (used when smart linking is used)
    SharedLibFilename: PString;               // Filename of the output shared library
                                              // (in the case of a library)
    ExeFileName: PString;                     // Filename of the output executable
                                              // (in the case of a program)
    AsmPrefix: PString;                       // Filename prefix of output assembler
                                              // files when using smartlinking
    MainSource: PString;                      // Name of the main source file
  end;

Types d'analyse

(Dernière mise à jour pour FPC version 1.0.x)

Entrée

Analyse de programme ou de bibliothèque

Analyse d'unité

Analyse de routine

Déclarations d'étiquette

Déclarations de constante

Déclarations de type

Déclarations de variable

Déclarations de variable thread

Déclarations de ressource de chaîne

Déclarations d'exports

Analyse d'expression

Déclarations de constante typée

Interface de l'analyseur

(Dernière mise à jour pour FPC version 1.0.x)

variables

AktProcSym

Déclaration: var AktProcSym: PProcSym;
Description: Pointeur vers l'information de symbole pour la routine en cours d'analyse.


LexLevel

Déclaration: var LexLevel: Longint;
Description: Niveau de code en cours d'analyse et compilé

0 = pour le programme principal
1 = pour une sous-routine
2 = pour des sous-routines locales/imbriquées


Current_Module

Déclaration: var Current_Module: PModule;
Description: Information sur le module courant (programme, bibliothèque ou unité) en cours de compilation.

Les variables suivantes ont des définitions de type par défaut qui sont créées chaque fois que la compilation commence (définition par défaut de l'unité System), ces définitions doivent toujours être valides:


VoidDef

Déclaration: var VoidDef: POrdDef;
Description: Pointeur vers le type rien
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


cCharDef

Déclaration: var cCharDef: POrdDef;
Description: Définition de type pour un caractère (char)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


cWideCharDef

Déclaration: var cWideCharDef: POrdDef;
Description: Définition de type pour un caractère unicode (WideChar)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


BoolDef

Déclaration: var BoolDef: POrdDef;
Description: Définition de type pour une valeur booléenne (boolean)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


u8BitDef

Déclaration: var u8BitDef: POrdDef;
Description: Deéfinition de type pour une value 8-bit non signée (byte)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


u16BitDef

Déclaration: var u16BitDef: POrdDef;
Description: Définition de type pour une valeur 16-bit non signée (word)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


u32BitDef

Déclaration: var u32BitDef: POrdDef;
Description: Définition de type pour une valeur 32-bit non signée (cardinal)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


s32BitDef

Déclaration: var s32BitDef: POrdDef;
Description: Définition de type pour une valeur 32-bit signée (Longint)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


cu64BitDef

Déclaration: var cu64BitDef: POrdDef;
Description: Définition de type pour une valeur 64-bit non signée (QWord)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


cs64BitDef

Déclaration: var cs64BitDef: POrdDef;
Description: Définition de type pour une valeur 64-bit signée (Int64)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


s64FloatDef

Déclaration: var s64FloatDef: PFloatDef;
Description: Définition de type pour une valeur en virgule flottante 64-bit IEEE (double)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur. Cela pourrait ne pas vraiment pointer vers le type double si le processeur ne le prend pas en charge.


s32FloatDef

Déclaration: var s32FloatDef: PFloatDef;
Description: Définition de type pour une valeur en virgule flottante 32-bit IEEE (single)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur. Cela pourrait ne pas vraiment pointer vers le type single si le processeur ne le prend pas en charge.


s80FloatDef

Déclaration: var s80FloatDef : PFloatDef;
Description: Définition de type pour une valeur en virgule flottante étendue (extended)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur. Cela pourrait ne pas vraiment pointer vers le type extended si le processeur ne le prend pas en charge.


s32FixedDef

Déclaration: var s32FixedDef: PFloatDef;
Description: Définition de type pour une valeur en virgule fixe 32-bit (fixed)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur. Ceci n'est pas supporté officiellement dans FPC 1.0


cShortStringDef

Déclaration: var cShortStringDef: PStringDef;
Description: Définition de type pour une valeur chaîne courte (ShortString)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


cLongStringDef

Déclaration: var cLongStringDef: PStringDef;
Description: Définition de type pour une valeur chaîne longue (LongString)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur


cAnsiStringDef

Déclaration: var cAnsiStringDef: PStringDef;
Description: Définition de type pour une valeur chaîne longue ANSI (AnsiString)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


cWideStringDef

Déclaration: var cWideStringDef: PStringDef;
Description: Définition de type pour une valeur chaîne longue large (2 octets/car., WideString)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


OpenShortStringDef

Déclaration: var OpenShortStringDef: PStringDef;
Description: Définition de type pour une valeur chaîne ouverte (OpenString)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


OpenCharArrayDef

Déclaration: var OpenCharArrayDef: PArrayDef;
Description: Définition de type pour une valeur tableau de caractères ouvert (OpenCharArray)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


VoidPointerDef

Déclaration: var VoidPointerDef: PPointerDef;
Description: Définition de type pour une valeur pointeur qui peut désigner n'importe quoi (Pointer)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


CharPointerDef

Déclaration: var CharPointerDef: PPointerDef;
Description: Définition de type pour une valeur pointeur vers des caractères (PChar)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


VoidFarPointerDef

Déclaration: var VoidFarPointerDef: PPointerDef;
Description: Définition de type pour une valeur pointeur qui peut désigner n'importe quoi (intra-segment) (far Pointer)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


cFormalDef

Déclaration: var cFormalDef: PFormalDef;
Description:  
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


cfFileDef

Déclaration: var cfFileDef: PFileDef;
Description: Ceci est le type de fichier par défaut (file)
Notes: Ceci est chargé comme un type supporté par défaut pour le compilateur.


Prochain chapitre: L'analyseur d'assembleur inline