+ for(list<Statement>::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i)
+ load_statement(*i);
+ finish();
+}
+
+void Loader::load_statement(const Statement &st)
+{
+ cur_st = &st;
+ ActionMap::iterator j = actions.find(st.keyword);
+ if(j==actions.end())
+ throw_at(KeyError("Unknown keyword", st.keyword), st.get_location());
+ if(j->second)
+ {
+ try
+ {
+ j->second->execute(*this, st);
+ }
+ catch(Exception &e)
+ {
+ if(!e.where()[0])
+ e.at(st.get_location());
+ throw;
+ }
+ }
+ cur_st = 0;