|
|
@ -341,7 +341,12 @@ impl Parser { |
|
|
|
fn parse_field_access(&mut self, lhs: Expression) -> Result<Expression, String> { |
|
|
|
fn parse_field_access(&mut self, lhs: Expression) -> Result<Expression, String> { |
|
|
|
self.match_token(TokenKind::Dot)?; |
|
|
|
self.match_token(TokenKind::Dot)?; |
|
|
|
let field = self.match_identifier()?; |
|
|
|
let field = self.match_identifier()?; |
|
|
|
Ok(Expression::FieldAccess(Box::new(lhs), field)) |
|
|
|
let expr = Expression::FieldAccess(Box::new(lhs), field); |
|
|
|
|
|
|
|
if self.peek_token(TokenKind::Dot).is_ok() { |
|
|
|
|
|
|
|
self.parse_field_access(expr) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
Ok(expr)
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// TODO: Cleanup
|
|
|
|
/// TODO: Cleanup
|
|
|
|