summaryrefslogtreecommitdiff
path: root/src/tokens/packed_binary_literal.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tokens/packed_binary_literal.rs')
-rw-r--r--src/tokens/packed_binary_literal.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/tokens/packed_binary_literal.rs b/src/tokens/packed_binary_literal.rs
index 1252398..a2720b7 100644
--- a/src/tokens/packed_binary_literal.rs
+++ b/src/tokens/packed_binary_literal.rs
@@ -2,17 +2,13 @@ use crate::*;
pub struct PackedBinaryLiteral {
+ pub source: SourceSpan,
pub value: usize,
+ pub bits: usize,
pub fields: Vec<BitField>,
pub errors: Vec<PackedBinaryLiteralParseError>,
}
-impl PackedBinaryLiteral {
- pub fn from_str(string: &str, parent: &Tokeniser) -> Self {
- parse_packed_binary_literal(string, parent)
- }
-}
-
pub struct BitField {
pub name: char,
pub source: SourceSpan,
@@ -40,7 +36,8 @@ impl std::fmt::Display for PackedBinaryLiteral {
} else {
let bitcount = (self.value.ilog2() + 1) as usize;
'bit: for i in (0..bitcount).rev() {
- if (i+1) % 4 == 0 {
+ let is_first_bit = i+1 == bitcount;
+ if !is_first_bit && (i+1) % 4 == 0 {
write!(f, "_")?;
}
for field in &self.fields {