UP | HOME

Núcleo da linguagem

A implementação do programa é constituída de diversos módulos. Esses módulos desdobram-se em vários submódulos, e também entrelaçam-se em interdependências para garantir algumas funcionalidades do interpretador de Majestic Lisp,

A seguir, especificamos o núcleo da aplicação, localizado no diretório src/core. Este módulo é responsável pela definição dos tipos básicos de Majestic Lisp e também da estrutura que carregará o estado global de uma instância do interpretador. Também aqui criamos algumas definições para gerenciamento de contextos (global e léxico).

1. Declaração de submódulos

O primeiro passo para a criação dos módulos de Rust é criar um arquivo para tal, que especifique os submódulos contidos no mesmo. Estas definições serão salvas no arquivo src/core/mod.rs.

pub mod environment;
pub mod state;
pub mod types;

Outro passo importante é reexportar alguns símbolos que podem ser de uso importante para o resto da aplicação. Esses símbolos serão reexportados dos submódulos onde existem, de forma a parecerem pertencer ao módulo atual.

Por exemplo, reexportar types::Maj faz com que seja desnecessário importar core::types::Maj onde a estrutura Maj for necessária; ao invés disso, poderemos importar apenas core::Maj.

pub use state::MajState;
pub use types::Maj;

Author: Lucas S. Vieira

Created: 2022-10-24 seg 00:27

Validate