Exemplo n.º 1
0
def interfaceAutomataProduct():
    NFA.VISULANG = 0
    client = NFA.spec("""
        1 
        1
        1 msg! 2
        2 ok? 1""").named("client").visu()

    comp = NFA.spec("""
        1 
        1
        1 msg? 2
        2 envoyer! 3
        3 nack? 4 ack? 6
        4 envoyer! 5
        5 ack? 6 nack? 7
        6 ok! 1
        7 echec! 1
        """).named("comp").visu()

    comp_client = NFA.interface_sprod(comp, client, visu_dnice=True).visu()

    canal = NFA.spec("""
            1 
            1
            1 envoyer? 2
            2 token! 3
            3 ack! 4
            4 liberer_token! 1
            D nack! D
            """).named("canal").visu()
    # print(canal)

    canal_comp_client = NFA.interface_sprod(
        comp_client, canal, visu_dnice=True).visu().trim().visu()
    NFA.VISULANG = 10

    Vendor = NFA.spec("""
    0
    7
    0 pay? 1
    ## 1 deliver! 2 
    1 verif! 3
    ## 2 verif! 4
    3 deliver! 4 transfer? 5
    4 transfer? 7
    5 deliver! 7
    """,
                      name="Vendor",
                      worder=tuple)
    Vendor.visu()

    Client = NFA.spec("""
    0
    0
    0 pay! 0 deliver? 0 cancel! 0
    """,
                      name="Client",
                      worder=tuple)
    Client.visu()

    Bank = NFA.spec("""
    0
    1 3
    0 cancel? 1
    0 verif? 2
    2 transfer! 3
    """,
                    name="Bank",
                    worder=tuple)
    Bank.visu()

    CB = NFA.interface_sprod(Client, Bank).visu()
    Sys = NFA.interface_sprod(CB, Vendor).visu()