mirror of
https://github.com/Ed94/metadesk.git
synced 2026-06-13 07:52:22 -07:00
eliminate ParseTagList and redundant parse result fields
This commit is contained in:
+4
-69
@@ -2038,7 +2038,7 @@ MD_FUNCTION_IMPL MD_ParseResult
|
||||
MD_ParseResultZero(void)
|
||||
{
|
||||
MD_ParseResult result = MD_ZERO_STRUCT;
|
||||
result.node = result.last_node = MD_NilNode();
|
||||
result.node = MD_NilNode();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2291,66 +2291,8 @@ MD_ParseNodeSet(MD_Arena *arena, MD_String8 string, MD_u64 offset, MD_Node *pare
|
||||
}
|
||||
|
||||
//- rjf: fill result info
|
||||
result.node = parent->first_child;
|
||||
result.last_node = parent->last_child;
|
||||
result.string_advance= off - offset;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO(rjf): Inline this in the only place it is called
|
||||
MD_FUNCTION_IMPL MD_ParseResult
|
||||
_MD_ParseTagList(MD_Arena *arena, MD_String8 string, MD_u64 offset)
|
||||
{
|
||||
MD_ParseResult result = MD_ParseResultZero();
|
||||
MD_u64 off = offset;
|
||||
|
||||
for(;off < string.size;)
|
||||
{
|
||||
//- rjf: parse @ symbol, signifying start of tag
|
||||
off += MD_LexAdvanceFromSkips(MD_S8Skip(string, off), MD_TokenGroup_Irregular);
|
||||
MD_Token next_token = MD_TokenFromString(MD_S8Skip(string, off));
|
||||
if(next_token.kind != MD_TokenKind_Reserved ||
|
||||
next_token.string.str[0] != '@')
|
||||
{
|
||||
break;
|
||||
}
|
||||
off += next_token.raw_string.size;
|
||||
|
||||
//- rjf: parse string of tag node
|
||||
MD_Token name = MD_TokenFromString(MD_S8Skip(string, off));
|
||||
MD_u64 name_off = off;
|
||||
if((name.kind & MD_TokenGroup_Label) == 0)
|
||||
{
|
||||
// NOTE(rjf): @error Improper token for tag string
|
||||
MD_String8 error_str = MD_S8Fmt(arena, "\"%.*s\" is not a proper tag label",
|
||||
MD_S8VArg(name.raw_string));
|
||||
MD_Message *error = MD_MakeTokenError(arena, string, name, MD_MessageKind_Error, error_str);
|
||||
MD_MessageListPush(&result.errors, error);
|
||||
break;
|
||||
}
|
||||
off += name.raw_string.size;
|
||||
|
||||
//- rjf: build tag
|
||||
MD_Node *tag = MD_MakeNode(arena, MD_NodeKind_Tag, name.string, name.raw_string, name_off);
|
||||
|
||||
//- rjf: parse tag arguments
|
||||
MD_Token open_paren = MD_TokenFromString(MD_S8Skip(string, off));
|
||||
MD_ParseResult args_parse = MD_ParseResultZero();
|
||||
if(open_paren.kind == MD_TokenKind_Reserved &&
|
||||
open_paren.string.str[0] == '(')
|
||||
{
|
||||
args_parse = MD_ParseNodeSet(arena, string, off, tag, MD_ParseSetRule_EndOnDelimiter);
|
||||
MD_MessageListConcat(&result.errors, &args_parse.errors);
|
||||
}
|
||||
off += args_parse.string_advance;
|
||||
|
||||
//- rjf: push tag to result
|
||||
MD_NodeDblPushBack(result.node, result.last_node, tag);
|
||||
}
|
||||
|
||||
//- rjf: fill result
|
||||
result.string_advance= off - offset;
|
||||
result.node = parent;
|
||||
result.string_advance = off - offset;
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -2448,13 +2390,6 @@ MD_ParseOneNode(MD_Arena *arena, MD_String8 string, MD_u64 offset)
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: parse tag list
|
||||
#if 0
|
||||
MD_ParseResult tags_parse = _MD_ParseTagList(arena, string, off);
|
||||
off += tags_parse.string_advance;
|
||||
MD_MessageListConcat(&result.errors, &tags_parse.errors);
|
||||
#endif
|
||||
|
||||
//- rjf: parse node
|
||||
MD_Node *parsed_node = MD_NilNode();
|
||||
MD_ParseResult children_parse = MD_ParseResultZero();
|
||||
@@ -2628,7 +2563,7 @@ MD_ParseWholeString(MD_Arena *arena, MD_String8 filename, MD_String8 contents)
|
||||
{
|
||||
MD_Node *root = MD_MakeNode(arena, MD_NodeKind_File, filename, contents, 0);
|
||||
MD_ParseResult result = MD_ParseNodeSet(arena, contents, 0, root, MD_ParseSetRule_Global);
|
||||
result.node = result.last_node = root;
|
||||
result.node = root;
|
||||
for(MD_Message *error = result.errors.first; error != 0; error = error->next)
|
||||
{
|
||||
if(MD_NodeIsNil(error->node->parent))
|
||||
|
||||
@@ -752,8 +752,6 @@ typedef struct MD_ParseResult MD_ParseResult;
|
||||
struct MD_ParseResult
|
||||
{
|
||||
MD_Node *node;
|
||||
// TODO(rjf): Remove once we're not using it for ParseTagList
|
||||
MD_Node *last_node;
|
||||
MD_u64 string_advance;
|
||||
MD_MessageList errors;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user