[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

generateur d'analyseur syntaxique libre (C++) compatible avec un ramasse-miettes précis?



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 


Reply to: