MCPcopy Index your code
hub / github.com/endbasic/endbasic / parse_array_or_builtin_call

Method parse_array_or_builtin_call

core/src/parser.rs:398–426  ·  view source on GitHub ↗

Starts processing either an array reference or a builtin call and disambiguates between the two.

(
        &mut self,
        vref: VarRef,
        vref_pos: LineCol,
    )

Source from the content-addressed store, hash-verified

396 /// Starts processing either an array reference or a builtin call and disambiguates between the
397 /// two.
398 fn parse_array_or_builtin_call(
399 &mut self,
400 vref: VarRef,
401 vref_pos: LineCol,
402 ) -> Result<Statement> {
403 match self.lexer.peek()?.token {
404 Token::LeftParen => {
405 let left_paren = self.lexer.consume_peeked();
406 let spans = self.parse_comma_separated_exprs()?;
407 let mut exprs = spans.into_iter().map(|span| span.expr.unwrap()).collect();
408 match self.lexer.peek()?.token {
409 Token::Equal => {
410 self.lexer.consume_peeked();
411 self.parse_array_assignment(vref, vref_pos, exprs)
412 }
413 _ => {
414 if exprs.len() != 1 {
415 return Err(Error::Bad(
416 left_paren.pos,
417 "Expected expression".to_owned(),
418 ));
419 }
420 self.parse_builtin_call(vref, vref_pos, Some(exprs.remove(0)))
421 }
422 }
423 }
424 _ => self.parse_builtin_call(vref, vref_pos, None),
425 }
426 }
427
428 /// Parses the type name of an `AS` type definition.
429 ///

Callers 2

parse_unilineMethod · 0.80
parse_oneMethod · 0.80

Calls 7

consume_peekedMethod · 0.80
parse_builtin_callMethod · 0.80
removeMethod · 0.80
peekMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected