to_repl() doesn't need symbol table handle
This commit is contained in:
parent
4c718ed977
commit
b967fa1911
@ -69,12 +69,12 @@ fn paren_wrapped_vec(terms: impl Iterator<Item=String>) -> String {
|
|||||||
|
|
||||||
|
|
||||||
impl Node {
|
impl Node {
|
||||||
fn to_repl(&self, symbol_table: &SymbolTable) -> String {
|
fn to_repl(&self) -> String {
|
||||||
match self {
|
match self {
|
||||||
Node::Expr(e) => e.to_repl(symbol_table),
|
Node::Expr(e) => e.to_repl(),
|
||||||
Node::PrimObject { name, items, .. } if items.len() == 0 => format!("{}", name),
|
Node::PrimObject { name, items, .. } if items.len() == 0 => format!("{}", name),
|
||||||
Node::PrimObject { name, items, .. } => format!("{}{}", name, paren_wrapped_vec(items.iter().map(|x| x.to_repl(symbol_table)))),
|
Node::PrimObject { name, items, .. } => format!("{}{}", name, paren_wrapped_vec(items.iter().map(|x| x.to_repl()))),
|
||||||
Node::PrimTuple { items } => format!("{}", paren_wrapped_vec(items.iter().map(|x| x.to_repl(symbol_table)))),
|
Node::PrimTuple { items } => format!("{}", paren_wrapped_vec(items.iter().map(|x| x.to_repl()))),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn is_true(&self) -> bool {
|
fn is_true(&self) -> bool {
|
||||||
@ -99,12 +99,10 @@ impl Expr {
|
|||||||
fn to_node(self) -> Node {
|
fn to_node(self) -> Node {
|
||||||
Node::Expr(self)
|
Node::Expr(self)
|
||||||
}
|
}
|
||||||
fn to_repl(&self, symbol_table: &SymbolTable) -> String {
|
fn to_repl(&self) -> String {
|
||||||
use self::Lit::*;
|
use self::Lit::*;
|
||||||
use self::Func::*;
|
use self::Func::*;
|
||||||
|
|
||||||
let _ = symbol_table;
|
|
||||||
|
|
||||||
match self {
|
match self {
|
||||||
Expr::Lit(ref l) => match l {
|
Expr::Lit(ref l) => match l {
|
||||||
Nat(n) => format!("{}", n),
|
Nat(n) => format!("{}", n),
|
||||||
@ -121,7 +119,7 @@ impl Expr {
|
|||||||
Expr::Constructor { type_name, arity, .. } => {
|
Expr::Constructor { type_name, arity, .. } => {
|
||||||
format!("<constructor for `{}` arity {}>", type_name, arity)
|
format!("<constructor for `{}` arity {}>", type_name, arity)
|
||||||
},
|
},
|
||||||
Expr::Tuple(exprs) => paren_wrapped_vec(exprs.iter().map(|x| x.to_repl(symbol_table))),
|
Expr::Tuple(exprs) => paren_wrapped_vec(exprs.iter().map(|x| x.to_repl())),
|
||||||
_ => format!("{:?}", self),
|
_ => format!("{:?}", self),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,8 +154,7 @@ impl<'a> State<'a> {
|
|||||||
for statement in ast.0 {
|
for statement in ast.0 {
|
||||||
match self.statement(statement) {
|
match self.statement(statement) {
|
||||||
Ok(Some(ref output)) if repl => {
|
Ok(Some(ref output)) if repl => {
|
||||||
let ref symbol_table = self.symbol_table_handle.borrow();
|
acc.push(Ok(output.to_repl()))
|
||||||
acc.push(Ok(output.to_repl(symbol_table)))
|
|
||||||
},
|
},
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
@ -342,13 +339,11 @@ impl<'a> State<'a> {
|
|||||||
|
|
||||||
/* builtin functions */
|
/* builtin functions */
|
||||||
(IOPrint, &[ref anything]) => {
|
(IOPrint, &[ref anything]) => {
|
||||||
let ref symbol_table = self.symbol_table_handle.borrow();
|
print!("{}", anything.to_repl());
|
||||||
print!("{}", anything.to_repl(symbol_table));
|
|
||||||
Expr::Unit.to_node()
|
Expr::Unit.to_node()
|
||||||
},
|
},
|
||||||
(IOPrintLn, &[ref anything]) => {
|
(IOPrintLn, &[ref anything]) => {
|
||||||
let ref symbol_table = self.symbol_table_handle.borrow();
|
println!("{}", anything.to_repl());
|
||||||
println!("{}", anything.to_repl(symbol_table));
|
|
||||||
Expr::Unit.to_node()
|
Expr::Unit.to_node()
|
||||||
},
|
},
|
||||||
(IOGetLine, &[]) => {
|
(IOGetLine, &[]) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user