gioser

tawasuyu/brahman

Rust 321TOML 122JSON 14Markdown 114306 Definitions

⎇ 737ae5a696250c7e323aafdcdbc7f3adf985e0ff crates/modules/charka/charka-bcd/src/lib.rs Rust · 36 lines · 1.3 KB History Who touched what raw

feat(charka): charka-bcd — aritmética decimal con semántica COBOL 737ae5a69 · sergio ·

1//! `charka-bcd` — aritmética decimal con semántica COBOL.
2//!
3//! El corazón numérico del transpilador charka. COBOL no calcula en
4//! binario flotante: opera sobre campos decimales de precisión fija
5//! declarados con una cláusula `PICTURE`. Reproducir un programa COBOL
6//! fielmente exige reproducir esa aritmética dígito a dígito — eso es lo
7//! que da este crate.
8//!
9//! - [`picture`] — la [`Picture`], forma declarada de un campo numérico.
10//! - [`decimal`] — el [`Decimal`] de punto fijo exacto + redondeo +
11//!   detección de desbordamiento (`ON SIZE ERROR`).
12//!
13//! Determinista y sin dependencias de plataforma: mismo programa, mismos
14//! dígitos, en cualquier máquina. El lexer, el parser, el IR y el codegen
15//! de charka se construyen sobre este cimiento.
16
17#![forbid(unsafe_code)]
18
19pub mod decimal;
20pub mod picture;
21
22pub use decimal::{Decimal, Rounding};
23pub use picture::Picture;
24
25/// Falla de una operación decimal o de una cláusula PICTURE.
26#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
27pub enum BcdError {
28    #[error("cláusula PICTURE inválida: {0}")]
29    BadPicture(String),
30    #[error("literal numérico inválido: {0}")]
31    BadNumber(String),
32    #[error("división por cero")]
33    DivByZero,
34    #[error("desbordamiento de campo (ON SIZE ERROR)")]
35    Overflow,
36}