# File kwartz.rb, line 1195 def exec_expr(expr_node, str, level) token = expr_node.token left = expr_node.left right = expr_node.right cond = expr_node.condition # str << ' ' * level case token when :string str << left.inspect << "\n" when :variable, :number str << left << "\n" when '[:]', '.' str << token << "\n" exec(left, str, level+1) str << ' ' * (level+1) << right << "\n" when :true, :false, :null str << token.id2name << "\n" when :function str << left << "()\n" exec(right, str, level+1) if right else str << (token.is_a?(Symbol) ? token.inspect : token) str << "\n" Kwartz::assert() unless !cond || cond.is_a?(ExprNode) Kwartz::assert() unless !left || left.is_a?(ExprNode) Kwartz::assert() unless !right || right.is_a?(ExprNode) exec(cond, str, level+1) if cond exec(left, str, level+1) if left exec(right, str, level+1) if right end return str end