macro_rules! codegen {
{ [ $($ast:tt)* ] } => { ... };
{
type: top,
classes: [ $($class:tt)* ],
buffer: []
} => { ... };
{
type: top,
classes: [
$($class:tt)*
],
buffer: [
{
type: class,
rust_name: $rust_name:tt,
ruby_name: $ruby_name:tt,
meta: { pub: $pub:tt, reopen: $reopen:tt },
struct: $struct:tt,
methods: [ $($method:tt)* ]
}
$($rest:tt)*
]
} => { ... };
{
type: done,
classes: [ $(
{
rust_name: $rust_name:tt,
ruby_name: $ruby_name:tt,
struct: { $($struct:tt)* },
methods: [ $($method:tt)* ]
}
)* ]
} => { ... };
}