+ catch(const exception &e)
+ {
+ good = false;
+ if(dynamic_cast<const data_error *>(&e))
+ throw;
+ else
+ throw data_error(src, in.get_line_number(), e);
+ }
+}
+
+void Parser::process_control_statement(const Statement &st)
+{
+ if(st.keyword=="__bin")
+ {
+ delete mode;
+ mode = new BinaryParser(in, src);
+
+ while(in.peek()=='\n')
+ in.get();
+ }
+ else if(st.keyword=="__text")