|
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: 9216 (0x2400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Parser, seg_038fcd, seg_0391ac, seg_03940b, seg_03955d
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧ └─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Block_Class; with Custom; with Errors; with Scanner; package body Parser is Error_Number : Natural; procedure Go (From_File : String; The_Root : in out Statements.Node; Terminal : String) is begin Scanner.Start (From_File); Scanner.Next_Token; case Scanner.Get_Token is when Scanner.L_Eof => raise Errors.Empty_Source_File; when others => Block_Class.Create_Program_Block; Block_Class.New_Symbols_Table; Block_Class.Set_Predefined_Identifiers; Statements.Parse (The_Root); Scanner.Stop; end case; exception when Errors.Empty_Source_File => Errors.Parse_Log ("Le fichier source que vous avez indique ne contient aucune instruction Tiny_Talk ! ", Terminal, False); when Errors.Expecting_Binary => Errors.Parse_Log ("Expression binaire attendue !", Terminal); when Errors.Expecting_Binary_After_Keyword => Errors.Parse_Log ("Expression binaire attendue apres un mot cle !", Terminal); when Errors.Expecting_Closing_Brace => Errors.Parse_Log ("Accolade fermante attendue ('}') pour marquer la fin d'un bloc !", Terminal); when Errors.Expecting_Closing_Parenthesis => Errors.Parse_Log ("Parenthese fermante attendue (')') pour delimiter une valeur !", Terminal); when Errors.Expecting_Dot => Errors.Parse_Log ("Il manque un separateur d'instructions ('.') ! ", Terminal); when Errors.Expecting_Id_After_Keyword => Errors.Parse_Log ("Identifificateur attendu apres un mot cle, dans la liste d'arguments d'un bloc !", Terminal); when Errors.Expecting_Id_After_Pour => Errors.Parse_Log ("Identifificateur attendu apres le mot reserve 'Pour' !", Terminal); when Errors.Expecting_Id_Or_Keyword => Errors.Parse_Log ("Identificateur ou mot cle attendu, dans la liste declarative des arguments d'un bloc !", Terminal); when Errors.Expecting_Opening_Brace => Errors.Parse_Log ("Accolade ouvrante attendue ('{') pour marquer le debut d'un bloc !", Terminal); when Errors.Expecting_Other_Id_Or_Dot => Errors.Parse_Log ("Attente d'un autre identificateur ou du separateur ('.'), dans la liste d'arguments d'un bloc !", Terminal); when Errors.Expecting_Other_Keyword_Or_Dot => Errors.Parse_Log ("Attente d'un autre mot cle ou du separateur ('.'), dans la liste d'arguments d'un bloc !", Terminal); when Errors.Expecting_Pour_Or_Value => Errors.Parse_Log ("Attente du mot reserve 'Pour' ou d'une valeur, en debut d'une expression !", Terminal); when Errors.Expecting_Prendre_After_Id => Errors.Parse_Log ("Attente du mot reserve 'Prendre' apres un identificateur !", Terminal); when Errors.Expecting_Primary | Errors.Expecting_Primary_First => Errors.Parse_Log ("Attente d'une expression primaire (identificateur, chaine, entier, '('Valeur')', ou bloc) !", Terminal); when Errors.Expecting_Unary => Errors.Parse_Log ("Attente d'une expression unaire !", Terminal); when Errors.Expecting_Unary_After_Binary_Message => Errors.Parse_Log ("Attente d'une expression unaire, apres un message binaire !", Terminal); when Errors.Expecting_Value => Errors.Parse_Log ("Attente d'une valeur apres une parenthese ouvrante ('(') !", Terminal); when Errors.Expecting_Value_After_Prendre => Errors.Parse_Log ("Attente d'une valeur apres le mot reserve 'Prendre' !", Terminal); when Errors.Unknown_Lexeme_Found => Error_Number := Scanner.Get_Error_Number; case Error_Number is when 1 => Errors.Parse_Log ("Caractere non reconnu par l'analyseur lexical !", Terminal); when 2 => Errors.Parse_Log ("Identificateur invalide ! (tout '_' doit etre precede ET suivi d'une lettre ou d'un chiffre)", Terminal); when 3 => Errors.Parse_Log ("Chaine trop longue !... La longueur maximum autorisee pour une chaine est " & Natural'Image (Custom.String_Max_Length), Terminal); when 4 => Errors.Parse_Log ("Identificateur trop long !... La longueur maximum autorisee pour un identificateur est " & Natural'Image (Custom.Id_Max_Length), Terminal); when 5 => Errors.Parse_Log ("Entier trop grand, au_dela des limites de la machine !", Terminal); when others => Errors.Parse_Log ("Erreur non identifiee detectee par l'analyseur lexical...", Terminal); end case; end Go; end Parser;
nblk1=8 nid=7 hdr6=c [0x00] rec0=22 rec1=00 rec2=01 rec3=028 [0x01] rec0=18 rec1=00 rec2=06 rec3=012 [0x02] rec0=18 rec1=00 rec2=08 rec3=088 [0x03] rec0=17 rec1=00 rec2=04 rec3=08e [0x04] rec0=19 rec1=00 rec2=05 rec3=032 [0x05] rec0=1a rec1=00 rec2=02 rec3=000 [0x06] rec0=19 rec1=00 rec2=08 rec3=000 [0x07] rec0=10 rec1=00 rec2=02 rec3=001 tail 0x215320d1a84e961d1dc17 0x42a00088462060003 Free Block Chain: 0x7: 0000 00 03 02 dd 80 06 69 73 20 22 20 26 06 00 4c 20 ┆ is " & L ┆ 0x3: 0000 00 00 03 fc 80 08 54 6f 6b 65 6e 20 69 73 08 00 ┆ Token is ┆