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

Method try_parse_literal_pattern

crates/hll-to-ir/src/parser.rs:2055–2076  ·  view source on GitHub ↗

Parse a leading int/char literal pattern (optional `-`), else None so the caller falls through to identifier-led patterns. Char reuses ascii-byte form.

(&mut self)

Source from the content-addressed store, hash-verified

2053 match self.peek() {
2054 Some(Token::RBracket) | None => Err(self.error("expected array size")),
2055 _ => Ok(ArrayLen::Const(Box::new(self.parse_expression()?))),
2056 }
2057 }
2058
2059 fn expect_ident(&mut self) -> Result<String, ParserError> {
2060 match self.peek() {
2061 Some(Token::Ident(name)) => {
2062 let out = (*name).to_owned();
2063 self.advance();
2064 Ok(out)
2065 }
2066 Some(tok) => Err(self.error_with_token("expected identifier", tok)),
2067 None => Err(self.error("unexpected end of input")),
2068 }
2069 }
2070
2071 fn expect_integer(&mut self) -> Result<i64, ParserError> {
2072 match self.peek() {
2073 Some(Token::Integer(text)) => {
2074 let value = strip_separators(text)
2075 .parse::<i64>()
2076 .map_err(|_| self.error("invalid integer literal"))?;
2077 self.advance();
2078 Ok(value)
2079 }

Callers 1

parse_patternMethod · 0.80

Calls 5

peekMethod · 0.80
expect_integerMethod · 0.80
expect_hex_integerMethod · 0.80
advanceMethod · 0.45
errorMethod · 0.45

Tested by

no test coverage detected