Add a pretty printer.

This commit is contained in:
2022-02-18 10:37:15 -08:00
parent 6c5ca6b782
commit f45488b9af
3 changed files with 132 additions and 5 deletions

View File

@@ -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();
}
}
}