我有一堆使用非标准结构表示法的Fortran 77文件(此处描述):
STRUCTURE /item/
INTEGER id
CHARACTER(LEN=200) description
REAL price
END STRUCTURE
Run Code Online (Sandbox Code Playgroud)
这显然是一些旧编译器使用的语法,但后来在Fortran 90中标准化为以下内容:
TYPE item
INTEGER id
CHARACTER(LEN=200) description
REAL price
END TYPE
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用sed
或一些其他适当的工具来自动处理我的源文件,找到旧语法的所有用法,并修补它们以使用更新的语法(即将"结构"的所有实例更改为"键入"并删除斜杠).我确信我可以构建一些正则表达式来完成这项工作,但是我对这门艺术的熟练程度还不够.
另外,与记录符号有类似的不兼容,也在链接中描述:
RECORD /item/ pear, store_catalog(100)
Run Code Online (Sandbox Code Playgroud)
变为:
TYPE(item) pear, store_catalog(100)
Run Code Online (Sandbox Code Playgroud)
我假设也可以使用类似的技术来修复这些实例.
我对Fortran语法不是很熟悉,所以我不知道如何概括它,但你的例子可以解决
sed 's%^STRUCTURE /\(.*\)/$%TYPE \1%;
s%^END STRUCTURE$%END TYPE%'
Run Code Online (Sandbox Code Playgroud)
注意使用%
分隔命令(s
,替换),模式和替换.通常你会使用/
,但这是要匹配的模式的一部分.
您的RECORD
问题确实应该有类似的解决方案.
归档时间: |
|
查看次数: |
212 次 |
最近记录: |