Forms 如何在Fortran中读取简单表达式?

Forms 如何在Fortran中读取简单表达式?,forms,parsing,fortran,Forms,Parsing,Fortran,在Fortran程序中,是否可以读取包含变量的表达式? 例如,输入文件是(如果需要,我们可以更改表达式的输入形式,例如二进制形式), 2(a-4b) 需要注意的是,输入表达式的形式非常简单,它只包含整数、分数或一些变量,如列表中的以下内容:, {0232,-2/5a,3a-b,b/9} 这里2a表示2*a Fortran程序是 Program test implicit none real(kind=8)::a,b,exp a=10. b=3. ! open file and read the

在Fortran程序中,是否可以读取包含变量的表达式? 例如,输入文件是(如果需要,我们可以更改表达式的输入形式,例如二进制形式), 2(a-4b) 需要注意的是,输入表达式的形式非常简单,它只包含整数、分数或一些变量,如列表中的以下内容:, {0232,-2/5a,3a-b,b/9} 这里2a表示2*a

Fortran程序是

Program test
implicit none
real(kind=8)::a,b,exp 
a=10.
b=3.
! open file and read the input expression
! that is, exp=2*(a-4*b) 
write(*,*) exp  ! we can get exp=-4.0
end program 

对于复杂的表达式,使用Fortran显然不是一个好主意。我只是想知道,在这个简单的输入表达式的例子中,是否有可能找到更好的方法?

Fortran无法做到这一点,除非您编写代码来解析任意表达式、替换和求解,这需要一些工作(有关详细信息,请参阅下面的注释)。Fortran是编译的,没有办法动态加载源代码,编译并运行它,这基本上就是您所要求的。您可以研究一种语言,比如Lisp,在这种语言中这样做应该是很简单的。类似地,任何脚本语言都有计算代码的工具,这些工具可以满足您的要求。

使用Fortran测试三个表达式计算器的站点是可用的。只有“巴西人”的链接起作用。
还有一个Sourceforge项目fparser。

您用标签标记了问题。你的问题和正则表达式有关吗?如果是的话,请你澄清一下,这并不明显。我会说“不”,但需要更多的字符。你需要的不是写
a=10b=3
,而是使用哈希表。您可以在这里看到如何实现它:表达式计算器很容易编写。请参阅本文,了解如何编写通用解析器,它可以很好地应用于表达式:当“解析器”运行时,它可以计算表达式以计算所需的答案;这是一个简单的扩展。