def process_if(exp)
cond_part = process exp.shift
result = "if (#{cond_part})"
then_block = ! exp.first.nil? && exp.first.first == :block
then_part = process exp.shift
else_block = ! exp.first.nil? && exp.first.first == :block
else_part = process exp.shift
then_part = "" if then_part.nil?
else_part = "" if else_part.nil?
result += " {\n"
then_part = then_part.join(";\n") if Array === then_part
then_part += ";" unless then_part =~ /[;}]\Z/
result += then_part.to_s
result += ";" if then_part.nil?
result += "\n" unless result =~ /\n\Z/
result += "}"
if else_part != "" then
result += " else {\n"
else_part = else_part.join(";\n") if Array === else_part
else_part += ";" unless else_part =~ /[;}]\Z/
result += else_part
result += "\n}"
end
result
end