- if(st.args.size()!=3)
- throw TypeError(src+": Keyword definition must have three arguments");
-
- const unsigned id=st.args[0].get<unsigned>();
- const string &kw=st.args[1].get<const string &>();
- const string &args=st.args[2].get<const string &>();
- dict[id]=DictEntry(kw, args);
+ 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] = DictEntry(kw, args);