xdl_parser/
lib.rs

1//! # XDL Parser
2//!
3//! Parser for the Extended Data Language (XDL/IDL) using nom combinator library.
4
5pub 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
15/// Parse XDL source code into an AST
16pub fn parse_xdl(input: &str) -> crate::XdlResult<Program> {
17    let tokens = lexer::tokenize(input)?;
18    parser::parse_program(&tokens)
19}
20
21/// Parse a single XDL expression
22pub 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}