Macro analyzed_tree
Source macro_rules! analyzed_tree {
((None)) => { ... };
((Some($($node:tt)*))) => { ... };
((
Program,
globals: [$($global:tt),* $(,)?],
functions: [$($func:tt),* $(,)?],
main_fn: $main_fn:tt,
used_builtins: [$($name:expr),* $(,)?] $(,)?
)) => { ... };
((
FunctionDefinition,
used: $used:expr,
name: $name:expr,
params: [$($param:tt),* $(,)?],
return_type: $return_type:expr,
block: $block:tt $(,)?
)) => { ... };
((
Parameter,
mutable: $mutable:expr,
name: $name:expr,
type: $type:expr $(,)?
)) => { ... };
((
Let,
name: $name:expr,
expr: $expr:tt $(,)?
)) => { ... };
((LetStmt $($rest:tt)*)) => { ... };
((ReturnStmt, $expr:tt $(,)?)) => { ... };
((ExprStmt, $expr:tt $(,)?)) => { ... };
((
Block -> $result_type:expr,
stmts: [$($stmt:tt),* $(,)?],
expr: $expr:tt $(,)?
)) => { ... };
((BlockExpr $($rest:tt)*)) => { ... };
((
IfExpr -> $result_type:expr,
cond: $cond:tt,
then_block: $then_block:tt,
else_block: $else_block:tt $(,)?
)) => { ... };
((Int $expr:expr)) => { ... };
((Float $expr:expr)) => { ... };
((Bool $expr:expr)) => { ... };
((Char $expr:expr)) => { ... };
((Ident -> $type:expr, $ident:expr)) => { ... };
((Grouped $expr:tt)) => { ... };
((
PrefixExpr -> $result_type:expr,
op: $op:expr,
expr: $expr:tt $(,)?
)) => { ... };
((
InfixExpr -> $result_type:expr,
lhs: $lhs:tt,
op: $op:expr,
rhs: $rhs:tt $(,)?
)) => { ... };
((
AssignExpr -> $result_type:expr,
assignee: $assignee:expr,
op: $op:expr,
expr: $expr:tt $(,)?
)) => { ... };
((
CallExpr -> $result_type:expr,
func: $func:expr,
args: [$($arg:tt),* $(,)?] $(,)?
)) => { ... };
((
CastExpr -> $result_type:expr,
expr: $expr:tt,
type: $type:expr $(,)?
)) => { ... };
}