Langage de manipulation de flux texte

WRInaute passionné
Hello,

En dehors de SED (trop rapidement illisible), AWK (que je ne connais pas, mais d’après des retours, trop sujet au erreur), Perl (devenu une usine à gaz), Icon (plus supporté sous Windows depuis Windows 3.1), quels autres langages dédiés à la transformation et à l’analyse de flux texte connaissez-vous ?

Dans l’idéal, il devrait supporter Unicode (sinon c’est poubelle directe), et avoir des constructions lisibles, mais les paradigmes passent avant la syntaxe (mais il ne faut abuser non-plus… quand on voit ce qu’est SED), et si possible, tenir du style fonctionnel plus que du style procédural. Qu’il soit célèbre ou pas, n’est pas un critère.

I welcome any tracks.
 
WRInaute passionné
Merci, ça fait plaisir que le sujet t’intéresse :D

J’ai lu la page de Wikipédia que tu indique (je ne m’étais pas promené par là). Il y a des choses intéressantes, mais à l’abandon, comme AIS Balise : -http://en.wikipedia.org/wiki/AIS_Balise
AIS Balise was the name of a very elegant but short-lived programming language in the mid-late 1990s, dedicated to SGML and XML transformation and processing. It was somewhat like Javascript in syntax and programming environment, but far richer in its built-in markup-handling functionality.
Attirante cette description, mais le lien qui est donné renvoie sur une page qui ne contient que des liens brisés. Seul reste la page d’accueil. Dommage…

Il y a encore Chomsky (avec un nom pareil, j’espère que ça tient ses promesses), mais au sujet duquel il n’est pas possible d’aller plus loin, parce que la page censé fournir les sources ou des binaires compilés, renvoie une erreur serveur.
-http://en.wikipedia.org/wiki/Chomski

Alors intéressant, j’ai appris que Python est un descendant de REXX.


Tes liens vers Python justement… je n’avais pas pensé à Python, parce que peut-être que je suis un peu trop fermé à ce sujet, mais j’ai une allergie aux langages de script en général, parce qu’ils évoluent mal avec le temps (Perl, PHP, langages de shell) et qu’ils sont mal utilisés (utilisés pour créer des applications au sens large, alors que leurs adaptations en font des langages spécialisés dans un domaine). Python est également souvent mal utilisé (confondu avec un langage qui est censé résoudre les questions de portabilité des applications au sens large, alors que ce n’est pas son rôle), alors je ne l’ai pas eu à l’esprit.

Mais comme de toutes les options intéressantes que tu cite, c’est la seule réalisable, en attendant de voir de Chomsky, ben je vais lire ce bouquin en ligne.


Si tu veux en dire plus sur la manière dont, et les raisons pour lesquelles, ce sujet t"intéresse, ne te prive pas!


Sinon, en y pensant, je me dis que SED pourrait être une bonne base, si au moins il était un peu plus structuré, s’il était possible de décomposer ses expressions, ça le rendrait plus lisible. Mais en même temps, ce qui est terrible avec tout ceux là (SED, AWK, et plusieurs basées sur les expression régulière), c’est qu’ils peinent tous à traiter avec les expressions régulières sur plusieurs ligne… ils sont tous orientés ligne! Une petite recherche sur le web avec des expressions comme “sed multiline regexp”, “awk multiline regexp”, “text editor multiline regexp”, etc, donne une idée du vide dans ce domaine, alors que l’on fait facilement ce type de choses en JavaScript (encore un autre langage de script qui a débordé de son cadre légitime).

P.S. Oui, c’est bizarre qu’ils n’aient pas mentionné Python vu ceux qui y sont déjà. Je vais l’ajouter.
 
WRInaute accro
Le sujet m'intéresse car c'est enrichissant ;)

Tu as l'air de mieux t'y connaitre.
Je suis une quiche dans les expression régulières (m'y suis jamais bcp intéressé), donc pour devoir faire des routines de traitement de texte, je me dirigerais plutôt vers un langage de programmation (maitrisé ou a apprendre).

A propos de Python, un article que j'ai lu dernièrement:
http://olivierpons.fr/2010/02/06/debutants-pourquoi-le-langage-python/
Pour des petits projets (100 lignes ou moins) qui impliquent énormément de filtres de texte (« pattern matching »), je pense que je pencherai peut-être vers une bonne expression régulière Perl plutôt que du code Python. En regardant les scripts « timeseries » et « growthplot » Perl de la distribution « fetchmail », je peux dire que ce sont presque des choses qu’on pourrait faire en utilisant une bonne combinaison de awk/sed/grep/sh.
 
WRInaute passionné
Arrête, tu va me mettre mal à l’aise, surtout si n’est pas nécessairement mérité.

Moi non-plus je ne raffole pas des expressions-régulières, parce qu’elles deviennent vite indigestes. Là aussi, ça manque de variable pour les décomposer (même commentaire que pour SED).

Dans mes marques pages, je dois avoir deux ou trois choses pour faciliter leur édition. Je te les posterai ici à l’occasion.

Ton lien, il est drôle :
En fait, le terme « formatage libre » utilisé pour décrire le nouveau style de langage orienté « mot-clé », par exemple en Pascal et en C, a presque été oublié ; c’est parce que tous les langages d’aujourd’hui sont basés sur ce principe. Enfin presque tous. C’est difficile de blâmer quelqu’un, si, lorsqu’il voit un code Python, réagit comme s’il avait marché dans une bouse de dinosaure.

Je continue à lire.
 
WRInaute passionné
Suis-je si bête que ça…

Ayant parlé de m4, j’ai repensé à Gema, que je connaissais il y a quelque temps, et que j’ai déplacé dans mes archives après ne plus l’avoir utilisé, je ne sais plus pourquoi.

Et donc je me re-penche dessus, et : Gema preprocessor manual page
Le précédent lien a dit:
It can be used as a macro processor, but it is much more general than cpp or m4 because it does not impose any particular syntax for what a macro call looks like. Unlike utilities like sed or awk, gema can deal with patterns that span multiple lines and with nested constructs.
Déjà un bon point… et je l’avais sous la main.

À re-étudier.

-- EDIT --
Une autre description :

-http://en.wikipedia.org/wiki/General_purpose_macro_processor
Le précédent lien a dit:
gema is a contextual macro processor based on pattern matching. It replaces/enhances the concept of regular expressions by contexts. Contexts roughly corresponds to named sets of patterns. As a consequence, macros in gema closely resemble an EBNF description.

Cette dernière page parle de preprocesseurs à usage général. C’est peut-être vers ce type de langage spécialisés qu’il faut que je m’oriente (me suis jamais suffisamment penché sur cette catégorie, pourtant bien intéressante). Il y en a d’autres : GMP, ML/I, …
 
Discussions similaires
Haut