Groups | Search | Server Info | Login | Register


Groups > linux.debian.devel.french > #1036

Re : outil libre (fitre textuel Linux) reformattant du C++

Path csiph.com!pasdenom.info!newsfeed.bofh.team!news.samoylyk.net!gothmog.csi.it!bofh.it!news.nic.it!robomod
From Bernard Schoenacker <bernard.schoenacker@free.fr>
Newsgroups linux.debian.user.french, linux.debian.devel.french
Subject Re : outil libre (fitre textuel Linux) reformattant du C++
Date Wed, 01 Apr 2026 11:00:01 +0200
Message-ID <MEZAB-bQTL-1@gated-at.bofh.it> (permalink)
References <MEYXT-bQFd-1@gated-at.bofh.it>
X-Mailbox-Line From debian-user-french-request@lists.debian.org Wed Apr 1 08:58:03 2026
Old-Return-Path <bernard.schoenacker@free.fr>
X-Amavis-Spam-Status No, score=-4.099 tagged_above=-10000 required=5.3 tests=[BAYES_00=-2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, DRUGSPAM=3, FOURLA=0.1, FREEMAIL_FROM=0.001, LDO_WHITELIST=-5, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=no autolearn_force=no
MIME-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding quoted-printable
X-Originating-IP [2a01:e0a:89d:81f0:f0cc:403:e89f:d3e8]
X-Mailer Zimbra 7.2.0-GA2598 (zclient/7.2.0-GA2598)
X-Authenticated-User bernard.schoenacker@free.fr
X-Mailing-List <debian-user-french@lists.debian.org> archive/latest/238382
List-ID <debian-user-french.lists.debian.org>
List-URL <https://lists.debian.org/debian-user-french/>
List-Archive https://lists.debian.org/msgid-search/1378848802.450656478.1775033862729.JavaMail.root@zimbra19-e3.priv.proxad.net
Approved robomod@news.nic.it
Lines 118
Organization linux.* mail to news gateway
Sender robomod@news.nic.it
X-Original-Cc debian-user-french@lists.debian.org, debian-devel-french@lists.debian.org
X-Original-Date Wed, 1 Apr 2026 10:57:42 +0200 (CEST)
X-Original-Message-ID <1378848802.450656478.1775033862729.JavaMail.root@zimbra19-e3.priv.proxad.net>
X-Original-References <5722e473317a1e652c130b5dda38cbe6189c54ad.camel@starynkevitch.net>
Xref csiph.com linux.debian.user.french:78504 linux.debian.devel.french:1036

Cross-posted to 2 groups.

Show key headers only | View raw


Bonjour,

Si l’objectif est simplement de recoller les lignes physiques terminées
par un antislash final, un filtre texte simple peut déjà faire le
travail, par exemple avec awk :

```sh
awk '{
  if (sub(/\\$/, "")) printf "%s", $0;
  else print;
}'
```

ou, en sed :

```sh
sed ':a;N;$!ba;s/\\\n//g'
```

La documentation GNU sed couvre bien le travail multi-lignes avec `N`
et les substitutions sur un espace de travail contenant des sauts de
ligne. ([GNU][1])

En revanche, j’aurais tendance à mettre un gros avertissement :
cela convient surtout à du code généré ou à un sous-ensemble bien
maîtrisé. Sur du C++ arbitraire, on peut tomber sur des cas pénibles
avec chaînes, commentaires, directives préprocesseur, etc.

J’ai regardé aussi du côté d’un reformateur comme uncrustify, mais
ce que je vois dans sa configuration documentée concerne l’espace
avant le `\` de continuation de ligne (`sp_before_nl_cont`), pas la
suppression de la continuation elle-même. ([GitHub][2])

Donc, à mon avis :

* pour du code généré par carburetta : un petit filtre awk/sed peut suffire ;

* pour du C++ général : il faudrait un outil plus conscient de
la grammaire, ou au minimum un filtre spécialisé avec hypothèses
explicites.

Librement,
Bernard

[1]: https://www.gnu.org/software/sed/manual/html_node/Multiline-techniques.html?utm_source=chatgpt.com "Multiline techniques (sed, a stream editor)"
[2]: https://github.com/uncrustify/uncrustify/blob/master/documentation/htdocs/default.cfg?utm_source=chatgpt.com "uncrustify/documentation/htdocs/default.cfg at master"





----- Basile Starynkevitch <basile@starynkevitch.net> a écrit :
> 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                           
> <basile@starynkevitch.net>
> 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
> 

Back to linux.debian.devel.french | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

outil libre (fitre textuel Linux) reformattant du C++ Basile Starynkevitch <basile@starynkevitch.net> - 2026-04-01 10:20 +0200
  Re : outil libre (fitre textuel Linux) reformattant du C++ Bernard Schoenacker <bernard.schoenacker@free.fr> - 2026-04-01 11:00 +0200
  Re: outil libre (fitre textuel Linux) reformattant du C++ didier gaumet <didier.gaumet@gmail.com> - 2026-04-01 11:00 +0200

csiph-web