Added parsing of anchors, aliases, and tags (still no semantics yet).

Fixed a silly bug in the simple key pushing (queues are FIFO!).
This commit is contained in:
Jesse Beder 2008-07-01 01:17:10 +00:00
parent 121c2e577f
commit 8180a85a3b
10 changed files with 167 additions and 34 deletions

20
map.cpp
View file

@ -10,28 +10,37 @@ namespace YAML
}
Map::~Map()
{
Clear();
}
void Map::Clear()
{
for(node_map::const_iterator it=m_data.begin();it!=m_data.end();++it) {
delete it->first;
delete it->second;
}
m_data.clear();
}
void Map::Parse(Scanner *pScanner)
{
// grab start token
Token *pToken = pScanner->GetNextToken();
Clear();
// split based on start token
Token *pToken = pScanner->PeekNextToken();
switch(pToken->type) {
case TT_BLOCK_MAP_START: ParseBlock(pScanner); break;
case TT_FLOW_MAP_START: ParseFlow(pScanner); break;
}
delete pToken;
}
void Map::ParseBlock(Scanner *pScanner)
{
// eat start token
pScanner->EatNextToken();
while(1) {
Token *pToken = pScanner->PeekNextToken();
if(!pToken)
@ -61,6 +70,9 @@ namespace YAML
void Map::ParseFlow(Scanner *pScanner)
{
// eat start token
pScanner->EatNextToken();
while(1) {
Token *pToken = pScanner->PeekNextToken();
if(!pToken)