feat: more pretty printing logic
This commit is contained in:
parent
5a6ba40557
commit
7e86a71772
|
@ -6,7 +6,7 @@ impl Program<Name> {
|
||||||
pub fn to_pretty(&self) -> String {
|
pub fn to_pretty(&self) -> String {
|
||||||
let mut w = Vec::new();
|
let mut w = Vec::new();
|
||||||
|
|
||||||
self.to_doc().render(20, &mut w).unwrap();
|
self.to_doc().render(100, &mut w).unwrap();
|
||||||
|
|
||||||
String::from_utf8(w).unwrap()
|
String::from_utf8(w).unwrap()
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ impl Program<Name> {
|
||||||
RcDoc::text("(")
|
RcDoc::text("(")
|
||||||
.append(RcDoc::text("program"))
|
.append(RcDoc::text("program"))
|
||||||
.append(RcDoc::line())
|
.append(RcDoc::line())
|
||||||
.append(RcDoc::text(version))
|
.append(RcDoc::text(version).nest(2))
|
||||||
.append(RcDoc::line())
|
.append(RcDoc::line())
|
||||||
.append(self.term.to_doc())
|
.append(self.term.to_doc())
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line_())
|
||||||
|
@ -30,31 +30,35 @@ impl Term<Name> {
|
||||||
match self {
|
match self {
|
||||||
Term::Var(name) => RcDoc::text(format!("{}_{}", name.text, name.unique)),
|
Term::Var(name) => RcDoc::text(format!("{}_{}", name.text, name.unique)),
|
||||||
Term::Delay(term) => RcDoc::text("(")
|
Term::Delay(term) => RcDoc::text("(")
|
||||||
.append(RcDoc::line_())
|
.append(
|
||||||
.append(RcDoc::text("delay"))
|
RcDoc::text("delay")
|
||||||
.append(RcDoc::line())
|
.append(RcDoc::line())
|
||||||
.append(term.to_doc())
|
.append(term.to_doc())
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line_()),
|
||||||
|
)
|
||||||
.append(RcDoc::text(")")),
|
.append(RcDoc::text(")")),
|
||||||
Term::Lambda {
|
Term::Lambda {
|
||||||
parameter_name,
|
parameter_name,
|
||||||
body,
|
body,
|
||||||
} => RcDoc::text("(")
|
} => RcDoc::text("(")
|
||||||
.append(RcDoc::line_())
|
.append(
|
||||||
.append(RcDoc::text(format!(
|
RcDoc::text("lam")
|
||||||
"{}_{}",
|
.append(RcDoc::line())
|
||||||
parameter_name.text, parameter_name.unique
|
.append(RcDoc::text(format!(
|
||||||
)))
|
"{}_{}",
|
||||||
.append(RcDoc::line())
|
parameter_name.text, parameter_name.unique
|
||||||
.append(body.to_doc())
|
)))
|
||||||
|
.append(RcDoc::line())
|
||||||
|
.append(body.to_doc()),
|
||||||
|
)
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line_())
|
||||||
.append(RcDoc::text(")")),
|
.append(RcDoc::text(")")),
|
||||||
Term::Apply { function, argument } => RcDoc::text("[")
|
Term::Apply { function, argument } => RcDoc::text("[")
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line())
|
||||||
.append(function.to_doc())
|
.append(function.to_doc())
|
||||||
.append(RcDoc::line())
|
.append(RcDoc::line())
|
||||||
.append(argument.to_doc())
|
.append(argument.to_doc())
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line())
|
||||||
.append(RcDoc::text("]")),
|
.append(RcDoc::text("]")),
|
||||||
Term::Constant(constant) => RcDoc::text("(")
|
Term::Constant(constant) => RcDoc::text("(")
|
||||||
.append(RcDoc::text("con"))
|
.append(RcDoc::text("con"))
|
||||||
|
@ -62,25 +66,22 @@ impl Term<Name> {
|
||||||
.append(constant.to_doc())
|
.append(constant.to_doc())
|
||||||
.append(RcDoc::text(")")),
|
.append(RcDoc::text(")")),
|
||||||
Term::Force(term) => RcDoc::text("(")
|
Term::Force(term) => RcDoc::text("(")
|
||||||
.append(RcDoc::line_())
|
|
||||||
.append(RcDoc::text("force"))
|
.append(RcDoc::text("force"))
|
||||||
.append(RcDoc::line())
|
.append(RcDoc::line())
|
||||||
.append(term.to_doc())
|
.append(term.to_doc())
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line_())
|
||||||
.append(RcDoc::text(")")),
|
.append(RcDoc::text(")")),
|
||||||
Term::Error => RcDoc::text("(")
|
Term::Error => RcDoc::text("(")
|
||||||
.append(RcDoc::line_())
|
|
||||||
.append(RcDoc::text("error"))
|
.append(RcDoc::text("error"))
|
||||||
.append(RcDoc::line_())
|
|
||||||
.append(RcDoc::text(")")),
|
.append(RcDoc::text(")")),
|
||||||
Term::Builtin(builtin) => RcDoc::text("(")
|
Term::Builtin(builtin) => RcDoc::text("(")
|
||||||
.append(RcDoc::line_())
|
|
||||||
.append(RcDoc::text("builtin"))
|
.append(RcDoc::text("builtin"))
|
||||||
.append(RcDoc::line())
|
.append(RcDoc::line())
|
||||||
.append(RcDoc::text(builtin.to_string()))
|
.append(RcDoc::text(builtin.to_string()))
|
||||||
.append(RcDoc::line_())
|
.append(RcDoc::line_())
|
||||||
.append(RcDoc::text(")")),
|
.append(RcDoc::text(")")),
|
||||||
}
|
}
|
||||||
|
.nest(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue