使用sed格式化fortran代码

时间:2015-06-26 06:04:09

标签: sed fortran

我写了这个sed代码来格式化我的fortran代码:

sed -r   's/ +/ /g'   main.f08 |sed -r  's/(\W|,)/ \1/g' |sed -r 's/ +/ /g'

但我对sed的了解有限。

我想知道,是否可以使用fortran清除sed代码。即在单词之间添加缩进和正确的空格。

有没有更好的方法(软件)来清理Fortran代码。

使用perlpython可能更好的解决方案。

例如假设这段代码:

 program xytab
 implicit none
 !constructs a table of z =x /y for values of x from 1 to 2 and
 !y from 1 to 4 in steps of .5
 real : : x,y,z
 print *, '           x           y           z'
 do x=1,2
 do y=1,4,0.5
 z =x /y
 print *,x,y,z
 end do
 end do
 end program xytab

我想得到这样的东西:

program  xytab
    implicit none
    !constructs a table of z=x/y for values of x from 1 to 2 and
    !y from 1 to 4 in  steps of .5
    real :: x, y, z
    print *, '           x           y           z'
    do  x = 1, 2
        do y = 1,4, 0.5
            z = x / y
            print *, x, y, z
        end do
    end  do
end  program xytab

Reference

1 个答案:

答案 0 :(得分:1)

我之前的评论转换为答案,因此可以将此问题标记为已回答......

sed方法的一个难题是确保doend do对(以及其他类似的缩进对)的缩进正确匹配。这是严格的(正如在顺从计算机科学文本中熟悉的正则表达式的理论模型),正则表达式工具是不能做到的。 (有关进一步的证据,甚至可以证明,搜索关于Qs的SO和关于正则表达式中括号匹配的As。)

就我个人而言,我不会使用sed。我将源代码加载到程序员的编辑器中,使用该工具的工具来格式化代码,然后,正如他们所说, Robert是你母亲的兄弟。即使你曾经使用过程序员的编辑器,它也会为你节省大量的时间,试图让sed做一些不合适的事情。 (当然,这并不是你应该使用程序员的编辑器。)sed可以快速匹配正则表达式,但与其他一些实现(例如任何实现的库或工具)相比,它的功能相当有限。 {3}}

你或其他任何人都应该想知道程序员的编辑器是什么,为什么,它是一个文本编辑器,它可以正确地自动缩进源代码文件。