Add a pretty printer.
This commit is contained in:
20
src/bin.rs
20
src/bin.rs
@@ -5,6 +5,7 @@ use codespan_reporting::term;
|
||||
use codespan_reporting::term::termcolor::{ColorChoice, StandardStream};
|
||||
use ngr::error::Error;
|
||||
use ngr::syntax::Program;
|
||||
use pretty::{Arena, Pretty};
|
||||
use std::fs;
|
||||
|
||||
#[derive(Parser, Debug)]
|
||||
@@ -34,11 +35,20 @@ fn main() {
|
||||
let mut file_database = SimpleFiles::new();
|
||||
let initial_file_name = &args.file;
|
||||
|
||||
if let Err(e) = compile_file(&mut file_database, initial_file_name) {
|
||||
let diagnostic = Diagnostic::from(e);
|
||||
let writer = StandardStream::stderr(ColorChoice::Auto);
|
||||
let config = codespan_reporting::term::Config::default();
|
||||
match compile_file(&mut file_database, initial_file_name) {
|
||||
Ok(p) => {
|
||||
let arena = Arena::new();
|
||||
p.pretty(&arena)
|
||||
.into_doc()
|
||||
.render_colored(72, StandardStream::stdout(ColorChoice::Auto))
|
||||
.unwrap()
|
||||
}
|
||||
Err(e) => {
|
||||
let diagnostic = Diagnostic::from(e);
|
||||
let writer = StandardStream::stderr(ColorChoice::Auto);
|
||||
let config = codespan_reporting::term::Config::default();
|
||||
|
||||
term::emit(&mut writer.lock(), &config, &file_database, &diagnostic).unwrap();
|
||||
term::emit(&mut writer.lock(), &config, &file_database, &diagnostic).unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user