Skip to main content

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};