fix parset issues
This commit is contained in:
+20
-13
@@ -99,7 +99,7 @@ namespace /* internal */
|
||||
sign = -1;
|
||||
break;
|
||||
case '0' ... '9':
|
||||
val = val*10 + *it_data;
|
||||
val = val*10 + (*it_data - '0');
|
||||
break;
|
||||
case '.':
|
||||
if(val == 0)
|
||||
@@ -177,8 +177,13 @@ namespace /* internal */
|
||||
switch(*it_data)
|
||||
{
|
||||
case ',':
|
||||
res.push_back( cur_tree->findId(name.data()) );
|
||||
name.clear();
|
||||
if(!name.empty())
|
||||
{
|
||||
res.push_back( cur_tree->findId(name.data()) );
|
||||
name.clear();
|
||||
}
|
||||
else
|
||||
unexpected_char(',');
|
||||
break;
|
||||
case '\n':
|
||||
++line;
|
||||
@@ -188,7 +193,9 @@ namespace /* internal */
|
||||
name.push_back(*it_data);
|
||||
}
|
||||
}
|
||||
/* return res;todo */
|
||||
if(!name.empty())
|
||||
res.push_back( cur_tree->findId(name.data()) );
|
||||
return res;
|
||||
}
|
||||
|
||||
void state_neutral()
|
||||
@@ -216,7 +223,7 @@ namespace /* internal */
|
||||
{
|
||||
char* name_start = it_data;
|
||||
pair<person_id, person_id> parents(Nobody, Nobody);
|
||||
person_id spouse;
|
||||
vector<person_id> spouses;
|
||||
EventTime birth{};
|
||||
EventTime death{};
|
||||
|
||||
@@ -232,7 +239,8 @@ namespace /* internal */
|
||||
{
|
||||
case '\n':
|
||||
++line;
|
||||
++it_data;
|
||||
break;
|
||||
default:
|
||||
if(it_data[1] == ':') /* todo */
|
||||
{
|
||||
switch(*it_data)
|
||||
@@ -251,7 +259,7 @@ namespace /* internal */
|
||||
break;
|
||||
case 's':
|
||||
it_data += 2;
|
||||
parseSpouses();
|
||||
spouses = parseSpouses();
|
||||
break;
|
||||
default:
|
||||
unexpected_char(it_data[-1]);
|
||||
@@ -261,17 +269,17 @@ namespace /* internal */
|
||||
else
|
||||
{
|
||||
cur_tree->addPerson(name.c_str(), sex, parents.first, parents.second, birth, death);
|
||||
for(person_id spouse: spouses)
|
||||
cur_tree->addRelation(spouse, Spouse, cur_tree->last());
|
||||
--it_data; /* rewind 1 */
|
||||
return;
|
||||
}
|
||||
break;
|
||||
/* case '#': */
|
||||
/* state = state_comment; */
|
||||
/* return; */
|
||||
/* case 0...9: */
|
||||
/* case ':': */
|
||||
/* unexpected_char(*it_data); */
|
||||
default:
|
||||
break;
|
||||
/* default: */
|
||||
/* break; */
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -308,7 +316,6 @@ namespace /* internal */
|
||||
|
||||
Tree parseTftFile(MappedFile file)
|
||||
{
|
||||
|
||||
Tree result("name");
|
||||
cur_tree = &result;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user