1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! Lexer and parser for the Sage language.
//!
//! This crate provides tokenization and parsing for Sage source code,
//! transforming source text into a typed Abstract Syntax Tree (AST).
//!
//! # Example
//!
//! ```
//! use sage_parser::{lex, parse};
//! use std::sync::Arc;
//!
//! let source = r#"
//! agent Main {
//! on start {
//! emit(42);
//! }
//! }
//! run Main;
//! "#;
//!
//! let lex_result = lex(source).expect("lexing failed");
//! let source_arc: Arc<str> = Arc::from(source);
//! let (program, errors) = parse(lex_result.tokens(), source_arc);
//!
//! assert!(errors.is_empty());
//! assert!(program.is_some());
//! ```
// Lexer modules
// Parser modules
// Lexer exports
pub use ;
pub use Token;
// Re-export logos for downstream use
pub use Logos;
// Parser exports
pub use *;
pub use format;
pub use ;
pub use ;
pub use TypeExpr;