DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦d016c3d5d⟧ TextFile

    Length: 5542 (0x15a6)
    Types: TextFile
    Names: »B«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

separate (Syntaxe_1)

function Parse_Liste_Instruction return Boolean is
    Validation_Bloc : Boolean := False;

    function Parse_Instruction return Boolean;

    function Parse_Bloc_Instruction return Boolean is
    begin
        if Token.Object'Pos (Lex.Lex_Get_Token) =
           Token.Object'Pos (Token.L_Faire) then
            Validation_Bloc := True;
            Lex.Lex_Next;
            if Parse_Liste_Instruction then
                if Token.Object'Pos (Lex.Lex_Get_Token) =
                   Token.Object'Pos (Token.L_Fin) then
                    Lex.Lex_Next;
                    if Token.Object'Pos (Lex.Lex_Get_Token) =
                       Token.Object'Pos (Token.L_Faire) then
                        Lex.Lex_Next;
                        return True;
                    else
                        return False;
                    end if;
                else
                    return False;
                end if;
            else
                return False;
            end if;
        else
            return Parse_Instruction;
        end if;
    end Parse_Bloc_Instruction;

    function Parse_Instruction return Boolean is
    begin
        Validation_Bloc := True;
        case Lex.Lex_Get_Token is
            when Token.L_Au =>
                Lex.Lex_Next;
                if Token.Object'Pos (Lex.Lex_Get_Token) =
                   Token.Object'Pos (Token.L_Temps) then
                    Lex.Lex_Next;
                    if Parse_Operande then
                        return Parse_Bloc_Instruction;
                    else
                        return False;
                    end if;
                else
                    return False;
                end if;
            when Token.L_Si =>
                Lex.Lex_Next;
                if Parse_Condition then
                    if Token.Object'Pos (Lex.Lex_Get_Token) =
                       Token.Object'Pos (Token.L_Alors) then
                        Lex.Lex_Next;
                        if Parse_Liste_Instruction then
                            if Token.Object'Pos (Lex.Lex_Get_Token) =
                               Token.Object'Pos (Token.L_Fin) then
                                Lex.Lex_Next;
                                if Token.Object'Pos (Lex.Lex_Get_Token) =
                                   Token.Object'Pos (Token.L_Si) then
                                    Lex.Lex_Next;
                                    return True;
                                else
                                    return False;
                                end if;
                            else
                                return False;
                            end if;
                        else
                            return False;
                        end if;
                    else
                        return False;
                    end if;
                else
                    Text_Io.Put_Line ("Erreur dans parse condition");
                    return False;
                end if;
            when Token.L_Repeter =>
                Lex.Lex_Next;
                if Parse_Operande then
                    if Token.Object'Pos (Lex.Lex_Get_Token) =
                       Token.Object'Pos (Token.L_Fois) then
                        Lex.Lex_Next;
                        if Parse_Liste_Instruction then
                            if Token.Object'Pos (Lex.Lex_Get_Token) =
                               Token.Object'Pos (Token.L_Fin) then
                                Lex.Lex_Next;
                                if Token.Object'Pos (Lex.Lex_Get_Token) =
                                   Token.Object'Pos (Token.L_Repeter) then
                                    Lex.Lex_Next;
                                    return True;
                                else
                                    return False;
                                end if;
                            else
                                return False;
                            end if;
                        else
                            return False;
                        end if;
                    else
                        return False;
                    end if;
                else
                    Text_Io.Put_Line ("Erreur dans parse operande");
                    return False;
                end if;
            when Token.L_Puis =>
                Lex.Lex_Next;
                return True;
            when others =>
                declare
                    Ok : Boolean;
                begin
                    Parse_Action (Validation_Bloc, Ok);
                    return Ok;
                end;
        end case;
    end Parse_Instruction;

-- DEBUT DU TRAITEMENT DE LA FONCTION PARSE LISTE INSTRUCTION

begin
    if Parse_Bloc_Instruction then
        if Parse_Liste_Instruction then
--         text_IO.Put_Line ("parse liste instruction est OK");
            return True;
        else
            Text_Io.Put_Line ("Erreur dans Parse liste instruction");
            return False;
        end if;

-- lors du retrait du texte, remplacer toute les instructions precedentes par :
-- RETURN Parse_Liste_Instruction

    else
        if Validation_Bloc then
            Text_Io.Put_Line ("erreur dans Parse bloc");
            return False;
        else
            return True;
        end if;
    end if;

-- lors du retrait du texte, remplacer toute les instructions precedentes par :
-- RETURN not Validation_Bloc

end Parse_Liste_Instruction;