================================================================================ Simple Enum ================================================================================ enum Foobar { Foo, Bar, } -------------------------------------------------------------------------------- (root (statement (type_definition (enum_definition (identifier) (identifier) (identifier))))) ================================================================================ Nested Enum ================================================================================ enum Foobar { Foo(str), Bar(enum BazBuff { Baz, Buff, }) } -------------------------------------------------------------------------------- (root (statement (type_definition (enum_definition (identifier) (identifier) (type) (identifier) (type_definition (enum_definition (identifier) (identifier) (identifier))))))) ================================================================================ Simple Enum Instance ================================================================================ Foobar::Foo -------------------------------------------------------------------------------- (root (statement (expression (value (enum_instance (identifier) (identifier)))))) ================================================================================ Nested Enum Instance ================================================================================ FooBar::Bar(BazBuf::Baz(123)) -------------------------------------------------------------------------------- (root (statement (expression (value (enum_instance (identifier) (identifier) (expression (value (enum_instance (identifier) (identifier) (expression (value (integer)))))))))))