我写了这个sed
代码来格式化我的fortran代码:
sed -r 's/ +/ /g' main.f08 |sed -r 's/(\W|,)/ \1/g' |sed -r 's/ +/ /g'
但我对sed
的了解有限。
我想知道,是否可以使用fortran
清除sed
代码。即在单词之间添加缩进和正确的空格。
有没有更好的方法(软件)来清理Fortran代码。
使用perl
或python
可能更好的解决方案。
例如假设这段代码:
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
答案 0 :(得分:1)
我之前的评论转换为答案,因此可以将此问题标记为已回答......
sed
方法的一个难题是确保do
和end do
对(以及其他类似的缩进对)的缩进正确匹配。这是严格的(正如在顺从计算机科学文本中熟悉的正则表达式的理论模型),正则表达式工具是不能做到的。 (有关进一步的证据,甚至可以证明,搜索关于Qs的SO和关于正则表达式中括号匹配的As。)
就我个人而言,我不会使用sed
。我将源代码加载到程序员的编辑器中,使用该工具的工具来格式化代码,然后,正如他们所说, Robert是你母亲的兄弟。即使你曾经使用过程序员的编辑器,它也会为你节省大量的时间,试图让sed
做一些不合适的事情。 (当然,这并不是你应该使用程序员的编辑器。)sed
可以快速匹配正则表达式,但与其他一些实现(例如任何实现的库或工具)相比,它的功能相当有限。 {3}}
你或其他任何人都应该想知道程序员的编辑器是什么,为什么,它是一个文本编辑器,它可以正确地自动缩进源代码文件。