Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[etags] regexp pour le fortran 90...

3 réponses
Avatar
fred
Bonsoir,

Intro : je dois reprendre le code fortran 90 de quelqu'un (~25000 lignes)

Développement : pour m'aider à mener à bien cette tâche, je compte
m'aider des tags.

Conclusion : les regexp par défaut de etags pour le fortran (surement le
77) ne sont pas satisfaisantes pour le 90.

Question : comment faire ?

Par exemple, pour commencer, une question simple :

j'arrive à récupérer les champs integer avec

etags -l fortran -r '/integer [ \t]*:: .*/' *.f90

Avec ça, je récupère par exemple ça :

integer :: nb_processus, rang

Par contre, comment récupérer les champs integer avec des options, genre

integer, parameter :: Ndims=2
integer, dimension(Ndims) :: dims, coord,coordmax
integer,allocatable, target :: patchx(:,:,:)

etc, etc...

sachant que le code n'est pas forcément (voir pas du tout) indenté
proprement, des espaces ou pas séparant les noms de variables...

Quelqu'un aurait-t'il une palanquée de regexp faisant proprement le
boulot pour du fortran 90 ?


Merci.

--
Fred.

3 réponses

Avatar
fred
fred a écrit :

Par contre, comment récupérer les champs integer avec des options, genre

integer, parameter :: Ndims=2
integer, dimension(Ndims) :: dims, coord,coordmax
integer,allocatable, target :: patchx(:,:,:)



Il y a bien la solution de tout ré-indenter, en l'occurence, virer
toutes les tabulations, qui font que c'est justement indenté n'importe
comment (forcément, les sources ont été écrits sous un OS dont je
tairais le nom avec un éditeur/logiciel dont je tairais aussi le
nom...). Dans ce cas, ça donne des résultats corrects.

M'enfin bon, une vingtaine de fichiers et 25000 lignes... :-(

Parce que je ne vois pas comment obtenir une indentation correcte
automatiquement (càd remplacer toutes les tabs, et que tout soit aligné
ensuite).

--
Fred, qui verra au coup par coup.
Avatar
jerome.besnard+news
Si je ne m'abuse (mais je m'abuse moi-meme assez vite en general...;-)), en
Fortran l'indentation est assez simple, et le mode emacs la gere bien
(evidemment, de quoi je cause...).
Alors l'option de balancer une grosse regexp de remplacement de tab par 1 (ou
plusieurs, voire aucun) espace des qu'on n'est pas dans un commentaire, puis
une reindentation du buffer a grand coup d'indent-region ca devrait le faire.
Pas moyen de tester (et puis j'ai la flemme) mais je ne vois pas bien ce qui
poserai probleme.
Apres on met indent-tabs-mode à nil, et roule.
Non ?
--
Jerome
Avatar
Matthieu Moy
fred writes:

Il y a bien la solution de tout ré-indenter, en l'occurence, virer
toutes les tabulations,



Un mini-script à base de

perl -pi -e 's/t/ /g'

puis de

indent

devrait faire ça.

--
Matthieu