/****************************************************************/
Type PaquetLexical Defaut Final TailleSegment 8 ConserverObjets
/* Objet : Definition d'un analyseur paquet lexical. */
/****************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet. */
/*-------------------------------------------------------------*/
Prive :
EstInstanceDe : Type Lecture Public;
Prive :
Analyseur : Nul Ou AnalyseurLexical Lecture Public Trace;
NomPaquet : Caractere Lecture Public Trace;
EstSelectionne : Booleen Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet. */
/*-------------------------------------------------------------*/
Public :
Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
Procedure Convertir(O : Nul Ou Objet);
Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
Procedure SupprimerPropriete(NomPropriete : Caractere);
Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Methodes propres. */
/*-------------------------------------------------------------*/
Public :
Constructeur Habilitation Optimiser(NulAbsorbant) (AL : Nul Ou AnalyseurLexical, NP : Nul Ou Caractere);
Operateur Optimiser(Invariant, NulAbsorbant) ==(A : Nul Ou PaquetLexical) Retourner Nul Ou Booleen;
Operateur Optimiser(Invariant, NulAbsorbant) !=(A : Nul Ou PaquetLexical) Retourner Nul Ou Booleen;
Procedure Selectionner(Etat : Booleen);
Prive :
Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type PaquetLexical modélise un paquet lexical i.e. un ensemble de définitions lexicales potiellement simultanément reconnues par l'analyseur lexical de rattachement. En effet, ces définitions peuvent être masquées temporairement, par exemple lors de l'analyse du corps d'un appel ou la sélection d'une propriété ou d'une méthode d'un objet.
Le type PaquetLexical possède un constructeur explicite dont les paramètres AL et NP représentent respectivement l'analyseur lexical de rattachement et le nom du paquet.
A la construction, le paquet est sélectionné et donc toutes les définitions qui y sont ajoutées sont visibles pour l'analyseur lexical de rattachement.
Chaque analyseur lexical comporte un paquet dénommé Global dans lequel doit être ajoutées toutes les définitions globales.
Variable
/******/
MonAnalyseurLexical : Nul Ou AnalyseurLexical;
MonPaquetA : Nul Ou PaquetLexical;
MonPaquetB : Nul Ou PaquetLexical;
Principal
/*******/
Debut
...
MonPaquetA=PaquetLexical(AnalyseurLexical, "MonPaquetA");
...
Si MonPaquetA==MonPaquetB Alors
/* Egalité entre deux paquets lexicaux. */
...
Fin Si
Si MonPaquetA!=MonPaquetB Alors
/* Inégalité entre deux paquets lexicaux. */
...
Fin Si
- | - | - | - | - | - | - | - | - |