Definition d'un système linguistique.

Definition d'un système linguistique. - Ada - Programmation

Marsh Posté le 12-01-2010 à 23:41:04    

Bonjour,
Je souhaite définir un système linguistique.
Voici ce que j'ai fait.

Code :
  1. -- Création de système linguisique --
  2.   -- 'Length' est la taille de l'alphabet ;
  3.   -- 'Name' est le nom du système.
  4.   procedure Create_System(Length : in Positive; Name : in String);
  5.  
  6.   -- Une lettre est codé par un tableau binaire.
  7.   type T_Letter is array (Natural range <> ) of Boolean;
  8.  
  9.   -- L'alphabet contient toute les lettres d'un système linguistique.
  10.   type T_Alphabet is is array (Natural range <> ) of T_Letter;
  11.  
  12.   -- Toute les lettres d'un mot sont dans l'alphabet.
  13.   type Letter_Access is access T_Letter;
  14.  
  15.   -- Les mots d'un système sont représentés par des tableaux
  16.   -- de lettres de l'alphabet.
  17.   type T_Word is array (natural range <> ) of Letter_access;
  18.  
  19.   -- Création d'un mot d'un système --
  20.   -- 'Item' est la représentation du mot ;
  21.   -- 'Name' est le système auquel appartien le mot.
  22.   procedure Create_Word(Word : in T_Word; Name : in String);


 
Je souhaiterais m'assurer que les pointeur sur les lettres pointe bien sur le bon alphabet.
Pouvez vous m'aider ? Merci bien.

Reply

Marsh Posté le 12-01-2010 à 23:41:04   

Reply

Marsh Posté le 13-01-2010 à 00:22:56    

Je peux remplacer le type Letter_Access par un type accès à fonction...
 

Code :
  1. type T_Valid_Letter is access function(Index : in Positive; Name : in String);

 
 
Mais maintenant je voudrais être certain d'utiliser la bonne fonction.  :D  

Reply

Marsh Posté le 13-01-2010 à 01:17:32    

Voici ce que devient mon paquetage... En cours de construction.
 

Code :
  1. with Ada.Strings.Unbounded;
  2. package Machina is
  3.  
  4.   -- Création de système linguisique --
  5.   -- 'Length' est la taille de l'alphabet ;
  6.   -- 'Name' est le nom du système.
  7.   procedure Create_System(Length : in Positive; Name : in String);
  8.  
  9.   -- Si un système porte déjà le nom donné, on lève une exception ;
  10.   Name_Exist : exception;
  11.  
  12.   -- Les mots sources sont représenté par des tableaus de positifs.
  13.   type T_Positive_String is array (Positive range <> ) of Positive;
  14.   type T_Positive_Word(Length : Positive) is
  15.      record
  16.         Positive_String : T_Positive_String(1..Length);
  17.      end record;
  18.  
  19.   -- Création d'un mot d'un système --
  20.   -- 'Item' est la représentation du mot ;
  21.   -- 'Name' est le système auquel appartien le mot.
  22.   procedure Create_Word(Word : in T_Positive_Word; Name : in String);
  23.  
  24.   -- Si l'alphabet utiliser dans word à la création d'un mot est en dehors
  25.   -- de la borne supérieur de l'alphabet, on lève une exception ;
  26.   Out_Of_Range : exception;
  27.  
  28. private
  29.  
  30.      -- Une lettre est codé par un tableau binaire.
  31.   type T_Binary_Code is array (Positive range <> ) of Boolean;
  32.   type T_Letter(Width : Positive) is
  33.     record
  34.        Code : T_Binary_Code(1..Width);
  35.     end record;
  36.  
  37.   -- on accède au lettres par référence à l'alphabet.
  38.   type Letter_Access is access T_Letter;
  39.  
  40.   -- L'aphabet contient toute les lettres d'un système linguistique.
  41.   type T_Alphabet is array (Natural range <> ) of Letter_access;
  42.  
  43.   -- Toute les lettres d'un mot sont dans l'alphabet.
  44.   type T_Valid_Letter is access
  45.     function(Index : in Positive; Name : in String) return Letter_Access;
  46.  
  47.   -- Les mots codé d'un système sont représentés par des tableaux
  48.   -- de lettres de l'alphabet.
  49.   type T_Alpha_Beta_code is array (Positive range <> ) of T_Valid_Letter;
  50.   type T_Coded_Word(Length : Positive) is
  51.      record
  52.         Alpba_Beta_Code : T_Alpha_Beta_Code(1..Length);
  53.      end record;
  54.  
  55.   -- Un système linguistique est un alphabet.
  56.   type T_System(Length : Positive) is
  57.      record
  58.         Alpabet : T_Alphabet(1..Length);
  59.         Name    : Ada.Strings.Unbounded.Unbounded_String;
  60.      end record;
  61.  
  62. end Machina;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed