Expand description
ยง๐ ๏ธ oak-elixir Developer Guide
Elixir support for the Oak language framework.
Welcome to the internal implementation of the Elixir parser. This module provides the core logic for tokenizing and parsing Elixir source code into a high-fidelity syntax tree.
ยง๐ฆ Core Components
- Lexer: Tokenizes Elixir source code, handling sigils, atoms, and strings with full fidelity.
- Parser: Implements the Elixir grammar, producing a Green Tree that represents the concrete syntax.
- AST: Provides a type-safe Red Tree facade for easy traversal and analysis.
- Language: Defines the
ElixirLanguageconfiguration and integration with the Oak framework.
ยง๐ Usage Example
ยงBasic Parsing
use oak_elixir::{ElixirParser, SourceText, ElixirLanguage};
fn parse_elixir_code(code: &str) {
let source = SourceText::new(code);
let config = ElixirLanguage::new();
let parser = ElixirParser::new(&config);
let result = parser.parse(&source);
if result.is_success() {
let root = result.root();
println!("AST Root: {:?}", root);
}
}ยงIncremental Parsing
use oak_elixir::{ElixirParser, SourceText, ElixirLanguage};
fn incremental_update(old_code: &str, new_code: &str) {
let config = ElixirLanguage::new();
let mut parser = ElixirParser::new(&config);
// Initial parse
let initial_source = SourceText::new(old_code);
let _ = parser.parse(&initial_source);
// Incremental update
let updated_source = SourceText::new(new_code);
let result = parser.parse(&updated_source);
if result.is_success() {
println!("Incremental parse completed successfully.");
}
}ยง๐ Diagnostics
The parser provides detailed diagnostics for syntax errors, including error ranges and helpful messages.
let result = parser.parse(&source);
for diagnostic in result.diagnostics() {
println!("Error at {:?}: {}", diagnostic.range(), diagnostic.message());
}Re-exportsยง
pub use crate::ast::ElixirRoot;pub use crate::builder::ElixirBuilder;pub use crate::parser::element_type::ElixirElementType;
Modulesยง
Structsยง
- Elixir
Language - Language definition for Elixir.
- Elixir
Lexer
Enumsยง
- Elixir
Token Type - Token types for Elixir.