h
Size: a a a
h
h
Identifier ноду с отдельным типов Identifier. Он не будет абсолютно всё делать как Node {NodeList children}ВМ
public interface Expr {}
public sealed class Value : Expr { public readonly int x; }
public sealed class PlusOperator : Expr { public readonly Expr lhs; public readonly Expr rhs; }РС
h
kind делать, и потом приводить её к типу. А чтобы не было type-slicing'а (простите за мой плюсовый, есть ли он в шарпах не знаю), надо будет поинтеры хранитьВМ
РС
ВМ
h
Node Identifier типа. И для этого вам придется записывать тэг вроде NodeKind::Identifier, и потом приводить эту Node к типу Identifier. И если вдруг, там будет не Identifier... 🔥ВМ
h
vector)РС
DP
h
DP
РС
h
kind всё равно надо будет хранить. его хранить придется в любой случае кстати, так как иногда нужно статически проверять тип ноды при парсинге.switch'и повсюду на этот kindРС
h