// DOCS NAVIGATION
Estrutura de um Arquivo Fonte_
SOURCE: content/docs/reference/01-introducao.md — 01 Introdução / 6. Estrutura de um Arquivo Fonte / Source File Structure
PT-BR:
Todo arquivo SpectraLang deve seguir esta estrutura obrigatória:
EN-US:
Every SpectraLang source file must follow this mandatory structure:
// 1. Declaração de módulo (OBRIGATÓRIA / REQUIRED)
module nome.do.modulo
// 2. Importações (opcionais / optional)
import std.io
import std.math as math
from std.io import println, print
// 3. Declarações de nível superior (top-level items)
// - Funções (fn)
// - Structs (struct)
// - Enums (enum)
// - Implementações (impl)
// - Traits (trait)
public func main() returns int {
println("Hello, World!")
return 0
}
PT-BR:
Regras obrigatórias:
- A declaração
moduledeve ser a primeira linha do arquivo (antes de qualquer código, após comentários opcionais). - O nome do módulo usa pontos como separador de caminhos:
module fisica.vetor(por convenção espelha a hierarquia de pastas, mas não é obrigatório). - Importações participam da resolução semântica, e o CLI consegue compilar projetos multi-arquivo e conjuntos explícitos de arquivos.
import std.ioexpõe símbolos da stdlib comoprintlndiretamente, e chamadas qualificadas comostd.io.println(...)também são aceitas.- Alias de importação, named imports e re-exportações públicas fazem parte da superfície atual da linguagem.
EN-US:
Mandatory rules:
- The
moduledeclaration must be the first line of the file (before any code, after optional comments). - Module names use dots as path separators:
module physics.vector(by convention it mirrors the folder hierarchy, but this is not enforced). - Imports participate in semantic resolution, and the CLI can compile multi-file projects and explicit file sets.
import std.iomakes stdlib symbols such asprintlnavailable directly, and qualified calls likestd.io.println(...)are also accepted.- Alias imports, named imports, and public re-exports are part of the current language surface.
Módulos e Caminhos / Modules and Paths
// Nomes válidos de módulo / Valid module names
module app
module app.utils
module app.controllers.user
module std.collections
// Identificadores válidos / Valid identifiers
// [A-Za-z_][A-Za-z0-9_]*
// Exemplos: minhaFuncao, meu_struct, _privado, Tipo1