| Crates.io | oak-clojure |
| lib.rs | oak-clojure |
| version | 0.0.1 |
| created_at | 2025-10-20 10:54:16.989738+00 |
| updated_at | 2026-01-23 04:17:06.307482+00 |
| description | Clojure functional programming language parser with support for Lisp syntax and JVM ecosystem integration. |
| homepage | https://github.com/ygg-lang/oaks |
| repository | https://github.com/ygg-lang/oaks |
| max_upload_size | |
| id | 1891752 |
| size | 37,619 |
High-performance incremental Clojure parser for the oak ecosystem with flexible configuration, optimized for code analysis and compilation.
Oak Clojure is a robust parser for Clojure, designed to handle complete Clojure syntax including modern features like macros, data structures, and functional programming constructs. Built on the solid foundation of oak-core, it provides both high-level convenience and detailed AST generation for code analysis and compilation.
Basic example:
use oak_clojure::{Parser, ClojureLanguage, SourceText};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let parser = Parser::new();
let source = SourceText::new(r#"
(defn greet [name]
(println (str "Hello, " name "!")))
(greet "World")
"#);
let result = parser.parse(&source);
println!("Parsed Clojure program successfully.");
Ok(())
}
use oak_clojure::{Parser, ClojureLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new(r#"
(defn add [a b]
(+ a b))
"#);
let result = parser.parse(&source);
println!("Parsed Clojure function successfully.");
use oak_clojure::{Parser, ClojureLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new(r#"
{:name "Alice" :age 25 :city "New York"}
"#);
let result = parser.parse(&source);
println!("Parsed Clojure data structure successfully.");
use oak_clojure::{Parser, ClojureLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new("(defn add [x y] (+ x y))");
let result = parser.parse(&source);
// Token information is available in the parse result
use oak_clojure::{Parser, ClojureLanguage, SourceText};
let parser = Parser::new();
let source = SourceText::new(r#"
(defn broken-function
"This function has unbalanced parentheses"
[x y]
(+ x y ; Missing closing parenthesis
"#);
let result = parser.parse(&source);
if let Err(e) = result.result {
println!("Parse error: {:?}", e);
}
The parser generates a comprehensive AST with the following main structures:
Oak Clojure integrates seamlessly with:
Check out the examples directory for comprehensive examples:
Contributions are welcome!
Please feel free to submit pull requests at the project repository or open issues.