1pub mod ast;
6pub mod error;
7pub mod lexer;
8pub mod parser;
9
10pub use ast::*;
11pub use error::*;
12pub use lexer::*;
13pub use parser::*;
14
15pub fn parse_xdl(input: &str) -> crate::XdlResult<Program> {
17 let tokens = lexer::tokenize(input)?;
18 parser::parse_program(&tokens)
19}
20
21pub fn parse_expression(input: &str) -> crate::XdlResult<Expression> {
23 let tokens = lexer::tokenize(input)?;
24 parser::parse_expression(&tokens)
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 #[test]
32 fn test_simple_parse() {
33 let input = "x = 42";
34 let result = parse_xdl(input);
35 assert!(result.is_ok());
36 }
37
38 #[test]
39 fn test_expression_parse() {
40 let input = "2 + 3 * 4";
41 let result = parse_expression(input);
42 assert!(result.is_ok());
43 }
44}