# File kwartz.rb, line 2652 def exec_expr(expr_node, arg1=nil, arg2=nil) case tkn = expr_node.token when :variable varname = expr_node.left if _debut?(varname) then _regist(varname) elsif _scope(varname) == :local && ! _initialized?(varname) then msg = "#{varname}: uninitialized local var is used, or tryng to assign into global var." @warnings << msg end when '[]', '{}' exec_expr(expr_node.right) exec_expr(expr_node.left) when '[:]', '.' exec_expr(expr_node.left) when :string, :number, :true, :false, :null # do nothing when :function exec_expr(expr_node.right) if expr_node.right when '+', '-' exec_expr(expr_node.left, arg1, arg2) exec_expr(expr_node.right, arg1, arg2) if expr_node.right when '*', '/', '%' #, '^' exec_expr(expr_node.left, arg1, arg2) exec_expr(expr_node.right, arg1, arg2) when '!' exec_expr(expr_node.left) when '==', '!=', '<', '<=', '>', '>=', '&&', '||' exec_expr(expr_node.left) exec_expr(expr_node.right) when '.+', ',' exec_expr(expr_node.left) exec_expr(expr_node.right) when '.==', '.!=', '.<', '.<=', '.>', '.>=' exec_expr(expr_node.left) exec_expr(expr_node.right) when :empty, :notempty exec_expr(expr_node.left) when '?' exec_expr(expr_node.condition) exec_expr(expr_node.left) exec_expr(expr_node.right) else Kwartz::assert("tknn=#{tkn.inspect}") end end