Expand description
A Tree-sitter backed semantic parser for Achitekfile source.
achitekfile wraps the tree-sitter-achitekfile grammar and exposes a
small semantic API over the concrete Tree-sitter syntax tree. Start with
analyze for semantic analysis or parse_tree if you need direct
Tree-sitter access.
§Examples
let source = r#"
blueprint {
version = "1.0.0"
name = "web-app"
}
prompt "database" {
type = select
choices = ["postgres", "sqlite"]
default = "postgres"
}
prompt "orm" {
type = select
choices = ["sqlx", "diesel"]
depends_on = database != "sqlite"
}
"#;
let file = achitekfile::analyze(source)?.into_valid().map_err(|diagnostics| {
let message = diagnostics
.into_iter()
.map(|diagnostic| diagnostic.message().to_owned())
.collect::<Vec<_>>()
.join(", ");
std::io::Error::new(std::io::ErrorKind::InvalidData, message)
})?;
assert_eq!(file.blueprint().name, "web-app");
assert_eq!(file.prompts().len(), 2);Modules§
- model
- Domain model types for Achitekfile source.
Structs§
- Analysis
- A forgiving analysis result for Achitekfile source.
- Analysis
Error - Errors that prevent Achitekfile analysis from running.
- Cycle
- A cyclic region of a graph.
- Diagnostic
- A user-facing issue found in Achitekfile source.
- Parse
Error - Errors that can occur while parsing source text into a Tree-sitter
Tree. - Sort
Error - Error returned when prompt dependencies cannot be topologically sorted.
- Text
Position - A zero-based byte position in Achitekfile source text.
- Text
Range - A byte range in Achitekfile source text.
Enums§
- Diagnostic
Code - Stable identifiers for Achitekfile diagnostics.
- Diagnostic
Kind - Broad category for an Achitekfile diagnostic.
- Severity
- Severity level for an Achitekfile diagnostic.
Functions§
- analyze
- Analyzes Achitekfile source and returns a forgiving analysis result.
- parse_
tree - Parses Achitekfile source text into a Tree-sitter
Tree.