Developer Tutorial

This is a tutorial for anybody who wants to either develop LFortran or build tools on top.

Introduction

LFortran is structured around two independent modules, AST and ASR, both of which are standalone (completely independent of the rest of LFortran) and users are encouraged to use them independently for other applications and build tools on top:

  • Abstract Syntax Tree (AST): Represents any Fortran source code, strictly based on syntax, no semantic is included. The AST module can convert itself to Fortran source code.

  • Abstract Semantic Representation (ASR): Represents a valid Fortran source code, all semantic is included. Invalid Fortran code is not allowed (an error will be given). The ASR module can convert itself to an AST.

Abstract Syntax Tree (AST)

Fortran source code can be parsed into an AST using the src_to_ast() function:

[1]:
integer function f(a, b) result(r)
integer, intent(in) :: a, b
r = a + b
end function

We can pretty print it using the %%showast magic:

[2]:
%%showast
integer function f(a, b) result(r)
integer, intent(in) :: a, b
r = a + b
end function
(TranslationUnit
    [(Function
        f
        [(a)
        (b)]
        [(AttrType
            TypeInteger
            []
            ()
            ()
            None
        )]
        r
        ()
        ()
        []
        []
        []
        [(Declaration
            (AttrType
                TypeInteger
                []
                ()
                ()
                None
            )
            [(AttrIntent
                In
            )]
            [(a
            []
            []
            ()
            ()
            None
            ())
            (b
            []
            []
            ()
            ()
            None
            ())]
            ()
        )]
        [(Assignment
            0
            r
            (+ a b)
            ()
        )]
        []
        []
    )]
)

We can convert AST to Fortran source code using %%showfmt:

[3]:
%%showfmt
integer function f(a, b) result(r)
integer, intent(in) :: a, b
r = a + b
end function
integer function f(a, b) result(r)
integer, intent(in) :: a, b
r = a + b
end function f

All AST nodes and their arguments are described in AST.asdl.

Abstract Semantic Representation (ASR)

We can pretty print using the %%showasr magic:

[4]:
%%showasr
integer function f2(a, b) result(r)
integer, intent(in) :: a, b
r = a + b
end function
(TranslationUnit
    (SymbolTable
        1
        {
            _lcompilers_len_trim_str:
                (Function
                    (SymbolTable
                        18
                        {
                            result:
                                (Variable
                                    18
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    18
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 18 str)]
                    [(Assignment
                        (Var 18 result)
                        (Cast
                            (StringLen
                                (Var 18 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 18 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 18 str)
                                    (Var 18 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 18 result)
                                (IntegerBinOp
                                    (Var 18 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 18 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 18 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str1:
                (Function
                    (SymbolTable
                        20
                        {
                            result:
                                (Variable
                                    20
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    20
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str1
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 20 str)]
                    [(Assignment
                        (Var 20 result)
                        (Cast
                            (StringLen
                                (Var 20 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 20 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 20 str)
                                    (Var 20 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 20 result)
                                (IntegerBinOp
                                    (Var 20 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 20 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 20 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str2:
                (Function
                    (SymbolTable
                        22
                        {
                            result:
                                (Variable
                                    22
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    22
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str2
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 22 str)]
                    [(Assignment
                        (Var 22 result)
                        (Cast
                            (StringLen
                                (Var 22 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 22 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 22 str)
                                    (Var 22 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 22 result)
                                (IntegerBinOp
                                    (Var 22 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 22 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 22 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str3:
                (Function
                    (SymbolTable
                        24
                        {
                            result:
                                (Variable
                                    24
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    24
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str3
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 24 str)]
                    [(Assignment
                        (Var 24 result)
                        (Cast
                            (StringLen
                                (Var 24 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 24 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 24 str)
                                    (Var 24 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 24 result)
                                (IntegerBinOp
                                    (Var 24 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 24 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 24 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str4:
                (Function
                    (SymbolTable
                        28
                        {
                            result:
                                (Variable
                                    28
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    28
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str4
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 28 str)]
                    [(Assignment
                        (Var 28 result)
                        (Cast
                            (StringLen
                                (Var 28 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 28 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 28 str)
                                    (Var 28 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 28 result)
                                (IntegerBinOp
                                    (Var 28 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 28 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 28 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str5:
                (Function
                    (SymbolTable
                        30
                        {
                            result:
                                (Variable
                                    30
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    30
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str5
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 30 str)]
                    [(Assignment
                        (Var 30 result)
                        (Cast
                            (StringLen
                                (Var 30 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 30 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 30 str)
                                    (Var 30 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 30 result)
                                (IntegerBinOp
                                    (Var 30 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 30 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 30 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str6:
                (Function
                    (SymbolTable
                        32
                        {
                            result:
                                (Variable
                                    32
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    32
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str6
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 32 str)]
                    [(Assignment
                        (Var 32 result)
                        (Cast
                            (StringLen
                                (Var 32 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 32 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 32 str)
                                    (Var 32 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 32 result)
                                (IntegerBinOp
                                    (Var 32 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 32 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 32 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_len_trim_str7:
                (Function
                    (SymbolTable
                        34
                        {
                            result:
                                (Variable
                                    34
                                    result
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    34
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_len_trim_str7
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 34 str)]
                    [(Assignment
                        (Var 34 result)
                        (Cast
                            (StringLen
                                (Var 34 str)
                                (Integer 4)
                                ()
                            )
                            IntegerToInteger
                            (Integer 4)
                            ()
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )
                    (If
                        ()
                        (IntegerCompare
                            (Var 34 result)
                            NotEq
                            (IntegerConstant 0 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(WhileLoop
                            ()
                            (StringCompare
                                (StringItem
                                    (Var 34 str)
                                    (Var 34 result)
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                    ()
                                )
                                Eq
                                (StringConstant
                                    " "
                                    (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                )
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 34 result)
                                (IntegerBinOp
                                    (Var 34 result)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                                .false.
                                .false.
                            )
                            (If
                                ()
                                (IntegerCompare
                                    (Var 34 result)
                                    Eq
                                    (IntegerConstant 0 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )]
                    (Var 34 result)
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_stringconcat:
                (Function
                    (SymbolTable
                        15
                        {
                            concat_result:
                                (Variable
                                    15
                                    concat_result
                                    []
                                    Out
                                    ()
                                    ()
                                    Default
                                    (Allocatable
                                        (String 1 () DeferredLength DescriptorString)
                                    )
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            s1:
                                (Variable
                                    15
                                    s1
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            s1_len:
                                (Variable
                                    15
                                    s1_len
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            s2:
                                (Variable
                                    15
                                    s2
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            s2_len:
                                (Variable
                                    15
                                    s2_len
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_stringconcat
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 () AssumedLength DescriptorString)
                        (Integer 4)
                        (Integer 4)
                        (Allocatable
                            (String 1 () DeferredLength DescriptorString)
                        )]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 15 s1)
                    (Var 15 s2)
                    (Var 15 s1_len)
                    (Var 15 s2_len)
                    (Var 15 concat_result)]
                    [(Allocate
                        [((Var 15 concat_result)
                        []
                        (IntegerBinOp
                            (Var 15 s1_len)
                            Add
                            (Var 15 s2_len)
                            (Integer 4)
                            ()
                        )
                        ()
                        ())]
                        ()
                        ()
                        ()
                    )
                    (Assignment
                        (StringSection
                            (Var 15 concat_result)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Var 15 s1_len)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (Var 15 s1_len)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        (Var 15 s1)
                        ()
                        .false.
                        .false.
                    )
                    (Assignment
                        (StringSection
                            (Var 15 concat_result)
                            (IntegerBinOp
                                (Var 15 s1_len)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            (StringLen
                                (Var 15 concat_result)
                                (Integer 4)
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (StringLen
                                        (Var 15 concat_result)
                                        (Integer 4)
                                        ()
                                    )
                                    Sub
                                    (IntegerBinOp
                                        (Var 15 s1_len)
                                        Add
                                        (IntegerConstant 1 (Integer 4) Decimal)
                                        (Integer 4)
                                        ()
                                    )
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        (Var 15 s2)
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str:
                (Function
                    (SymbolTable
                        17
                        {
                            result:
                                (Variable
                                    17
                                    result
                                    [_lcompilers_len_trim_str
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str
                                        1 _lcompilers_len_trim_str
                                        [((Var 17 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    17
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str
                            1 _lcompilers_len_trim_str
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str]
                    [(Var 17 str)
                    (Var 17 result)]
                    [(Assignment
                        (Var 17 result)
                        (StringSection
                            (Var 17 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str
                                1 _lcompilers_len_trim_str
                                [((Var 17 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str
                                        1 _lcompilers_len_trim_str
                                        [((Var 17 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str1:
                (Function
                    (SymbolTable
                        19
                        {
                            result:
                                (Variable
                                    19
                                    result
                                    [_lcompilers_len_trim_str1
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str1
                                        1 _lcompilers_len_trim_str1
                                        [((Var 19 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    19
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str1
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str1
                            1 _lcompilers_len_trim_str1
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str1]
                    [(Var 19 str)
                    (Var 19 result)]
                    [(Assignment
                        (Var 19 result)
                        (StringSection
                            (Var 19 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str1
                                1 _lcompilers_len_trim_str1
                                [((Var 19 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str1
                                        1 _lcompilers_len_trim_str1
                                        [((Var 19 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str2:
                (Function
                    (SymbolTable
                        21
                        {
                            result:
                                (Variable
                                    21
                                    result
                                    [_lcompilers_len_trim_str2
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str2
                                        1 _lcompilers_len_trim_str2
                                        [((Var 21 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    21
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str2
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str2
                            1 _lcompilers_len_trim_str2
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str2]
                    [(Var 21 str)
                    (Var 21 result)]
                    [(Assignment
                        (Var 21 result)
                        (StringSection
                            (Var 21 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str2
                                1 _lcompilers_len_trim_str2
                                [((Var 21 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str2
                                        1 _lcompilers_len_trim_str2
                                        [((Var 21 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str3:
                (Function
                    (SymbolTable
                        23
                        {
                            result:
                                (Variable
                                    23
                                    result
                                    [_lcompilers_len_trim_str3
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str3
                                        1 _lcompilers_len_trim_str3
                                        [((Var 23 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    23
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str3
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str3
                            1 _lcompilers_len_trim_str3
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str3]
                    [(Var 23 str)
                    (Var 23 result)]
                    [(Assignment
                        (Var 23 result)
                        (StringSection
                            (Var 23 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str3
                                1 _lcompilers_len_trim_str3
                                [((Var 23 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str3
                                        1 _lcompilers_len_trim_str3
                                        [((Var 23 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str4:
                (Function
                    (SymbolTable
                        27
                        {
                            result:
                                (Variable
                                    27
                                    result
                                    [_lcompilers_len_trim_str4
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str4
                                        1 _lcompilers_len_trim_str4
                                        [((Var 27 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    27
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str4
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str4
                            1 _lcompilers_len_trim_str4
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str4]
                    [(Var 27 str)
                    (Var 27 result)]
                    [(Assignment
                        (Var 27 result)
                        (StringSection
                            (Var 27 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str4
                                1 _lcompilers_len_trim_str4
                                [((Var 27 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str4
                                        1 _lcompilers_len_trim_str4
                                        [((Var 27 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str5:
                (Function
                    (SymbolTable
                        29
                        {
                            result:
                                (Variable
                                    29
                                    result
                                    [_lcompilers_len_trim_str5
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str5
                                        1 _lcompilers_len_trim_str5
                                        [((Var 29 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    29
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str5
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str5
                            1 _lcompilers_len_trim_str5
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str5]
                    [(Var 29 str)
                    (Var 29 result)]
                    [(Assignment
                        (Var 29 result)
                        (StringSection
                            (Var 29 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str5
                                1 _lcompilers_len_trim_str5
                                [((Var 29 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str5
                                        1 _lcompilers_len_trim_str5
                                        [((Var 29 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str6:
                (Function
                    (SymbolTable
                        31
                        {
                            result:
                                (Variable
                                    31
                                    result
                                    [_lcompilers_len_trim_str6
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str6
                                        1 _lcompilers_len_trim_str6
                                        [((Var 31 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    31
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str6
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str6
                            1 _lcompilers_len_trim_str6
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str6]
                    [(Var 31 str)
                    (Var 31 result)]
                    [(Assignment
                        (Var 31 result)
                        (StringSection
                            (Var 31 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str6
                                1 _lcompilers_len_trim_str6
                                [((Var 31 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str6
                                        1 _lcompilers_len_trim_str6
                                        [((Var 31 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            _lcompilers_trim_str7:
                (Function
                    (SymbolTable
                        33
                        {
                            result:
                                (Variable
                                    33
                                    result
                                    [_lcompilers_len_trim_str7
                                    str]
                                    Out
                                    ()
                                    ()
                                    Default
                                    (String 1 (FunctionCall
                                        1 _lcompilers_len_trim_str7
                                        1 _lcompilers_len_trim_str7
                                        [((Var 33 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    ) ExpressionLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            str:
                                (Variable
                                    33
                                    str
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (String 1 () AssumedLength DescriptorString)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    _lcompilers_trim_str7
                    (FunctionType
                        [(String 1 () AssumedLength DescriptorString)
                        (String 1 (FunctionCall
                            1 _lcompilers_len_trim_str7
                            1 _lcompilers_len_trim_str7
                            [((FunctionParam
                                0
                                (String 1 () AssumedLength DescriptorString)
                                ()
                            ))]
                            (Integer 4)
                            ()
                            ()
                        ) ExpressionLength DescriptorString)]
                        ()
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    [_lcompilers_len_trim_str7]
                    [(Var 33 str)
                    (Var 33 result)]
                    [(Assignment
                        (Var 33 result)
                        (StringSection
                            (Var 33 str)
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (FunctionCall
                                1 _lcompilers_len_trim_str7
                                1 _lcompilers_len_trim_str7
                                [((Var 33 str))]
                                (Integer 4)
                                ()
                                ()
                            )
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (String 1 (IntegerBinOp
                                (IntegerBinOp
                                    (FunctionCall
                                        1 _lcompilers_len_trim_str7
                                        1 _lcompilers_len_trim_str7
                                        [((Var 33 str))]
                                        (Integer 4)
                                        ()
                                        ()
                                    )
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            ) ExpressionLength DescriptorString)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    ()
                    Public
                    .false.
                    .false.
                    ()
                ),
            f:
                (Function
                    (SymbolTable
                        35
                        {
                            a:
                                (Variable
                                    35
                                    a
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            b:
                                (Variable
                                    35
                                    b
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            r:
                                (Variable
                                    35
                                    r
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    ExternalUndefined
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    f
                    (FunctionType
                        [(Integer 4)
                        (Integer 4)]
                        (Integer 4)
                        ExternalUndefined
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 35 a)
                    (Var 35 b)]
                    [(Assignment
                        (Var 35 r)
                        (IntegerBinOp
                            (Var 35 a)
                            Add
                            (Var 35 b)
                            (Integer 4)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    (Var 35 r)
                    Public
                    .true.
                    .true.
                    ()
                ),
            f2:
                (Function
                    (SymbolTable
                        36
                        {
                            a:
                                (Variable
                                    36
                                    a
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    Source
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            b:
                                (Variable
                                    36
                                    b
                                    []
                                    In
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    Source
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                ),
                            r:
                                (Variable
                                    36
                                    r
                                    []
                                    ReturnVar
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    Source
                                    Public
                                    Required
                                    .false.
                                    .false.
                                    .false.
                                    ()
                                    .false.
                                    .false.
                                    NotMethod
                                    ()
                                    []
                                )
                        })
                    f2
                    (FunctionType
                        [(Integer 4)
                        (Integer 4)]
                        (Integer 4)
                        Source
                        Implementation
                        ()
                        .false.
                        .false.
                        .false.
                        .false.
                        .false.
                        []
                        .false.
                    )
                    []
                    [(Var 36 a)
                    (Var 36 b)]
                    [(Assignment
                        (Var 36 r)
                        (IntegerBinOp
                            (Var 36 a)
                            Add
                            (Var 36 b)
                            (Integer 4)
                            ()
                        )
                        ()
                        .false.
                        .false.
                    )]
                    (Var 36 r)
                    Public
                    .true.
                    .true.
                    ()
                ),
            iso_c_binding:
                (IntrinsicModule lfortran_intrinsic_iso_c_binding),
            lfortran_display:
                (Module
                    (SymbolTable
                        2
                        {
                            c_char:
                                (ExternalSymbol
                                    2
                                    c_char
                                    4 c_char
                                    lfortran_intrinsic_iso_c_binding
                                    []
                                    c_char
                                    Public
                                ),
                            c_null_char:
                                (ExternalSymbol
                                    2
                                    c_null_char
                                    4 c_null_char
                                    lfortran_intrinsic_iso_c_binding
                                    []
                                    c_null_char
                                    Public
                                ),
                            display_data:
                                (Function
                                    (SymbolTable
                                        14
                                        {
                                            __libasr__created__var__0_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__0_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__10_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__10_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__11_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__11_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__1_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__1_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__2_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__2_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__3_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__3_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__4_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__4_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__5_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__5_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__6_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__6_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__7_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__7_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__8_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__8_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            __libasr__created__var__9_return_slot:
                                                (Variable
                                                    14
                                                    __libasr__created__var__9_return_slot
                                                    []
                                                    Local
                                                    ()
                                                    ()
                                                    Default
                                                    (Allocatable
                                                        (String 1 () DeferredLength DescriptorString)
                                                    )
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            data:
                                                (Variable
                                                    14
                                                    data
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (String 1 () AssumedLength DescriptorString)
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            mime_type:
                                                (Variable
                                                    14
                                                    mime_type
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (String 1 () AssumedLength DescriptorString)
                                                    ()
                                                    ExternalUndefined
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    display_data
                                    (FunctionType
                                        [(String 1 () AssumedLength DescriptorString)
                                        (String 1 () AssumedLength DescriptorString)]
                                        ()
                                        ExternalUndefined
                                        Implementation
                                        ()
                                        .false.
                                        .false.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .false.
                                    )
                                    [_lcompilers_len_trim_str
                                    _lcompilers_trim_str
                                    _lcompilers_len_trim_str1
                                    _lcompilers_trim_str1
                                    _lcompilers_stringconcat
                                    _lcompilers_len_trim_str2
                                    _lcompilers_trim_str2
                                    _lcompilers_len_trim_str3
                                    _lcompilers_trim_str3
                                    _lcompilers_len_trim_str4
                                    _lcompilers_trim_str4
                                    _lcompilers_len_trim_str5
                                    _lcompilers_trim_str5
                                    _lcompilers_len_trim_str6
                                    _lcompilers_trim_str6
                                    _lcompilers_len_trim_str7
                                    _lcompilers_trim_str7
                                    lf_display_data]
                                    [(Var 14 mime_type)
                                    (Var 14 data)]
                                    [(ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__0_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__0_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str
                                            1 _lcompilers_len_trim_str
                                            [((Var 14 mime_type))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str
                                        ()
                                        [((Var 14 mime_type))
                                        ((Var 14 __libasr__created__var__0_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__1_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__1_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str1
                                            1 _lcompilers_len_trim_str1
                                            [((Var 14 mime_type))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str1
                                        ()
                                        [((Var 14 mime_type))
                                        ((Var 14 __libasr__created__var__1_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__2_return_slot)]
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_stringconcat
                                        ()
                                        [((Var 14 __libasr__created__var__0_return_slot))
                                        ((StringConstant
                                            ""
                                            (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                        ))
                                        ((StringLen
                                            (Var 14 __libasr__created__var__1_return_slot)
                                            (Integer 4)
                                            ()
                                        ))
                                        ((Cast
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            IntegerToInteger
                                            (Integer 4)
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            ()
                                        ))
                                        ((Var 14 __libasr__created__var__2_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__3_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__3_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str2
                                            1 _lcompilers_len_trim_str2
                                            [((Var 14 mime_type))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str2
                                        ()
                                        [((Var 14 mime_type))
                                        ((Var 14 __libasr__created__var__3_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__4_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__4_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str3
                                            1 _lcompilers_len_trim_str3
                                            [((Var 14 mime_type))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str3
                                        ()
                                        [((Var 14 mime_type))
                                        ((Var 14 __libasr__created__var__4_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__5_return_slot)]
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_stringconcat
                                        ()
                                        [((Var 14 __libasr__created__var__3_return_slot))
                                        ((StringConstant
                                            ""
                                            (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                        ))
                                        ((StringLen
                                            (Var 14 __libasr__created__var__4_return_slot)
                                            (Integer 4)
                                            ()
                                        ))
                                        ((Cast
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            IntegerToInteger
                                            (Integer 4)
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            ()
                                        ))
                                        ((Var 14 __libasr__created__var__5_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__6_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__6_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str4
                                            1 _lcompilers_len_trim_str4
                                            [((Var 14 data))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str4
                                        ()
                                        [((Var 14 data))
                                        ((Var 14 __libasr__created__var__6_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__7_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__7_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str5
                                            1 _lcompilers_len_trim_str5
                                            [((Var 14 data))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str5
                                        ()
                                        [((Var 14 data))
                                        ((Var 14 __libasr__created__var__7_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__8_return_slot)]
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_stringconcat
                                        ()
                                        [((Var 14 __libasr__created__var__6_return_slot))
                                        ((StringConstant
                                            ""
                                            (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                        ))
                                        ((StringLen
                                            (Var 14 __libasr__created__var__7_return_slot)
                                            (Integer 4)
                                            ()
                                        ))
                                        ((Cast
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            IntegerToInteger
                                            (Integer 4)
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            ()
                                        ))
                                        ((Var 14 __libasr__created__var__8_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__9_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__9_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str6
                                            1 _lcompilers_len_trim_str6
                                            [((Var 14 data))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str6
                                        ()
                                        [((Var 14 data))
                                        ((Var 14 __libasr__created__var__9_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__10_return_slot)]
                                    )
                                    (Allocate
                                        [((Var 14 __libasr__created__var__10_return_slot)
                                        []
                                        (FunctionCall
                                            1 _lcompilers_len_trim_str7
                                            1 _lcompilers_len_trim_str7
                                            [((Var 14 data))]
                                            (Integer 4)
                                            ()
                                            ()
                                        )
                                        ()
                                        ())]
                                        ()
                                        ()
                                        ()
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_trim_str7
                                        ()
                                        [((Var 14 data))
                                        ((Var 14 __libasr__created__var__10_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (ExplicitDeallocate
                                        [(Var 14 __libasr__created__var__11_return_slot)]
                                    )
                                    (SubroutineCall
                                        1 _lcompilers_stringconcat
                                        ()
                                        [((Var 14 __libasr__created__var__9_return_slot))
                                        ((StringConstant
                                            ""
                                            (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength DescriptorString)
                                        ))
                                        ((StringLen
                                            (Var 14 __libasr__created__var__10_return_slot)
                                            (Integer 4)
                                            ()
                                        ))
                                        ((Cast
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            IntegerToInteger
                                            (Integer 4)
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            ()
                                        ))
                                        ((Var 14 __libasr__created__var__11_return_slot))]
                                        ()
                                        .true.
                                    )
                                    (SubroutineCall
                                        2 lf_display_data
                                        ()
                                        [((Cast
                                            (Var 14 __libasr__created__var__2_return_slot)
                                            StringToArray
                                            (Array
                                                (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength CChar)
                                                [((IntegerConstant 1 (Integer 4) Decimal)
                                                (IntegerBinOp
                                                    (StringLen
                                                        (Var 14 __libasr__created__var__5_return_slot)
                                                        (Integer 4)
                                                        ()
                                                    )
                                                    Div
                                                    (IntegerConstant 1 (Integer 4) Decimal)
                                                    (Integer 4)
                                                    ()
                                                ))]
                                                StringArraySinglePointer
                                            )
                                            ()
                                            ()
                                        ))
                                        ((Cast
                                            (Var 14 __libasr__created__var__8_return_slot)
                                            StringToArray
                                            (Array
                                                (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength CChar)
                                                [((IntegerConstant 1 (Integer 4) Decimal)
                                                (IntegerBinOp
                                                    (StringLen
                                                        (Var 14 __libasr__created__var__11_return_slot)
                                                        (Integer 4)
                                                        ()
                                                    )
                                                    Div
                                                    (IntegerConstant 1 (Integer 4) Decimal)
                                                    (Integer 4)
                                                    ()
                                                ))]
                                                StringArraySinglePointer
                                            )
                                            ()
                                            ()
                                        ))]
                                        ()
                                        .false.
                                    )]
                                    ()
                                    Public
                                    .false.
                                    .false.
                                    ()
                                ),
                            lf_display_data:
                                (Function
                                    (SymbolTable
                                        13
                                        {
                                            mime:
                                                (Variable
                                                    13
                                                    mime
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Array
                                                        (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength CChar)
                                                        [(()
                                                        ())]
                                                        StringArraySinglePointer
                                                    )
                                                    ()
                                                    BindC
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                ),
                                            payload:
                                                (Variable
                                                    13
                                                    payload
                                                    []
                                                    In
                                                    ()
                                                    ()
                                                    Default
                                                    (Array
                                                        (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength CChar)
                                                        [(()
                                                        ())]
                                                        StringArraySinglePointer
                                                    )
                                                    ()
                                                    BindC
                                                    Public
                                                    Required
                                                    .false.
                                                    .false.
                                                    .false.
                                                    ()
                                                    .false.
                                                    .false.
                                                    NotMethod
                                                    ()
                                                    []
                                                )
                                        })
                                    lf_display_data
                                    (FunctionType
                                        [(Array
                                            (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength CChar)
                                            [(()
                                            ())]
                                            StringArraySinglePointer
                                        )
                                        (Array
                                            (String 1 (IntegerConstant 1 (Integer 4) Decimal) ExpressionLength CChar)
                                            [(()
                                            ())]
                                            StringArraySinglePointer
                                        )]
                                        ()
                                        BindC
                                        Interface
                                        "lfortran_display_data"
                                        .false.
                                        .false.
                                        .false.
                                        .false.
                                        .false.
                                        []
                                        .false.
                                    )
                                    []
                                    [(Var 13 mime)
                                    (Var 13 payload)]
                                    []
                                    ()
                                    Public
                                    .false.
                                    .false.
                                    ()
                                )
                        })
                    lfortran_display
                    ()
                    [iso_c_binding]
                    .false.
                    .false.
                    .false.
                )
        })
    []
)

All ASR nodes and their arguments are described in ASR.asdl.