Skip to main content

haystack_core/xeto/
mod.rs

1// Xeto schema language support -- lexer, parser, spec resolution, and fitting.
2
3pub mod ast;
4pub mod bundled;
5pub mod export;
6pub mod fitting;
7pub mod lexer;
8pub mod loader;
9pub mod parser;
10pub mod resolver;
11pub mod spec;
12
13pub use ast::{LibPragma, SlotDef, SpecDef, XetoFile};
14pub use fitting::{EntityResolver, fits, fits_explain};
15pub use lexer::{Token, TokenType, XetoLexer};
16pub use loader::load_xeto_with_deps;
17pub use parser::parse_xeto;
18pub use resolver::XetoResolver;
19pub use spec::{Slot, Spec};
20
21/// Errors that can occur during Xeto parsing, resolution, or loading.
22#[derive(Debug, thiserror::Error)]
23pub enum XetoError {
24    /// Error during tokenization or parsing.
25    #[error("parse error at line {line}, col {col}: {message}")]
26    Parse {
27        line: usize,
28        col: usize,
29        message: String,
30    },
31    /// Error during name resolution.
32    #[error("resolve error: {0}")]
33    Resolve(String),
34    /// Error during library loading.
35    #[error("load error: {0}")]
36    Load(String),
37}