Try to improve "--show-ast --indent"
Currently it looks like this (after !752 (merged) was merged):
$ lfortran --show-ast --indent examples/expr2.f90
(TranslationUnit
[
(Program
expr2 [] [
(Declaration [
(x "integer" () [] [] [] ())])] [
(= x (* (+ 2 3) 5))
(Print () [x])] [])])
$ lfortran --show-asr --indent examples/expr2.f90
(TranslationUnit
(SymbolTable
1
{
expr2:
(Program
(SymbolTable
2
{
x:
(Variable
2
x
Local ()
Default
(Integer 4 [])
Source
Public)
})
expr2 [
(=
(Var 2 x)
(BinOp
(BinOp (ConstantInteger 2
(Integer 4 []))
Add (ConstantInteger 3
(Integer 4 []))
(Integer 4 []))
Mul (ConstantInteger 5
(Integer 4 []))
(Integer 4 [])))
(Print () [
(Var 2 x)])])
})
[])
Things that should be improved:
- Do not print the empty line at the beginning
- The
Variable
in ASR is printed as:
(Variable
2
x
Local ()
Default
(Integer 4 [])
Source
Public)
But it should rather be printed as something like this:
(Variable
2
x
Local ()
Default
(Integer 4 [])
Source
Public)
- There might be a way to format the s-expressions in a better way. Here is a good overview: https://medium.math.dev/formatting-lisp-5e28020b8bac
Edited by Ondřej Čertík