Я только что добавил C -style struct
к своему игрушечному языку, и я не уверен, как представить доступ к элементам данных в моем AST. Я рассматриваю что-то вроде
class StructProperty : public Expr {
std::unique_ptr<Expr> parent_;
std::string property_;
};
, чтобы getParent().data.foo = 42;
было проанализировано как
AssignStmt:
-> rhs: IntegerLiteral
-> value: 42
-> lvalue: StructProperty
-> name: foo
-> parent: StructProperty
-> name: data
-> parent: FuncCall
-> name: getParent
-> args: none
Имеет ли это какой-то смысл? Это как struct
члены данных обычно представлены в AST? Есть ли лучший способ?