ParserMode(i, s),
first(true)
{
- dict[1] = DictEntry("__kwd", "iss");
- dict[2] = DictEntry("__str", "is");
+ dict[-1] = DictEntry("__kwd", "iss");
+ dict[-2] = DictEntry("__str", "is");
}
Statement BinaryParser::parse()
if(st.args.size()!=3)
throw bad_definition("__kwd");
- const unsigned id = st.args[0].get<unsigned>();
+ const int 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);
in.get();
first = false;
- unsigned id = parse_int();
+ int id = parse_int();
if(!in)
return Statement();
return result;
}
-long long BinaryParser::parse_int()
+IntType::Store BinaryParser::parse_int()
{
- long long result = 0;
+ IntType::Store result = 0;
unsigned bits = 0;
while(in)
break;
}
- const long long mask = 1LL<<(bits-1);
+ const IntType::Store mask = 1LL<<(bits-1);
result = (result^mask)-mask;
return result;
}
-float BinaryParser::parse_float()
+FloatType::Store BinaryParser::parse_float()
{
union
{
return f;
}
-bool BinaryParser::parse_bool()
+BoolType::Store BinaryParser::parse_bool()
{
return in.get();
}
-string BinaryParser::parse_string()
+StringType::Store BinaryParser::parse_string()
{
int len = parse_int();
if(len>=0)
return get_item(strings, -len);
}
-Symbol BinaryParser::parse_symbol()
+SymbolType::Store BinaryParser::parse_symbol()
{
return get_item(strings, parse_int());
}