为了提高FORTRAN代码的性能,我希望对数组的索引进行置换,以便将第4个索引移到第二个位置,例如,我想更改下面的行
ts(l,i,j,k) = ts(l,i,j,k1(i,j))
到
^{pr2}$注意,这只是一个例子行,指数并不总是被称为i,j,k,l。。。我只知道阵法的名字和等级。因此,我不能仅仅在逗号处分隔4个参数,因为一个单独的参数也可以是一个有逗号的矩阵(在上面的例子中k1(I,j))。所以我的第一个想法
^{3}$在这种情况下失败(在上面的代码行中是rhs),因为它给出了:
ts(l,k,i,j) = ts(l,j),i,j,k1(i)
我需要的是一个正则表达式,它只在最多打开1个括号时拆分数组的索引。有人能告诉我如何使用sed/python/perl来实现这一点吗?在
致以最良好的祝愿
也许直接regexp有点困难。如果有可用的脚本语言,请尝试以下操作。在您检测到包含数组访问的行之后。 (在python中)
一旦有了参数列表,就可以在将字符串放回一起时对它们进行置换
如果括号的嵌套深度不超过您的示例中的深度,则此方法应该有效:
不是说它很漂亮。。。在
说明:
^{pr2}$相关问题 更多 >
编程相关推荐