Programa
├── Funcao nome=factorial retorno=int
│   ├── Parametro nome=n tipo=int
│   └── Bloco
│       ├── Se
│       │   ├── Condicao
│       │   │   └── Binario op=<=
│       │   │       ├── Identificador nome=n
│       │   │       └── Numero valor=1
│       │   └── Entao
│       │       └── Bloco
│       │           └── Retorno
│       │               └── Numero valor=1
│       └── Retorno
│           └── Binario op=*
│               ├── Identificador nome=n
│               └── Chamada
│                   ├── Alvo
│                   │   └── Identificador nome=factorial
│                   └── Argumento
│                       └── Binario op=-
│                           ├── Identificador nome=n
│                           └── Numero valor=1
└── Funcao nome=main retorno=void
    ├── Parametro nome=args tipo=void
    └── Bloco
        ├── DeclVar nome=value tipo=int
        │   └── Numero valor=5
        └── Se
            ├── Condicao
            │   └── Binario op=and
            │       ├── Binario op=>
            │       │   ├── Identificador nome=value
            │       │   └── Numero valor=0
            │       └── Booleano valor=true
            ├── Entao
            │   └── Bloco
            │       └── ComandoExpr
            │           └── Chamada
            │               ├── Alvo
            │               │   └── Identificador nome=print
            │               └── Argumento
            │                   └── Chamada
            │                       ├── Alvo
            │                       │   └── Identificador nome=factorial
            │                       └── Argumento
            │                           └── Identificador nome=value
            └── Senao
                └── Bloco
                    └── ComandoExpr
                        └── Chamada
                            ├── Alvo
                            │   └── Identificador nome=print
                            └── Argumento
                                └── Texto valor="invalid"
