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