small cleanup

This commit is contained in:
dc-dc-dc 2023-12-17 21:44:54 -05:00
parent bd422decc4
commit be075a82bf

View File

@ -18,23 +18,17 @@ Token Tokenizer::getToken() {
} }
switch (nextChar) { switch (nextChar) {
case '{': case '{':
this->_loc++; return Token{TOKEN::CURLY_OPEN, ++this->_loc};
return Token{TOKEN::CURLY_OPEN};
case '}': case '}':
this->_loc++; return Token{TOKEN::CURLY_CLOSE, ++this->_loc};
return Token{TOKEN::CURLY_CLOSE};
case ':': case ':':
this->_loc++; return Token{TOKEN::COLON, ++this->_loc};
return Token{TOKEN::COLON};
case '[': case '[':
this->_loc++; return Token{TOKEN::ARRAY_OPEN, ++this->_loc};
return Token{TOKEN::ARRAY_OPEN};
case ']': case ']':
this->_loc++; return Token{TOKEN::ARRAY_CLOSE, ++this->_loc};
return Token{TOKEN::ARRAY_CLOSE};
case ',': case ',':
this->_loc++; return Token{TOKEN::COMMA, ++this->_loc};
return Token{TOKEN::COMMA};
case '"': { case '"': {
size_t start = ++this->_loc; size_t start = ++this->_loc;
while (_data[++this->_loc] != '"' && this->hasMoreTokens()) while (_data[++this->_loc] != '"' && this->hasMoreTokens())
@ -63,14 +57,16 @@ Token Tokenizer::getToken() {
JSONNode parseJson(const char* data, size_t len) { JSONNode parseJson(const char* data, size_t len) {
auto tokenizer = Tokenizer(data, len); auto tokenizer = Tokenizer(data, len);
std::stack<JSONNode*> ctx; std::stack<JSONNode*> ctx;
std::string key;
while (tokenizer.hasMoreTokens()) { while (tokenizer.hasMoreTokens()) {
auto token = tokenizer.getToken(); auto token = tokenizer.getToken();
switch (token.type) { switch (token.type) {
case TOKEN::NULL_TYPE:
break;
case TOKEN::CURLY_OPEN: case TOKEN::CURLY_OPEN:
ctx.push(new JSONNode(JSONNode::Type::OBJECT)); ctx.push(new JSONNode(JSONNode::Type::OBJECT));
break; break;
case TOKEN::ARRAY_OPEN:
ctx.push(new JSONNode(JSONNode::Type::LIST));
break;
case TOKEN::CURLY_CLOSE: case TOKEN::CURLY_CLOSE:
if (ctx.top()->is_type(JSONNode::Type::OBJECT)) { if (ctx.top()->is_type(JSONNode::Type::OBJECT)) {
auto obj = ctx.top(); auto obj = ctx.top();
@ -94,9 +90,7 @@ JSONNode parseJson(const char* data, size_t len) {
} }
} }
break; break;
case TOKEN::ARRAY_OPEN:
ctx.push(new JSONNode(JSONNode::Type::LIST));
break;
case TOKEN::ARRAY_CLOSE: case TOKEN::ARRAY_CLOSE:
if (ctx.top()->is_type(JSONNode::Type::STRING)) { if (ctx.top()->is_type(JSONNode::Type::STRING)) {
// key is above // key is above
@ -156,6 +150,8 @@ JSONNode parseJson(const char* data, size_t len) {
break; break;
case TOKEN::COLON: case TOKEN::COLON:
break; break;
case TOKEN::NULL_TYPE:
break;
} }
} }
} }