Bonjour la liste,

J'utilise carburetta https://carburetta.com/ comme generateur
d'analyseur lexical et syntaxique.

Cet outil est très pratique, libre et facilement compilable sur Debian.

Mais il requiert (à mon grand regret) en entrée un fichier avec (en
plein d'endroits) une seule ligne logique en C++ par exemple voir le
fichier
https://github.com/RefPerSys/RefPerSys/blob/master/carbrepl_rps.cbrt
et plus particulièrement dans le commit 96d25ff0bada41 de RefPerSys 
par exemple les lignes 160 à 169 du fichier carbrepl_rps.cbrt

Le code C++ généré par carburetta (j'en utilise la version 0.8.28)
contient les memes lignes logiques longues, par exemple 

#line 169 "carbrepl_rps.cbrt"
            {  _Pragma("message \"token_action for INT\"");    \
  (stack->sym_data_->v_.uv0_) = carbdata.cardata_i;            \
  RPS_DEBUG_LOG(REPL, "token_action for INT tksrc=" << *tksrc  \
                << " cardata_i=" << carbdata.cardata_i);       \
  RPS_FATALOUT("INT token_action is incomplete tksrc="         \
               << tksrc << " sym=" << sym                      \
               << ":" << RPS_CARBREPL_SYMBOL_NAME(sym)         \
               << RPS_FULL_BACKTRACE(1, "token_action INT"));  \
 }
#line 3484 "_carbrepl_rps.cc"

mais les antislashs finaux en ligne physique m'indisposent, et je
cherche un outil (filtre Linux) pour les enlever.

Les conventions lexicales de C++ sont dans le détail très complexes,
donc coder un tel filtre me parait compliqué


Librement
-- 

Basile STARYNKEVITCH                           
<[email protected]>
8 rue de la Faïencerie                      
http://starynkevitch.net/Basile/  
92340 Bourg-la-Reine                        
https://github.com/bstarynk
France                               
https://github.com/RefPerSys/RefPerSys
                  https://orcid.org/0000-0003-0908-5250

Répondre à