FYPP是Python动力预处理器。它可用于任何编程语言,但其主要目的是提供fortran预处理器,该过程有助于使用辅助编译和模板元编程功能扩展Fortran。它没有引入自己的表达语法,而是在预处理程序指令中使用Python表达式,在制定元编程任务时提供了Python的一致性和多功能性。它非常重视鲁棒性和整合整合到开发工具链中。
该项目托管在Github上。
详细的文档可在ReadThedocs.org上找到。
FYPP根据BSD 2-CAREASE许可发布。
定义,评估和删除变量:
#:如果调试> 0 打印 *,“一些调试信息” #:endif #:设置loglevel = 2 打印 *,“ loglevel:$ {loglevel} $” #:del loglevel
宏定义和宏调用:
#:def ostert(cond) #:如果调试> 0 如果(.not。$ {cond} $),则 print *,“ surstert失败在文件$ {_文件_} $,行$ {_ line _} $”中 错误停止 如果结束 #:endif #:EndDef断言 呢通过直接呼叫调用(参数不需要报价) @:assert(size(myarray)> 0) 呢称为python表达式(参数需要报价) $:断言('size(myarray)> 0')
条件输出:
程序测试 #:如果定义('with_mpi') 使用MPI #:elif定义('with_openmp') 使用OpenMP #:别的 使用串行 #:endif
迭代输出(例如用于生成fortran模板):
接口myfunc #:对于['real','dreal','复杂','dcomplex']中的dtype 模块过程myfunc _ $ {dtype} $ #:Endfor 结束接口myFunc
内联指令:
逻辑,参数:: hasmpi =#{如果定义('mpi')}#.true。 #{else}#.false。 #{endif}#
插入任意Python表达式:
字符(*),参数:: comp_date =“ $ {time.strftime('%y-%m-%d')} $
在预处理过程中包含文件:
#:包括“ macrodefs.fypp”
在预处理器指令中使用FORTRAN风格的连续线:
#:如果var1> var2& &或var2> var4 打印 *,“在这里做某事” #:endif
传递(未引用的)多行字符串参数到可可:
#!可呼叫只需要字符串参数 #:def debug_code(代码) #:如果调试> 0 $:代码 #:endif #:endDef debug_code #!通过代码块作为第一个位置参数 #:Block Debug_code if(size(array)> 100),然后 印刷 *,“调试:伪造的大数组” 如果结束 #:endBlock debug_code #!可召唤的需求也非弦乐参数类型 #:def repot_code(代码,重复) #:对于IND范围(重复) $:代码 #:Endfor #:endDef repot_code #!通过代码块作为位置参数,3作为关键字参数“重复” #:Block repot_code(重复= 3) 这将重复3次 #:endBlock retoce_code
预处理器评论:
#!这不会显示在输出中 #!另外,线路结尾处的newline字符将被压制
抑制选定区域中的预处理器输出:
#!读取定义,但不会产生输出(例如新线) #:沉默的 #:包括“ macrodefs.fypp” #:Endmute
明确要求停止预处理器:
#:如果Debuglevel <0 #:停止“不允许的负调试级别!” #:endif
轻松检查宏参数理智:
#:Def Mymacro(等级) #!宏仅适用于等级1及以上 #:断言等级> 0 : #:Enddef mymacro
输出中的行编号指令:
程序测试 #:如果定义('mpi') 使用MPI #:endif :
转变为
#1“ test.fypp” 1 程序测试 #3“ test.fypp” 使用MPI #5“ test.fypp” :
当定义可变MPI
并指示FYPP生成线路标记时。
生成线的自动折叠超过线长度极限
FYPP需要一个工作的Python 3口译员(Python 3.5或更高)。
安装FYPP时,您将获得命令行工具fypp
和Python模块fypp.py
后者,如果您想直接从Python脚本中访问FYPP的功能,则可以导入。
FYPP的最后一个稳定版本可以通过发行轻松安装为Conda包
conda install -c conda -forge fypp
您还可以使用Pythons命令行安装程序pip
以便从PYPI上的FYPP页面下载稳定版本并将其安装在系统上。
如果要将FYPP安装到Active Python 3解释器的模块系统中(通常是在使用Python虚拟环境时),请发行
PIP3安装FYPP
或者,您可以使用
PIP3安装 - 使用者FYPP
在Windows上,您可以使用MSYS2工具链在MINGW终端安装FYPP。安装FYPP使用:
PACMAN -S MINGW-W64-X86_64-PYTHON-FYPP
确保所选的体系结构与您当前的MINGW终端匹配。对于所有支持MINGW架构的所有支持,请访问此处检查包索引。
对于手册安装,您可以从FYPP项目网站下载稳定版本的源代码。
如果您想获得最新的开发版本,请克隆项目存储库:
git克隆https://github.com/aradi/fypp.git
并查看主分支。
命令行工具是一个独立脚本。您可以直接从源文件夹运行
fypp_source_folder/bin/fypp
或将其从bin文件夹复制到路径环境变量中列出的任何位置,仅通过发出
FYPP
Python模块fypp.py
可以在FYP_SOURCE_FOLDER/src
中找到。
FYPP命令行工具读取文件,预处理并将其写入另一个文件,因此您通常会像以下方式调用它:
FYPP Source.FPP Source.F90
将处理源源。fpp并将结果写入源。f90。如果未指定输入和输出文件,则从stdin读取信息并写入STDOUT。
FYPP的行为可能会受到各种命令行选项的影响。所有命令行选项的摘要可以通过:
FYPP -H