Progresso no Desenvolvimento do LFortran¶
This page documents what Fortran features are supported by LFortran. For each feature we list a short description, the filename with the test and current status for each parts of the compiler:
AST: The code can be parsed to AST (
lfortran --show-ast test.f90
)ASR: The code can be transformed to ASR (
lfortran --show-asr test.f90
)LLVM: LFortran can generate LLVM IR (
lfortran --show-llvm test.f90
)BIN: The LLVM IR can compile to a binary
RUN: The binary runs without errors
If all are green it means the feature fully works and you can use it in your codes. Otherwise you can see what the status is of each feature.
This page is generated automatically using the Compiler Tester repository which contains all the Fortran tests and scripts to run LFortran to produce the tables below. We are looking for contributors to contribute more tests. Our goal is to have a comprehensive Fortran testsuite that can be used to test any Fortran compiler.
Testing the LFortran compiler version:
$ lfortran --version
LFortran version: 0.12.0-491-gaf48ff273
Platform: macOS
Default target: x86_64-apple-darwin20.3.0
Tópicos¶
Programas completos em que fazemos cálculo de algo interessante¶
Basic Numerics¶
Diretório: tests/programs/numerics
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Módulos¶
Utilização básica¶
Diretório: tests/modules/basic
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Sub-rotinas e Funções dos Módulos¶
Directory: tests/modules/procedures
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Expressões¶
Arithmetic Operations¶
Directory: tests/expressions/arit
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Inteiros¶
Directory: tests/expressions/integers
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Real Numbers¶
Directory: tests/expressions/reals
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
Complex Numbers¶
Directory: tests/expressions/complex
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Cadeia de Caracteres¶
Diretório: tests/expressions/character
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Tipos Derivados¶
Diretório: tests/expressions/derived_type
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Comandos¶
Comando Allocate¶
Diretório: tests/statements/allocate
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Comando Block¶
Diretório: tests/statements/block
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
Comando Goto¶
Diretório: tests/statements/goto
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
Comando if¶
Diretório: tests/statements/if
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Comando While¶
Diretório: tests/statements/while
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Comando Print¶
Diretório: tests/statements/print
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
Open, Read, Write, Close Statement¶
Diretório: tests/statements/file_io
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
Funções Intrínsecas¶
abs¶
Diretório: tests/intrinsic/abs
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
exp¶
Diretório: tests/intrinsic/exp
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
log¶
Diretório: tests/intrinsic/log
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sqrt¶
Diretório: tests/intrinsic/sqrt
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sin¶
Diretório: tests/intrinsic/sin
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
cos¶
Diretório: tests/intrinsic/cos
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
tan¶
Diretório: tests/intrinsic/tan
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
sinh¶
Diretório: tests/intrinsic/sinh
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
cosh¶
Diretório: tests/intrinsic/cosh
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
tanh¶
Diretório: tests/intrinsic/tanh
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
asin¶
Diretório: tests/intrinsic/asin
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
acos¶
Diretório: tests/intrinsic/acos
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
atan¶
Diretório: tests/intrinsic/atan
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
✅ |
✅ |
✅ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
modulo¶
Diretório: tests/intrinsic/modulo
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
✅ |
❌ |
❌ |
❌ |
mod¶
Diretório: tests/intrinsic/mod
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
|
|
✅ |
❌ |
❌ |
❌ |
❌ |
min¶
Diretório: tests/intrinsic/min
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
max¶
Diretório: tests/intrinsic/max
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
❌ |
❌ |
❌ |
int¶
Diretório: tests/intrinsic/int
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
real¶
Diretório: tests/intrinsic/real
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
✅ |
✅ |
✅ |
✅ |
floor¶
Diretório: tests/intrinsic/floor
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |
nint¶
Diretório: tests/intrinsic/nint
Descrição |
AST |
ASR |
LLVM |
BIN |
RUN |
Nome do ficheiro |
---|---|---|---|---|---|---|
|
✅ |
❌ |
❌ |
❌ |
❌ |