25 lines
564 B
Rust
25 lines
564 B
Rust
//! Simple example of miette usage
|
|||
|
|
|
||
|
|
use std::io::Cursor;
|
||
|
|
|
||
|
|
use brush_parser::Parser;
|
||
|
|
use miette::{IntoDiagnostic, miette};
|
||
|
|
|
||
|
|
fn main() -> miette::Result<()> {
|
||
|
|
let f = std::env::args()
|
||
|
|
.nth(1)
|
||
|
|
.ok_or_else(|| miette!("Please provide a file name"))?;
|
||
|
|
|
||
|
|
let source = std::fs::read_to_string(&f).into_diagnostic()?;
|
||
|
|
let reader = Cursor::new(&source);
|
||
|
|
let mut parser = Parser::builder().build(reader);
|
||
|
|
|
||
|
|
let ast = parser
|
||
|
|
.parse_program()
|
||
|
|
.map_err(|e| e.to_pretty_error(&source))?;
|
||
|
|
|
||
|
|
println!("{ast:#?}");
|
||
|
|
|
||
|
|
Ok(())
|
||
|
|
}
|