sage_parser/lib.rs
1//! Parser for the Sage language.
2//!
3//! This crate provides parsing for Sage source code, transforming a token
4//! stream into a typed Abstract Syntax Tree (AST).
5//!
6//! # Example
7//!
8//! ```
9//! use sage_lexer::lex;
10//! use sage_parser::parse;
11//! use std::sync::Arc;
12//!
13//! let source = r#"
14//! agent Main {
15//! on start {
16//! emit(42);
17//! }
18//! }
19//! run Main;
20//! "#;
21//!
22//! let lex_result = lex(source).expect("lexing failed");
23//! let source_arc: Arc<str> = Arc::from(source);
24//! let (program, errors) = parse(lex_result.tokens(), source_arc);
25//!
26//! assert!(errors.is_empty());
27//! assert!(program.is_some());
28//! ```
29
30#![forbid(unsafe_code)]
31
32pub mod ast;
33mod parser;
34
35pub use ast::*;
36pub use parser::{parse, ParseError};