|
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 - download
Length: 18432 (0x4800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Compiler_Token, seg_048c02
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Text_Io; 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=10 hdr6=1e [0x00] rec0=16 rec1=00 rec2=01 rec3=056 [0x01] rec0=0f rec1=00 rec2=0f rec3=06a [0x02] rec0=10 rec1=00 rec2=0d rec3=02c [0x03] rec0=0f rec1=00 rec2=0c rec3=02c [0x04] rec0=0f rec1=00 rec2=03 rec3=030 [0x05] rec0=0f rec1=00 rec2=0e rec3=05e [0x06] rec0=0f rec1=00 rec2=02 rec3=00a [0x07] rec0=0e rec1=00 rec2=05 rec3=08c [0x08] rec0=0f rec1=00 rec2=07 rec3=016 [0x09] rec0=0e rec1=00 rec2=09 rec3=032 [0x0a] rec0=0e rec1=00 rec2=0b rec3=060 [0x0b] rec0=14 rec1=00 rec2=06 rec3=048 [0x0c] rec0=18 rec1=00 rec2=0a rec3=06c [0x0d] rec0=17 rec1=00 rec2=11 rec3=03a [0x0e] rec0=08 rec1=00 rec2=04 rec3=000 [0x0f] rec0=08 rec1=00 rec2=04 rec3=000 [0x10] rec0=00 rec1=00 rec2=00 rec3=000 tail 0x2154618f6865a8501ec0a 0x42a00088462060003 Free Block Chain: 0x10: 0000 00 08 00 12 80 0f 55 6e 6b 2c 20 4c 5f 55 6e 6b ┆ Unk, L_Unk┆ 0x8: 0000 00 00 00 51 80 08 20 50 61 73 5f 4f 6b 3b 08 00 ┆ Q Pas_Ok; ┆