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);
|
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 == "(") {
|
if (inner.peek().content == "(") {
|
||||||
inner.next();
|
inner.next();
|
||||||
|
|
||||||
@ -273,6 +273,14 @@ namespace parsing {
|
|||||||
before_meta + inner.metadata(), plain_expr.unwrap(), *postfix.unwrap() };
|
before_meta + inner.metadata(), plain_expr.unwrap(), *postfix.unwrap() };
|
||||||
plain_expr = std::unique_ptr<AST::Expression>{ idx_expr };
|
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