MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / parse_struct_literal_fields

Method parse_struct_literal_fields

crates/hll-to-ir/src/parser.rs:2078–2107  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

2076 .map_err(|_| self.error("invalid integer literal"))?;
2077 self.advance();
2078 Ok(value)
2079 }
2080 Some(tok) => Err(self.error_with_token("expected integer literal", tok)),
2081 None => Err(self.error("unexpected end of input")),
2082 }
2083 }
2084
2085 fn expect_hex_integer(&mut self) -> Result<i64, ParserError> {
2086 match self.peek() {
2087 Some(Token::HexInteger(text)) => {
2088 let digits = strip_separators(text);
2089 let trimmed = digits.trim_start_matches("0x").trim_start_matches("0X");
2090 // Parse as u64 first to handle large addresses, then cast to i64
2091 let value_u64 = u64::from_str_radix(trimmed, 16)
2092 .map_err(|_| self.error("invalid hex literal"))?;
2093 let value = crate::conv::u64_bits_to_i64(value_u64);
2094 self.advance();
2095 Ok(value)
2096 }
2097 Some(tok) => Err(self.error_with_token("expected hex integer literal", tok)),
2098 None => Err(self.error("unexpected end of input")),
2099 }
2100 }
2101
2102 fn expect_bin_integer(&mut self) -> Result<i64, ParserError> {
2103 match self.peek() {
2104 Some(Token::BinInteger(text)) => {
2105 let digits = strip_separators(text);
2106 let trimmed = digits.trim_start_matches("0b").trim_start_matches("0B");
2107 // Parse as u64 first so a full-width mask keeps its bit pattern.
2108 let value_u64 = u64::from_str_radix(trimmed, 2)
2109 .map_err(|_| self.error("invalid binary literal"))?;
2110 let value = crate::conv::u64_bits_to_i64(value_u64);

Callers 1

parse_primaryMethod · 0.80

Calls 11

expect_lbraceMethod · 0.80
consume_terminatorsMethod · 0.80
check_rbraceMethod · 0.80
match_dotMethod · 0.80
expect_identMethod · 0.80
expect_assignMethod · 0.80
parse_expressionMethod · 0.80
pushMethod · 0.80
match_commaMethod · 0.80
expect_rbraceMethod · 0.80
errorMethod · 0.45

Tested by

no test coverage detected