void wpl_block_foreach::parse_value(wpl_namespace *ns) { set_parent_namespace (ns); exp_init.reset(new wpl_expression()); wpl_expression_par_enclosed *exp = new wpl_expression_par_enclosed(); run_condition.reset(exp); ignore_whitespace(); if (!ignore_letter ('(')) { THROW_ELEMENT_EXCEPTION("Expected '(' in foreach loop definition"); } /* Allow declaration of variables inside init statement */ find_and_parse_complete_type(); exp_init->load_position(get_position()); exp_init->parse_value(this); load_position(exp_init->get_position()); exp->insert_fake_open_par(); exp->load_position(get_position()); exp->parse_value(this); load_position(exp->get_position()); get_block()->load_position(get_position()); get_block()->parse_value(this); load_position(get_block()->get_position()); }
void wpl_block_for::parse_value (wpl_namespace *ns) { set_parent_namespace(ns); ignore_whitespace(); if (!ignore_letter ('(')) { THROW_ELEMENT_EXCEPTION("Expected '(' in for loop definition"); } exp_init->load_position(get_position()); exp_init->parse_value(ns); load_position(exp_init->get_position()); exp_condition->load_position(get_position()); exp_condition->parse_value(ns); load_position(exp_condition->get_position()); // This expression catches the end parantheses ')' exp_increment->insert_fake_open_par(); exp_increment->load_position(get_position()); exp_increment->parse_value(ns); load_position(exp_increment->get_position()); ignore_blockstart(); wpl_block::parse_value(this); }