• generateur d'analyseur syntaxique libre (C++) compatible avec un ramass

    From Basile Starynkevitch@21:1/5 to All on Thu Feb 6 08:50:01 2025
    Bonjour,

    Pour le moteur d'inférences RefPerSys ("reflexive persistent system") en https://github.com/RefPerSys/RefPerSys sous licence GPLv3+ il me faut un generateur d'analyseur syntaxique (voir https://en.wikipedia.org/wiki/Comparison_of_parser_generators ...)
    qui génère du code C++, et le code généré doit être compatible avec un ramasse-
    miettes précis que j'ai déjà écrit, et accepter en entrée une chaine (std::string) ou un flot générique d'octets (std::istream) encodé en UTF-8.


    Pour fixer les idées le ramasse-miettes existant s'inspire vaguement de celui d'Ocaml ou bien de http://starynkevitch.net/basile/qishintro.html et utilise des
    macros existantes en C++. Dans la terminologie habituelle ce ramasse-miettes est
    copieur pour les valeurs immuables mais marqueur pour les objets mutables et contenant chacun un verrou (le modèle objet de RefPerSys s'inspire d'ObjVLisp: héritage simple, métaclasses implémentés avec du code C++ existant)

    J'hésite entre deux approches:


    1. modifier un générateur d'analyse existant (par exemple GNU bison ou bison++),
    mais j'ai besoin d'exemples. En particulier des exemples libres de fichier "skeleton" ou squelette pour ceux-ci.

    2. modifier le code C++ généré par ce générateur (qui en pratique est régulier,
    peu lisible par un humain...) probablement par un script GNU gawk; ça semble techniquement risqué (car le générateur -comme GNU bison- ne garantit rien sur
    la forme syntaxique du code C++ généré).


    sachant que j'ai déjà écrit du code C++ pour l'analyse lexicale (c'est dans le
    fichier lexer_rps.cc)

    la difficulté supplémentaire est que RefPerSys est multi-threadé. Un thread posix peut modifier le tas durant l'analyse syntaxique (mais les données sont vérouillées par des std::mutex).

    Les idées de RefPerSys sont expliquées en anglais sur http://refpersys.org/ et
    je peux bien évidemment répondre par courriel à toute question technique.

    En plus je cherche à intégrer un consortium ANR ou ITEA ou HorizonEurope existant pour soutenir et financer très partiellement ce projet logiciel libre et/ou des contributeurs bénévoles (au moins pour des suggestions de syntaxe et
    d'applications).

    Vos conseils et suggestions sont bienvenus.
    --
    Basile STARYNKEVITCH <basile@starynkevitch.net>
    8 rue de la Faïencerie
    92340 Bourg-la-Reine, France
    http://starynkevitch.net/Basile & https://github.com/bstarynk

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)