def exec_stmt(stmt_node, str, level)
token = stmt_node.token
left = stmt_node.left
right = stmt_node.right
str << ' ' * level
str << (token.is_a?(Symbol) ? token.inspect : token)
str << @newline
if stmt_node.is_a?(Conditional) && (cond = stmt_node.condition)
exec(cond, str, level+1)
end
case token
when :expand, :macro, :rawcode, ':::'
Kwartz::assert() unless left.is_a?(String)
str << ' ' * (level+1) << left << @newline
else
exec(left, str, level+1) if left
end
exec(right, str, level+1) if right
return str
end