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

文件名

Fortran sin(x) 实现

t01_sin_implementation.f90

模块

基本用法

路径:tests/modules/basic

描述

AST

ASR

LLVM

BIN

RUN

文件名

基本模块

t01.f90

模块函数和子程序

路径:tests/modules/procedures

描述

AST

ASR

LLVM

BIN

RUN

文件名

模块函数

t01.f90

模块子程序

t02.f90

嵌套子程序

t03.f90

表达式

算术运算

路径:tests/expressions/arit

描述

AST

ASR

LLVM

BIN

RUN

文件名

+,-,*,/,**

basic_operations.f90

整型

路径:tests/expressions/integers

描述

AST

ASR

LLVM

BIN

RUN

文件名

整型

integer_kind.f90

关系运算

t01_rel_operations.f90

逻辑运算

t02_logical_operations.f90

实数

路径:tests/expressions/reals

描述

AST

ASR

LLVM

BIN

RUN

文件名

单/双精度实数

real_kind.f90

定义的运算符

t01_def_op.f90

复数

路径:tests/expressions/complex

描述

AST

ASR

LLVM

BIN

RUN

文件名

单/双复数

complex_kind.f90

字符串

路径:tests/expressions/character

描述

AST

ASR

LLVM

BIN

RUN

文件名

字符

t01_character.f90

字符串连接

t02_concat_operation.f90

派生类型

路径:tests/expressions/derived_type

描述

AST

ASR

LLVM

BIN

RUN

文件名

基本派生类型

t01_derived_type.f90

声明

分配语句

路径:tests/statements/allocate

描述

AST

ASR

LLVM

BIN

RUN

文件名

分配语句

t01.f90

块语句

路径:tests/statements/block

描述

AST

ASR

LLVM

BIN

RUN

文件名

块语句

t01.f90

转到语句

路径:tests/statements/goto

描述

AST

ASR

LLVM

BIN

RUN

文件名

计算的首选语句

t01.f90

首选声明

t02.f90

如果语句

路径:tests/statements/if

描述

AST

ASR

LLVM

BIN

RUN

文件名

Test .false.

if_01.f90

单行 if 语句

if_02.f90

多行 if 语句

if_03.f90

嵌套的 if 语句

if_04.f90

While 语句

路径:tests/statements/while

描述

AST

ASR

LLVM

BIN

RUN

文件名

简单的 while 循环

while_01.f90

while 循环退出/跳过

while_02.f90

Open、Read、Write、Close语句

路径:tests/statements/file_io

描述

AST

ASR

LLVM

BIN

RUN

文件名

open/read/write/close

t01.f90

内置函数

abs

路径:tests/intrinsic/abs

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

exp

路径:tests/intrinsic/exp

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

log

路径:tests/intrinsic/log

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

sqrt

路径:tests/intrinsic/sqrt

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

sin

路径:tests/intrinsic/sin

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

cos

路径:tests/intrinsic/cos

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

tan

路径:tests/intrinsic/tan

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

sinh

路径:tests/intrinsic/sinh

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

cosh

路径:tests/intrinsic/cosh

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

tanh

路径:tests/intrinsic/tanh

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

asin

路径:tests/intrinsic/asin

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

acos

路径:tests/intrinsic/acos

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

atan

路径:tests/intrinsic/atan

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

scalar single/double complex

t02_scalar_complex.f90

array 1D single/double real

t03_array1d_real.f90

modulo

路径:tests/intrinsic/modulo

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

array 1D single/double real

t03_array1d_real.f90

mod

路径:tests/intrinsic/mod

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

array 1D single/double real

t03_array1d_real.f90

min

路径:tests/intrinsic/min

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

max

路径:tests/intrinsic/max

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

int

路径:tests/intrinsic/int

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

real

路径:tests/intrinsic/real

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

floor

路径:tests/intrinsic/floor

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90

nint

路径:tests/intrinsic/nint

描述

AST

ASR

LLVM

BIN

RUN

文件名

scalar single/double real

t01_scalar_real.f90