luaur_ast/methods/
parser_parse_expr_list.rs1use crate::records::ast_expr::AstExpr;
2use crate::records::lexeme::Type;
3use crate::records::parser::Parser;
4use crate::records::position::Position;
5use crate::records::temp_vector::TempVector;
6
7impl Parser {
8 pub fn parse_expr_list(
9 &mut self,
10 result: &mut TempVector<'_, *mut AstExpr>,
11 mut comma_positions: Option<&mut TempVector<'_, Position>>,
12 ) {
13 result.push_back(self.parse_expr_i32(0));
14
15 while self.lexer.current().r#type == Type(',' as i32) {
16 if let Some(ref mut positions) = comma_positions {
17 positions.push_back(self.lexer.current().location.begin);
18 }
19
20 self.next_lexeme();
21
22 if self.lexer.current().r#type == Type(')' as i32) {
23 self.report(
24 self.lexer.current().location,
25 format_args!("Expected expression after ',' but got ')' instead"),
26 );
27 break;
28 }
29
30 result.push_back(self.parse_expr_i32(0));
31 }
32 }
33}