def translate_if_stmt(stmt_node, code='', level=0)
node = stmt_node
flag_first = true
while node.token == :if do
cond_expr = node.condition
then_nodelist = node.left
else_node = node.right
indent(code, level)
code << (flag_first ? encode(:if) : encode(:elsif))
translate(cond_expr, code)
code << encode(:then)
translate(then_nodelist, code, level+1)
if encode(:endthen)
indent(code, level)
code << encode(:endthen)
end
node = else_node
break if node == nil
flag_first = false
end
if node
Kwartz::assert() unless node.is_a?(NodeList)
indent(code, level)
code << encode(:else)
translate(node, code, level+1)
if encode(:endelse)
indent(code, level)
code << encode(:endelse)
end
end
indent(code, level)
code << encode(:endif)
return code
end