|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 18432 (0x4800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Compiler_Token, seg_047a7b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Text_Io;
with Compiler_Token;
use Compiler_Token;
package body Compiler_Token is
Ok : constant Boolean := True;
Pas_Ok : constant Boolean := False;
Debug : constant Boolean := False;
-- Regles: (Rule), (Firsts), (Follows) etc......
Regles : The_Rules (1 .. 39) :=
((R_Le_Jeu, (L_Personnage, L_Heros, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Personnages, (L_Personnage, L_Heros, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Piece, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Personnages_Bis, (L_Personnage, L_Heros, L_Epsilon, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Piece, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Personne, (L_Personnage, L_Heros, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Personnage, L_Heros, L_Piece, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Pieces, (L_Piece, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Pieces_Bis, (L_Piece, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Piece, (L_Piece, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Piece, L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Choses, (L_Chose, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Chose, (L_Chose, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Chose, L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Etats, (L_Etat, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Etat, (L_Etat, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Autre_Etat, (L_Comma, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Etat, L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Positions, (L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Acces, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Positions_Bis, (L_Position_De, L_Epsilon, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Acces, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Position, (L_Position_De, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Position_De, L_Acces, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Acces, (L_Acces, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Compteur, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Acces_Bis, (L_Acces, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Compteur, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Acces, (L_Acces, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Acces, L_Compteur, L_Action, L_Situation,
L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Mode, (L_Ferme, L_Ouvert, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Visible, L_Invisible, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Visibilite, (L_Visible, L_Invisible, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Est, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Compteurs, (L_Compteur, L_Epsilon, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Compteur, (L_Compteur, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Compteur, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Le_Scenario, (L_Action, L_Situation, L_Toujours_Faire, L_Epsilon,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test_Toujours, (L_Toujours_Faire, L_Epsilon, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Tests, (L_Action, L_Situation, L_Epsilon, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test, (L_Action, L_Situation, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test_Sup, (L_Et, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Action, (L_Action, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Situation, (L_Situation, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test_Action, (L_Id, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test_Action_Bis, (L_Id, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Un_Complement, (L_Id, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test_Situation, (L_Id, L_Unk, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Test_Situation_Bis, (L_Id, L_Equal, L_Less, L_Great, L_Dans,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Et, L_Faire, L_Action, L_Situation, L_Toujours_Faire, L_Dollar,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Les_Effets, (L_Faire, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Des_Effets, (L_Incrementer, L_Decrementer, L_Valeur,
L_Afficher, L_Commentaire, L_Fin_De_Jeu,
L_Changer, L_Positionner, L_Unk, L_Unk),
(L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Des_Effets_Bis, (L_Incrementer, L_Decrementer, L_Valeur,
L_Afficher, L_Commentaire, L_Fin_De_Jeu,
L_Changer, L_Positionner, L_Epsilon, L_Unk),
(L_Action, L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk, L_Unk)),
(R_Effet, (L_Incrementer, L_Decrementer, L_Valeur,
L_Afficher, L_Commentaire, L_Fin_De_Jeu,
L_Changer, L_Positionner, L_Unk, L_Unk),
(L_Incrementer, L_Decrementer, L_Valeur, L_Afficher,
L_Commentaire, L_Fin_De_Jeu, L_Changer, L_Positionner, L_Action,
L_Situation, L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk)),
(R_Une_Position, (L_Dans, L_Epsilon, L_Unk, L_Unk, L_Unk,
L_Unk, L_Unk, L_Unk, L_Unk, L_Unk),
(L_Incrementer, L_Decrementer, L_Valeur, L_Afficher, L_Commentaire,
L_Fin_De_Jeu, L_Changer, L_Positionner, L_Action, L_Situation,
L_Toujours_Faire, L_Dollar, L_Unk, L_Unk, L_Unk)));
function Is_First (Un_Token : Token; Une_Regle : Rule) return Boolean is
Pos_Regle : Integer := Regles'First;
Pos_Token : Integer := Regles (Regles'First).First_Tokens'First;
begin
-- on se place sur la ligne de la bonne regle
while Une_Regle /= Regles (Pos_Regle).A_Rule loop
Pos_Regle := Pos_Regle + 1;
end loop;
-- on se place sur la colonne du bon Token
while (Un_Token /= Regles (Pos_Regle).First_Tokens (Pos_Token)) and
(Pos_Token /= Regles (Regles'First).First_Tokens'Last) and
(L_Unk /= Regles (Pos_Regle).First_Tokens (Pos_Token)) loop
Pos_Token := Pos_Token + 1;
end loop;
if Un_Token = Regles (Pos_Regle).First_Tokens (Pos_Token) and
L_Unk /= Regles (Pos_Regle).First_Tokens (Pos_Token) then
if Debug then
Text_Io.Put_Line
(Token'Image (Un_Token) & " est un FIRST de " &
Rule'Image (Une_Regle)); -- ********DEBUG************);
end if;
return Ok;
else
if Debug then
Text_Io.Put_Line
(Token'Image (Un_Token) & " n'est PAS un FIRST de " &
Rule'Image (Une_Regle)); -- *********DEBUG***********);
end if;
return Pas_Ok;
end if;
end Is_First;
function Is_Follow (Un_Token : Token; Une_Regle : Rule) return Boolean is
Pos_Regle : Integer := Regles'First;
Pos_Token : Integer := Regles (Regles'First).Follow_Tokens'First;
begin
-- on se place sur la ligne de la bonne regle
while Une_Regle /= Regles (Pos_Regle).A_Rule loop
Pos_Regle := Pos_Regle + 1;
end loop;
-- on se place sur la colonne du bon Token
while (Un_Token /= Regles (Pos_Regle).Follow_Tokens (Pos_Token)) and
(Pos_Token /= Regles (Regles'First).Follow_Tokens'Last) and
(L_Unk /= Regles (Pos_Regle).Follow_Tokens (Pos_Token)) loop
Pos_Token := Pos_Token + 1;
end loop;
if Un_Token = Regles (Pos_Regle).Follow_Tokens (Pos_Token) and
L_Unk /= Regles (Pos_Regle).Follow_Tokens (Pos_Token) then
if Debug then
Text_Io.Put_Line
(Token'Image (Un_Token) & " est un FOLLOW de " &
Rule'Image (Une_Regle)); -- ********DEBUG************);
end if;
return Ok;
else
if Debug then
Text_Io.Put_Line
(Token'Image (Un_Token) & " n'est PAS un FOLLOW de " &
Rule'Image (Une_Regle)); -- ********DEBUG************);
end if;
return Pas_Ok;
end if;
end Is_Follow;
end Compiler_Token;
nblk1=11
nid=8
hdr6=20
[0x00] rec0=18 rec1=00 rec2=01 rec3=00a
[0x01] rec0=00 rec1=00 rec2=10 rec3=04c
[0x02] rec0=0f rec1=00 rec2=0f rec3=06a
[0x03] rec0=10 rec1=00 rec2=0d rec3=02c
[0x04] rec0=0f rec1=00 rec2=0c rec3=02c
[0x05] rec0=0f rec1=00 rec2=03 rec3=030
[0x06] rec0=0f rec1=00 rec2=0e rec3=05e
[0x07] rec0=0f rec1=00 rec2=02 rec3=00a
[0x08] rec0=0e rec1=00 rec2=05 rec3=08c
[0x09] rec0=0f rec1=00 rec2=07 rec3=016
[0x0a] rec0=0e rec1=00 rec2=09 rec3=032
[0x0b] rec0=0e rec1=00 rec2=0b rec3=060
[0x0c] rec0=14 rec1=00 rec2=06 rec3=048
[0x0d] rec0=18 rec1=00 rec2=0a rec3=06c
[0x0e] rec0=17 rec1=00 rec2=11 rec3=03a
[0x0f] rec0=08 rec1=00 rec2=04 rec3=000
[0x10] rec0=00 rec1=00 rec2=00 rec3=000
tail 0x21544b82086548a4d4751 0x42a00088462060003
Free Block Chain:
0x8: 0000 00 00 00 51 80 08 20 50 61 73 5f 4f 6b 3b 08 00 ┆ Q Pas_Ok; ┆