Parse field accesses
This commit is contained in:
parent
a12cf52c48
commit
21d17bb02d
@ -250,7 +250,7 @@ namespace parsing {
|
||||
}
|
||||
|
||||
auto plain_expr = parse_plain_expression(inner, scope);
|
||||
while (inner.peek().content == "(" || inner.peek().content == "[") {
|
||||
while (inner.peek().content == "(" || inner.peek().content == "[" || inner.peek().content == ".") {
|
||||
if (inner.peek().content == "(") {
|
||||
inner.next();
|
||||
|
||||
@ -273,6 +273,14 @@ namespace parsing {
|
||||
before_meta + inner.metadata(), plain_expr.unwrap(), *postfix.unwrap() };
|
||||
plain_expr = std::unique_ptr<AST::Expression>{ idx_expr };
|
||||
}
|
||||
else if (inner.peek().content == ".") {
|
||||
inner.next();
|
||||
std::string field_name = inner.expect(token::Type::Ident).content;
|
||||
|
||||
plain_expr = std::unique_ptr<AST::Expression>{
|
||||
new AST::FieldAccessExpression{before_meta + inner.metadata(), plain_expr.unwrap(), field_name}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user