#![recursion_limit = "512"]
pub mod ast;
pub mod error;
pub mod lexer;
pub mod parser;
pub mod serializer;
pub mod validation;
#[cfg(feature = "wasm")]
pub mod wasm;
#[cfg(feature = "graph")]
pub mod graph;
pub use ast::{AgentFile, Expr, Reference, Spanned, Type};
pub use error::{AgentScriptError, ErrorReporter};
pub use parser::{parse, parse_with_structured_errors};
pub use serializer::serialize;
pub use validation::validate_ast;
pub fn parse_source(source: &str) -> Result<AgentFile, Vec<String>> {
let (result, errors) = parser::parse_with_errors(source);
if !errors.is_empty() {
return Err(errors);
}
result.ok_or_else(|| vec!["Unknown parse error".to_string()])
}
#[cfg(test)]
mod tests {
use super::*;
use chumsky::prelude::*;
#[test]
fn test_parse_minimal() {
let source = r#"
config:
agent_name: "Test"
"#;
let result = parse_source(source);
assert!(result.is_ok());
}
#[test]
fn test_lexer_integration() {
let source = r#"@variables.user_id != """#;
let tokens = lexer::lexer().parse(source);
assert!(tokens.has_output());
}
}