From 200b653e619ec869acc37671c2a615cd4facebab Mon Sep 17 00:00:00 2001 From: Joscha Date: Sun, 20 Nov 2022 20:32:14 +0100 Subject: [PATCH] Pretty print programs partially --- src/main.rs | 12 ++++-------- src/pretty.rs | 10 +--------- src/pretty/program.rs | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 src/pretty/program.rs diff --git a/src/main.rs b/src/main.rs index 57f1850..ee5f73a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,6 @@ use std::fs; use std::path::PathBuf; -use ::pretty::{Pretty, RcAllocator}; use chumsky::Parser as _; use clap::Parser; @@ -48,17 +47,14 @@ fn main() -> anyhow::Result<()> { let stream = span::stream_from_str(&content); match parser::parser().parse(stream) { Ok(program) => { - println!("Successful parse"); - let doc = program.pretty(&RcAllocator); let mut out = vec![]; - doc.render(100, &mut out)?; - let str = String::from_utf8(out)?; - println!("{str}"); + program.to_doc().render(100, &mut out)?; + println!("{}", String::from_utf8(out)?); } Err(errs) => { - println!("Parsing failed"); + eprintln!("Parsing failed"); for err in errs { - println!("{err:?}"); + eprintln!("{err:?}"); } } } diff --git a/src/pretty.rs b/src/pretty.rs index 1d8e288..3847c62 100644 --- a/src/pretty.rs +++ b/src/pretty.rs @@ -1,9 +1 @@ -use pretty::{DocAllocator, DocBuilder, Pretty}; - -use crate::ast::Program; - -impl<'a, A: DocAllocator<'a>> Pretty<'a, A> for Program { - fn pretty(self, allocator: &'a A) -> DocBuilder<'a, A, ()> { - allocator.text("Hello world") - } -} +mod program; diff --git a/src/pretty/program.rs b/src/pretty/program.rs new file mode 100644 index 0000000..60a5ca0 --- /dev/null +++ b/src/pretty/program.rs @@ -0,0 +1,23 @@ +use pretty::RcDoc; + +use crate::ast::Program; + +impl Program { + pub fn to_doc(&self) -> RcDoc { + match self { + Program::Expr { + s0, + expr, + s1, + span: _, + } => RcDoc::nil(), + Program::Module { + s0, + s1, + elems, + s2, + span: _, + } => RcDoc::text("module"), + } + } +}