Cleanup, added to_string_outer

This commit is contained in:
2023-04-10 11:10:27 -07:00
parent a38293c247
commit ae05ebb5ff
5 changed files with 33 additions and 10 deletions

View File

@ -26,15 +26,28 @@ pub enum Token {
),
}
impl Token {
pub fn print(&self) -> String {
impl ToString for Token {
fn to_string(&self) -> String {
match self {
Token::Number(v) => v.to_string(),
Token::Constant(_,s) => s.clone(),
Token::Constant(_, s) => s.clone(),
Token::Operator(o,a) => o.print(a)
}
}
}
impl Token {
// This is called only when this is the outermost token.
// This sometimes leads to different--usually more verbose--behavior.
pub fn to_string_outer(&self) -> String {
match self {
Token::Number(v) => v.to_string_outer(),
Token::Constant(_, s) => s.clone(),
Token::Operator(o,a) => o.print(a)
}
}
#[inline(always)]
pub fn get_args(&self) -> Option<&VecDeque<Token>> {

View File

@ -54,7 +54,7 @@ impl Operator {
#[inline(always)]
fn add_parens_to_arg(&self, arg: &Token) -> String {
let mut astr: String = arg.print();
let mut astr: String = arg.to_string();
if let Token::Operator(o,_) = arg {
if o < self {
astr = format!("({})", astr);
@ -65,7 +65,7 @@ impl Operator {
#[inline(always)]
fn add_parens_to_arg_strict(&self, arg: &Token) -> String {
let mut astr: String = arg.print();
let mut astr: String = arg.to_string();
if let Token::Operator(o,_) = arg {
if o <= self {
astr = format!("({})", astr);
@ -193,7 +193,7 @@ impl Operator {
},
Operator::Function(s) => {
return format!("{}({})", s.to_string(), args[0].print());
return format!("{}({})", s.to_string(), args[0].to_string());
}
};
}