LFortran 开发现状¶
此页面记录了 LFortran 支持的 Fortran 功能。对于每个特性,我们列出了一个简短的描述,以及编译器每个部分的测试和当前状态的文件名:
AST:代码可以解析为 AST (
lfortran --show-ast test.f90
)ASR:代码可以转换为 ASR (
lfortran --show-asr test.f90
)LLVM:LFortran 可以生成 LLVM IR (
lfortran --show-llvm test.f90
)BIN:LLVM IR 可以编译为二进制文件
RUN:二进制运行没有错误
如果全部为绿色,则表示该功能完全有效,你可以在代码中使用它。否则,你可以查看每个功能的状态。
此页面是使用 Compiler Tester 存储库自动生成的,该存储库包含所有 Fortran 测试和脚本,用于运行 LFortran 以生成下表。我们正在寻找贡献者来贡献更多的测试。我们的目标是拥有一个全面的 Fortran 测试套件,可用于测试任何 Fortran 编译器。
测试 LFortran 编译器版本:
$ lfortran --version
LFortran version: 0.12.0-491-gaf48ff273
Platform: macOS
Default target: x86_64-apple-darwin20.3.0
话题¶
计算有趣事物的完整程序¶
基本数值¶
路径:tests/programs/numerics
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
模块¶
基本用法¶
路径:tests/modules/basic
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
模块函数和子程序¶
路径:tests/modules/procedures
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
表达式¶
算术运算¶
路径:tests/expressions/arit
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
整型¶
路径:tests/expressions/integers
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
实数¶
路径:tests/expressions/reals
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
复数¶
路径:tests/expressions/complex
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
字符串¶
路径:tests/expressions/character
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
派生类型¶
路径:tests/expressions/derived_type
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
声明¶
分配语句¶
路径:tests/statements/allocate
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
块语句¶
路径:tests/statements/block
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
转到语句¶
路径:tests/statements/goto
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
如果语句¶
路径:tests/statements/if
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
While 语句¶
路径:tests/statements/while
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Print 声明¶
路径:tests/statements/print
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Open、Read、Write、Close语句¶
路径:tests/statements/file_io
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
内置函数¶
abs¶
路径:tests/intrinsic/abs
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
exp¶
路径:tests/intrinsic/exp
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
log¶
路径:tests/intrinsic/log
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sqrt¶
路径:tests/intrinsic/sqrt
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sin¶
路径:tests/intrinsic/sin
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
cos¶
路径:tests/intrinsic/cos
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
tan¶
路径:tests/intrinsic/tan
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sinh¶
路径:tests/intrinsic/sinh
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
cosh¶
路径:tests/intrinsic/cosh
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
tanh¶
路径:tests/intrinsic/tanh
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
asin¶
路径:tests/intrinsic/asin
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
acos¶
路径:tests/intrinsic/acos
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
atan¶
路径:tests/intrinsic/atan
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
modulo¶
路径:tests/intrinsic/modulo
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
mod¶
路径:tests/intrinsic/mod
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
min¶
路径:tests/intrinsic/min
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
max¶
路径:tests/intrinsic/max
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
int¶
路径:tests/intrinsic/int
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
real¶
路径:tests/intrinsic/real
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
floor¶
路径:tests/intrinsic/floor
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
nint¶
路径:tests/intrinsic/nint
描述 |
AST |
ASR |
LLVM |
BIN |
RUN |
文件名 |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |