在Fortran中配置文件解析器

时间:2011-02-24 03:52:38

标签: fortran configuration-files config

我希望能够使用简单的配置文件将参数传递给我的程序。此配置文件将包含一个参数列表,其值可以是不同类型(整数,实数,逻辑,单词列表等)。

以下是我希望能够以简单方式解析的配置示例:

! This is a first comment
param1 = 1234;
param2 = TRUE;                    ! This is a second comment

param3 = abc def ghi jkl mno   
             pqr stu vwx yz;

! Another type of instruction, 
! i.e. to specify that var1-var3 depend on var4-var10:
var1 var2 var3 ~ var4 var5 var6
                 var7 var8 var9 var10;

允许换行,并且可以将不同类型的指令传递给程序。

我知道NAMELIST可以以某种方式允许这样做(除了本例中配置文件的最后一部分),但它似乎不够灵活,不能满足我的需要。例如,我认为它不允许在配置文件中插入注释。

我发现C和C ++中的许多库提供了这样的配置文件解析器,但令人惊讶的是,在Fortran中没有任何东西。有人知道这样的图书馆吗?

提前感谢您的帮助!

6 个答案:

答案 0 :(得分:2)

我们有一个名为aotus的库,它允许在Fortran应用程序中使用Lua脚本作为配置文件:AOTUS 可能这对你有用。

答案 1 :(得分:2)

我总是建议您为配置文件使用标准格式。如果你想说,编写你的程序脚本,或者用另一种编程语言生成或读取你的配置文件,这可以带来好处。现在(2015年)有几个可用于Fortran的良好标准配置文件解析器,因此不需要使用其他语言。例如,见:

请注意,这些都适用于现代Fortran,并且需要一个较新的编译器(例如,gfortran 4.9或更高版本)。

答案 2 :(得分:0)

也许是这样的? http://gbenthien.net/strings/首先在google中搜索fortran字符解析器。

答案 3 :(得分:0)

Alterra的SWAP水文模型中使用的另一个选项是TTUTIL。我在它周围设置了rough R bindings

虽然我不确定如何处理使用此库的示例的最后部分:(

答案 4 :(得分:0)

我建议使用清晰简单的普通C配置解析器 libconfig

您可以使用gcc或Intel编译器轻松链接libconfig驱动的模块(使用C语言编写)和Fortran代码。

答案 5 :(得分:0)

几年前,当我开始使用Fortran时,我也很惊讶没有配置文件解析器。这就是我决定编写自己的解析器的原因:fortran_config。故意保持语法非常简单:

name_of_variable = value1 [value2 value3 ...] # Optional comment

变量可以是整数,实数,字符串或逻辑。