in smt2parser/src/concrete.rs [1069:1107]
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
// ⟨numeral⟩ | ⟨decimal⟩ | ⟨hexadecimal⟩ | ⟨binary⟩ | ⟨string⟩
use Constant::*;
match self {
Numeral(num) => write!(f, "{}", num),
Decimal(dec) => {
let nom = dec.trunc();
let mut denom = dec.fract();
while !denom.is_integer() {
denom *= num::BigInt::from(10u32);
}
write!(f, "{}.{}", nom, denom)
}
Hexadecimal(hex) => {
write!(f, "#x")?;
for digit in hex {
write!(f, "{:x}", digit)?;
}
Ok(())
}
Binary(bin) => {
write!(f, "#b")?;
for digit in bin {
if *digit {
write!(f, "1")?;
} else {
write!(f, "0")?;
}
}
Ok(())
}
String(value) => {
for s in value.split('"') {
write!(f, "\"{}\"", s)?;
}
Ok(())
}
}
}