• # version généraliste du générateur de code de cpython

    Posté par (site web personnel) . En réponse au journal PyConfr2017 - Boudu !. Évalué à 4.

    En fait, l'outil ayant inspiré le générateur de code de cpython et dont le générateur de cpython n'est qu'une version spécifique à la tache est: https://nedbatchelder.com/code/cog/ C'est du bon mangez en!

    Exemple tiré de la documentation (basique pour comprendre comment ca marche:

    Vous écrivez ce code source

    // This is my C++ file.
    ...
    /*[[[cog
    import cog
    fnames = ['DoSomething', 'DoAnotherThing', 'DoLastThing']
    for fn in fnames:
     cog.outl("void %s();" % fn)
    ]]]*/
    //[[[end]]]
    ...
    

    Vous le faites passé à la moulinette cog et ca donne ca:

    // This is my C++ file.
    ...
    /*[[[cog
    import cog
    fnames = ['DoSomething', 'DoAnotherThing', 'DoLastThing']
    for fn in fnames:
     cog.outl("void %s();" % fn)
    ]]]*/
    void DoSomething();
    void DoAnotherThing();
    void DoLastThing();
    //[[[end]]]
    ...
    

    Et vous pouvez à nouveau modifier le code source python et repasser a la moulinette pour regénérer au sein du même fichier le code source.

    L'idée de base est que le code généré est le le code générant sont gardés dans le même source