-Statement BinaryParser::parse(bool raw)
-{
- while(1)
- {
- Statement st = parse_statement(raw);
- if(st.keyword=="__kwd")
- {
- int id = st.args[0].get<int>();
- if(id<=0)
- throw bad_definition("__kwd");
-
- const string &kw = st.args[1].get<const string &>();
- const string &args = st.args[2].get<const string &>();
- for(string::const_iterator i=args.begin(); i!=args.end(); ++i)
- for(unsigned j=0; valid_signatures[j]!=*i; ++j)
- if(!valid_signatures[j])
- throw bad_definition("__kwd");
-
- dict[id] = StatementKey(kw, args);
- }
- else if(st.keyword=="__str")
- {
- int id = st.args[0].get<int>();
- if(id<=0)
- throw bad_definition("__str");
-
- strings[id] = st.args[1].get<const string &>();
- }
- else if(st.keyword=="__flt")
- float_precision = st.args[0].get<unsigned>();
- else
- return st;
-
- if(raw)
- return st;
- }
-}
-
-Statement BinaryParser::parse_statement(bool raw)