preogress on sanity_tests.c, NodeFlags -> MD_NodeFlags (somehow not renamed)

This commit is contained in:
ed
2025-02-13 07:41:10 -05:00
parent 2d96f311da
commit 28d0c85771
5 changed files with 79 additions and 78 deletions
+6 -6
View File
@@ -1881,9 +1881,9 @@ MD_StringFromNodeKind(NodeKind kind)
} }
MD_FUNCTION MD_String8List MD_FUNCTION MD_String8List
MD_StringListFromNodeFlags(MD_Arena *arena, NodeFlags flags) MD_StringListFromNodeFlags(MD_Arena *arena, MD_NodeFlags flags)
{ {
// NOTE(rjf): @maintenance Must be kept in sync with NodeFlags enum. // NOTE(rjf): @maintenance Must be kept in sync with MD_NodeFlags enum.
static char *flag_cstrs[] = static char *flag_cstrs[] =
{ {
"HasParenLeft", "HasParenLeft",
@@ -2375,7 +2375,7 @@ MD_ParseNodeSet(MD_Arena *arena, MD_String8 string, MD_u64 offset, Node *parent,
//- rjf: fill data from set opener //- rjf: fill data from set opener
Token initial_token = MD_TokenFromString(MD_S8Skip(string, offset)); Token initial_token = MD_TokenFromString(MD_S8Skip(string, offset));
MD_u8 set_opener = 0; MD_u8 set_opener = 0;
NodeFlags set_opener_flags = 0; MD_NodeFlags set_opener_flags = 0;
MD_b32 close_with_brace = 0; MD_b32 close_with_brace = 0;
MD_b32 close_with_paren = 0; MD_b32 close_with_paren = 0;
MD_b32 close_with_separator = 0; MD_b32 close_with_separator = 0;
@@ -2441,7 +2441,7 @@ MD_ParseNodeSet(MD_Arena *arena, MD_String8 string, MD_u64 offset, Node *parent,
MD_u64 parsed_child_count = 0; MD_u64 parsed_child_count = 0;
if(set_opener != 0 || close_with_separator || parse_all) if(set_opener != 0 || close_with_separator || parse_all)
{ {
NodeFlags next_child_flags = 0; MD_NodeFlags next_child_flags = 0;
for(;off < string.size;) for(;off < string.size;)
{ {
@@ -2571,7 +2571,7 @@ MD_ParseNodeSet(MD_Arena *arena, MD_String8 string, MD_u64 offset, Node *parent,
} }
//- rjf: check trailing separator //- rjf: check trailing separator
NodeFlags trailing_separator_flags = 0; MD_NodeFlags trailing_separator_flags = 0;
if(!close_with_separator) if(!close_with_separator)
{ {
off += MD_LexAdvanceFromSkips(MD_S8Skip(string, off), TokenFlagGroup_Irregular); off += MD_LexAdvanceFromSkips(MD_S8Skip(string, off), TokenFlagGroup_Irregular);
@@ -3157,7 +3157,7 @@ MD_NodeAtIndex(Node *first, int n)
} }
MD_FUNCTION Node * MD_FUNCTION Node *
MD_FirstNodeWithFlags(Node *first, NodeFlags flags) MD_FirstNodeWithFlags(Node *first, MD_NodeFlags flags)
{ {
Node *result = MD_NilNode(); Node *result = MD_NilNode();
for(Node *n = first; !MD_NodeIsNil(n); n = n->next) for(Node *n = first; !MD_NodeIsNil(n); n = n->next)
+6 -6
View File
@@ -570,7 +570,7 @@ typedef enum NodeKind
} }
NodeKind; NodeKind;
typedef MD_u64 NodeFlags; typedef MD_u64 MD_NodeFlags;
#define NodeFlag_AfterFromBefore(f) ((f) << 1) #define NodeFlag_AfterFromBefore(f) ((f) << 1)
enum enum
{ {
@@ -629,7 +629,7 @@ struct Node
// Node info. // Node info.
NodeKind kind; NodeKind kind;
NodeFlags flags; MD_NodeFlags flags;
MD_String8 string; MD_String8 string;
MD_String8 raw_string; MD_String8 raw_string;
@@ -729,7 +729,7 @@ typedef struct Token Token;
struct Token struct Token
{ {
MD_TokenKind kind; MD_TokenKind kind;
NodeFlags node_flags; MD_NodeFlags node_flags;
MD_String8 string; MD_String8 string;
MD_String8 raw_string; MD_String8 raw_string;
}; };
@@ -852,7 +852,7 @@ struct MD_ExprParseCtx
struct struct
{ {
MD_ExprOpr *postfix_set_ops[MD_POSTFIX_SETLIKE_OP_COUNT]; MD_ExprOpr *postfix_set_ops[MD_POSTFIX_SETLIKE_OP_COUNT];
NodeFlags postfix_set_flags[MD_POSTFIX_SETLIKE_OP_COUNT]; MD_NodeFlags postfix_set_flags[MD_POSTFIX_SETLIKE_OP_COUNT];
} accel; } accel;
#undef MD_POSTFIX_SETLIKE_OP_COUNT #undef MD_POSTFIX_SETLIKE_OP_COUNT
@@ -1061,7 +1061,7 @@ MD_FUNCTION MD_String8 MD_CStyleHexStringFromU64(MD_Arena *arena, MD_u64 x, MD_b
//~ Enum/Flag Strings //~ Enum/Flag Strings
MD_FUNCTION MD_String8 MD_StringFromNodeKind(NodeKind kind); MD_FUNCTION MD_String8 MD_StringFromNodeKind(NodeKind kind);
MD_FUNCTION MD_String8List MD_StringListFromNodeFlags(MD_Arena *arena, NodeFlags flags); MD_FUNCTION MD_String8List MD_StringListFromNodeFlags(MD_Arena *arena, MD_NodeFlags flags);
//~ Map Table Data Structure //~ Map Table Data Structure
@@ -1129,7 +1129,7 @@ MD_FUNCTION Node *MD_PushNewReference(MD_Arena *arena, Node *list, Node *target)
MD_FUNCTION Node * MD_FirstNodeWithString(Node *first, MD_String8 string, MD_MatchFlags flags); MD_FUNCTION Node * MD_FirstNodeWithString(Node *first, MD_String8 string, MD_MatchFlags flags);
MD_FUNCTION Node * MD_NodeAtIndex(Node *first, int n); MD_FUNCTION Node * MD_NodeAtIndex(Node *first, int n);
MD_FUNCTION Node * MD_FirstNodeWithFlags(Node *first, NodeFlags flags); MD_FUNCTION Node * MD_FirstNodeWithFlags(Node *first, MD_NodeFlags flags);
MD_FUNCTION int MD_IndexFromNode(Node *node); MD_FUNCTION int MD_IndexFromNode(Node *node);
MD_FUNCTION Node * MD_RootFromNode(Node *node); MD_FUNCTION Node * MD_RootFromNode(Node *node);
MD_FUNCTION Node * MD_ChildFromString(Node *node, MD_String8 child_string, MD_MatchFlags flags); MD_FUNCTION Node * MD_ChildFromString(Node *node, MD_String8 child_string, MD_MatchFlags flags);
+6 -6
View File
@@ -639,7 +639,7 @@ struct MD_ParseWorkNode
MD_Node* parent; MD_Node* parent;
MD_Node* first_gathered_tag; MD_Node* first_gathered_tag;
MD_Node* last_gathered_tag; MD_Node* last_gathered_tag;
NodeFlags gathered_node_flags; MD_NodeFlags gathered_node_flags;
MD_S32 counted_newlines; MD_S32 counted_newlines;
}; };
@@ -734,7 +734,7 @@ md_parse_from_text_tokens__ainfo(MD_AllocatorInfo ainfo, MD_String8 filename, MD
MD_B32 reserved_token = token->flags & MD_TokenFlag_Reserved; MD_B32 reserved_token = token->flags & MD_TokenFlag_Reserved;
NodeFlags separator = ( MD_NodeFlags separator = (
MD_NodeFlag_IsBeforeComma *!! md_str8_match(md_token_string, md_str8_lit(","), 0) | MD_NodeFlag_IsBeforeComma *!! md_str8_match(md_token_string, md_str8_lit(","), 0) |
MD_NodeFlag_IsBeforeSemicolon *!! md_str8_match(md_token_string, md_str8_lit(";"), 0) MD_NodeFlag_IsBeforeSemicolon *!! md_str8_match(md_token_string, md_str8_lit(";"), 0)
); );
@@ -819,7 +819,7 @@ md_parse_from_text_tokens__ainfo(MD_AllocatorInfo ainfo, MD_String8 filename, MD
{ {
MD_String8 md_node_string_raw = md_token_string; MD_String8 md_node_string_raw = md_token_string;
MD_String8 md_node_string = content_string_from_token_flags_str8(token->flags, md_node_string_raw); MD_String8 md_node_string = content_string_from_token_flags_str8(token->flags, md_node_string_raw);
NodeFlags flags = md_node_flags_from_token_flags(token->flags)|work_top->gathered_node_flags; MD_NodeFlags flags = md_node_flags_from_token_flags(token->flags)|work_top->gathered_node_flags;
work_top->gathered_node_flags = 0; work_top->gathered_node_flags = 0;
@@ -837,7 +837,7 @@ md_parse_from_text_tokens__ainfo(MD_AllocatorInfo ainfo, MD_String8 filename, MD
goto end_consume; goto end_consume;
} }
NodeFlags opening_delimiter = ( MD_NodeFlags opening_delimiter = (
MD_NodeFlag_HasBraceLeft *!! md_str8_match(md_token_string, md_str8_lit("{"), 0) | MD_NodeFlag_HasBraceLeft *!! md_str8_match(md_token_string, md_str8_lit("{"), 0) |
MD_NodeFlag_HasBracketLeft *!! md_str8_match(md_token_string, md_str8_lit("["), 0) | MD_NodeFlag_HasBracketLeft *!! md_str8_match(md_token_string, md_str8_lit("["), 0) |
MD_NodeFlag_HasParenLeft *!! md_str8_match(md_token_string, md_str8_lit("("), 0) MD_NodeFlag_HasParenLeft *!! md_str8_match(md_token_string, md_str8_lit("("), 0)
@@ -847,7 +847,7 @@ md_parse_from_text_tokens__ainfo(MD_AllocatorInfo ainfo, MD_String8 filename, MD
//- rjf: [main] {s, [s, and (s -> create new main //- rjf: [main] {s, [s, and (s -> create new main
if (work_top->kind == ParseWorkKind_Main && found_opening_delimiter) if (work_top->kind == ParseWorkKind_Main && found_opening_delimiter)
{ {
NodeFlags MD_NodeFlags
flags = md_node_flags_from_token_flags(token->flags) | work_top->gathered_node_flags; flags = md_node_flags_from_token_flags(token->flags) | work_top->gathered_node_flags;
flags |= opening_delimiter; flags |= opening_delimiter;
@@ -923,7 +923,7 @@ md_parse_from_text_tokens__ainfo(MD_AllocatorInfo ainfo, MD_String8 filename, MD
goto end_consume; goto end_consume;
} }
NodeFlags closing_delimiter = ( MD_NodeFlags closing_delimiter = (
MD_NodeFlag_HasBraceRight *!! md_str8_match(md_token_string, md_str8_lit("}"), 0) | MD_NodeFlag_HasBraceRight *!! md_str8_match(md_token_string, md_str8_lit("}"), 0) |
MD_NodeFlag_HasBracketRight *!! md_str8_match(md_token_string, md_str8_lit("]"), 0) | MD_NodeFlag_HasBracketRight *!! md_str8_match(md_token_string, md_str8_lit("]"), 0) |
MD_NodeFlag_HasParenRight *!! md_str8_match(md_token_string, md_str8_lit(")"), 0) MD_NodeFlag_HasParenRight *!! md_str8_match(md_token_string, md_str8_lit(")"), 0)
+19 -19
View File
@@ -128,7 +128,7 @@ enum MD_NodeKind
MD_NodeKind_COUNT MD_NodeKind_COUNT
}; };
typedef MD_U32 NodeFlags; typedef MD_U32 MD_NodeFlags;
enum enum
{ {
MD_NodeFlag_MaskSetDelimiters = (0x3F << 0), MD_NodeFlag_MaskSetDelimiters = (0x3F << 0),
@@ -175,7 +175,7 @@ struct MD_Node
// rjf: node info // rjf: node info
MD_NodeKind kind; MD_NodeKind kind;
NodeFlags flags; MD_NodeFlags flags;
MD_String8 string; MD_String8 string;
MD_String8 raw_string; MD_String8 raw_string;
@@ -316,8 +316,8 @@ MD_API MD_String8 content_string_from_token_flags_str8(MD_TokenFlags flags, MD_S
MD_String8List md_string_list_from_token_flags__arena(MD_Arena* arena, MD_TokenFlags flags); MD_String8List md_string_list_from_token_flags__arena(MD_Arena* arena, MD_TokenFlags flags);
MD_API MD_String8List md_string_list_from_token_flags__ainfo(MD_AllocatorInfo ainfo, MD_TokenFlags flags); MD_API MD_String8List md_string_list_from_token_flags__ainfo(MD_AllocatorInfo ainfo, MD_TokenFlags flags);
MD_API void md_token_chunk_list_push__arena (MD_Arena* arena, MD_TokenChunkList* list, MD_U64 cap, MD_Token token); MD_API void md_token_chunk_list_push__arena (MD_Arena* arena, MD_TokenChunkList* list, MD_U64 cap, MD_Token token);
MD_API void md_token_chunk_list_push__ainfo (MD_AllocatorInfo ainfo, MD_TokenChunkList* list, MD_U64 cap, MD_Token token); MD_API void md_token_chunk_list_push__ainfo (MD_AllocatorInfo ainfo, MD_TokenChunkList* list, MD_U64 cap, MD_Token token);
MD_API MD_TokenArray md_token_array_from_chunk_list__arena (MD_Arena* arena, MD_TokenChunkList* chunks); MD_API MD_TokenArray md_token_array_from_chunk_list__arena (MD_Arena* arena, MD_TokenChunkList* chunks);
MD_API MD_TokenArray md_token_array_from_chunk_list__ainfo (MD_AllocatorInfo ainfo, MD_TokenChunkList* chunks); MD_API MD_TokenArray md_token_array_from_chunk_list__ainfo (MD_AllocatorInfo ainfo, MD_TokenChunkList* chunks);
@@ -347,10 +347,10 @@ md_token_match(MD_Token a, MD_Token b) {
//- rjf: flag conversions //- rjf: flag conversions
inline NodeFlags inline MD_NodeFlags
md_node_flags_from_token_flags(MD_TokenFlags flags) md_node_flags_from_token_flags(MD_TokenFlags flags)
{ {
NodeFlags result = 0; MD_NodeFlags result = 0;
result |= MD_NodeFlag_Identifier *!! (flags & MD_TokenFlag_Identifier ); result |= MD_NodeFlag_Identifier *!! (flags & MD_TokenFlag_Identifier );
result |= MD_NodeFlag_Numeric *!! (flags & MD_TokenFlag_Numeric ); result |= MD_NodeFlag_Numeric *!! (flags & MD_TokenFlag_Numeric );
result |= MD_NodeFlag_StringLiteral *!! (flags & MD_TokenFlag_StringLiteral ); result |= MD_NodeFlag_StringLiteral *!! (flags & MD_TokenFlag_StringLiteral );
@@ -377,21 +377,21 @@ MD_API MD_NodeRec md_node_rec_depth_first(MD_Node* node, MD_Node* subtree_root,
//- rjf: tree building //- rjf: tree building
MD_Node* md_push_node__arena(MD_Arena* arena, MD_NodeKind kind, NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset); MD_Node* md_push_node__arena(MD_Arena* arena, MD_NodeKind kind, MD_NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset);
MD_Node* md_push_node__ainfo(MD_AllocatorInfo ainfo, MD_NodeKind kind, NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset); MD_Node* md_push_node__ainfo(MD_AllocatorInfo ainfo, MD_NodeKind kind, MD_NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset);
#define md_push_node(allocator, kind, flags, string, raw_string, src_offset) _Generic(allocator, MD_Arena*: md_push_node__arena, MD_AllocatorInfo: md_push_node__ainfo, default: md_assert_generic_sel_fail) md_generic_call(allocator, kind, flags, string, raw_string, src_offset) #define md_push_node(allocator, kind, flags, string, raw_string, src_offset) _Generic(allocator, MD_Arena*: md_push_node__arena, MD_AllocatorInfo: md_push_node__ainfo, default: md_assert_generic_sel_fail) md_generic_call(allocator, kind, flags, string, raw_string, src_offset)
void md_node_insert_tag (MD_Node* parent, MD_Node* prev_child, MD_Node* node); void md_node_insert_tag (MD_Node* parent, MD_Node* prev_child, MD_Node* node);
void md_node_insert_child(MD_Node* parent, MD_Node* prev_child, MD_Node* node); void md_node_insert_child(MD_Node* parent, MD_Node* prev_child, MD_Node* node);
void md_node_push_child (MD_Node* parent, MD_Node* node); void md_node_push_child (MD_Node* parent, MD_Node* node);
void md_node_push_tag (MD_Node* parent, MD_Node* node); void md_node_push_tag (MD_Node* parent, MD_Node* node);
void md_unhook (MD_Node* node); void md_unhook (MD_Node* node);
inline MD_Node* md_push_node__arena(MD_Arena* arena, MD_NodeKind kind, NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset) { md_push_node__ainfo(md_arena_allocator(arena), kind, flags, string, raw_string, src_offset); } inline MD_Node* md_push_node__arena(MD_Arena* arena, MD_NodeKind kind, MD_NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset) { md_push_node__ainfo(md_arena_allocator(arena), kind, flags, string, raw_string, src_offset); }
inline MD_Node* inline MD_Node*
md_push_node__ainfo(MD_AllocatorInfo ainfo, MD_NodeKind kind, NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset) { md_push_node__ainfo(MD_AllocatorInfo ainfo, MD_NodeKind kind, MD_NodeFlags flags, MD_String8 string, MD_String8 raw_string, MD_U64 src_offset) {
MD_Node* node = md_alloc_array(ainfo, MD_Node, 1); MD_Node* node = md_alloc_array(ainfo, MD_Node, 1);
node->first = node->last = node->parent = node->next = node->prev = node->first_tag = node->last_tag = md_nil_node(); node->first = node->last = node->parent = node->next = node->prev = node->first_tag = node->last_tag = md_nil_node();
node->kind = kind; node->kind = kind;
@@ -432,7 +432,7 @@ md_node_push_tag(MD_Node* parent, MD_Node* node) {
MD_Node* md_node_from_chain_string(MD_Node* first, MD_Node* opl, MD_String8 string, MD_StringMatchFlags flags); MD_Node* md_node_from_chain_string(MD_Node* first, MD_Node* opl, MD_String8 string, MD_StringMatchFlags flags);
MD_Node* md_node_from_chain_index (MD_Node* first, MD_Node* opl, MD_U64 index); MD_Node* md_node_from_chain_index (MD_Node* first, MD_Node* opl, MD_U64 index);
MD_Node* md_node_from_chain_flags (MD_Node* first, MD_Node* opl, NodeFlags flags); MD_Node* md_node_from_chain_flags (MD_Node* first, MD_Node* opl, MD_NodeFlags flags);
MD_U64 md_index_from_node (MD_Node* node); MD_U64 md_index_from_node (MD_Node* node);
MD_Node* md_root_from_node (MD_Node* node); MD_Node* md_root_from_node (MD_Node* node);
MD_Node* md_child_from_string (MD_Node* node, MD_String8 child_string, MD_StringMatchFlags flags); MD_Node* md_child_from_string (MD_Node* node, MD_String8 child_string, MD_StringMatchFlags flags);
@@ -482,7 +482,7 @@ md_node_from_chain_index(MD_Node* first, MD_Node* opl, MD_U64 index) {
} }
inline MD_Node* inline MD_Node*
md_node_from_chain_flags(MD_Node* first, MD_Node* opl, NodeFlags flags) { md_node_from_chain_flags(MD_Node* first, MD_Node* opl, MD_NodeFlags flags) {
MD_Node* result = md_nil_node(); MD_Node* result = md_nil_node();
for (MD_Node* n = first; !md_node_is_nil(n) && n != opl; n = n->next) for (MD_Node* n = first; !md_node_is_nil(n) && n != opl; n = n->next)
{ {
@@ -514,8 +514,8 @@ md_root_from_node(MD_Node* node) {
inline MD_Node* md_child_from_string(MD_Node* node, MD_String8 child_string, MD_StringMatchFlags flags) { return md_node_from_chain_string(node->first, md_nil_node(), child_string, flags); } inline MD_Node* md_child_from_string(MD_Node* node, MD_String8 child_string, MD_StringMatchFlags flags) { return md_node_from_chain_string(node->first, md_nil_node(), child_string, flags); }
inline MD_Node* md_tag_from_string (MD_Node* node, MD_String8 tag_string, MD_StringMatchFlags flags) { return md_node_from_chain_string(node->first_tag, md_nil_node(), tag_string, flags); } inline MD_Node* md_tag_from_string (MD_Node* node, MD_String8 tag_string, MD_StringMatchFlags flags) { return md_node_from_chain_string(node->first_tag, md_nil_node(), tag_string, flags); }
inline MD_Node* md_child_from_index (MD_Node* node, MD_U64 index) { return md_node_from_chain_index (node->first, md_nil_node(), index); } inline MD_Node* md_child_from_index (MD_Node* node, MD_U64 index) { return md_node_from_chain_index (node->first, md_nil_node(), index); }
inline MD_Node* md_tag_from_index (MD_Node* node, MD_U64 index) { return md_node_from_chain_index (node->first_tag, md_nil_node(), index); } inline MD_Node* md_tag_from_index (MD_Node* node, MD_U64 index) { return md_node_from_chain_index (node->first_tag, md_nil_node(), index); }
inline MD_Node* inline MD_Node*
md_tag_arg_from_index(MD_Node* node, MD_String8 tag_string, MD_StringMatchFlags flags, MD_U64 index) { md_tag_arg_from_index(MD_Node* node, MD_String8 tag_string, MD_StringMatchFlags flags, MD_U64 index) {
+42 -41
View File
@@ -63,9 +63,9 @@ end_test(void)
#define test(name) for(int _i_ = (begin_test(name), 0); !_i_; _i_ += 1, end_test()) #define test(name) for(int _i_ = (begin_test(name), 0); !_i_; _i_ += 1, end_test())
static MD_Node* static MD_Node*
make_test_node(MD_NodeKind kind, MD_String8 string) make_test_node(MD_NodeKind kind, MD_NodeFlags flags, MD_String8 string)
{ {
return MD_MakeNode(arena, kind, string, string, 0); return md_push_node(arena, kind, flags, string, string, 0);
} }
static MD_B32 static MD_B32
@@ -79,7 +79,7 @@ match_parsed_with_node(MD_Arena* arena, MD_String8 string, MD_Node* tree)
static MD_B32 static MD_B32
token_match(MD_String8 text, MD_Token token, MD_String8 string, MD_TokenFlags flags) token_match(MD_String8 text, MD_Token token, MD_String8 string, MD_TokenFlags flags)
{ {
return md_str8_match(string, md_str8_substr(text, token.range), 0) &&& token.flags == flags return md_str8_match(string, md_str8_substr(text, token.range), 0) &&& token.flags == flags;
// return MD_S8Match(string, token.string, 0) && token.kind == kind; // return MD_S8Match(string, token.string, 0) && token.kind == kind;
} }
@@ -113,37 +113,37 @@ int main(void)
test("Empty Sets") test("Empty Sets")
{ {
test_result(matched_parsed_with_node(md_str8_lit("{}"), make_test_node(MD_NodeKind_Main, md_str8_lit("")))); test_result(matched_parsed_with_node(md_str8_lit("{}"), make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""))));
test_result(matched_parsed_with_node(md_str8_lit("()"), make_test_node(MD_NodeKind_Main, md_str8_lit("")))); test_result(matched_parsed_with_node(md_str8_lit("()"), make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""))));
test_result(matched_parsed_with_node(md_str8_lit("[]"), make_test_node(MD_NodeKind_Main, md_str8_lit("")))); test_result(matched_parsed_with_node(md_str8_lit("[]"), make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""))));
test_result(matched_parsed_with_node(md_str8_lit("[)"), make_test_node(MD_NodeKind_Main, md_str8_lit("")))); test_result(matched_parsed_with_node(md_str8_lit("[)"), make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""))));
test_result(matched_parsed_with_node(md_str8_lit("(]"), make_test_node(MD_NodeKind_Main, md_str8_lit("")))); test_result(matched_parsed_with_node(md_str8_lit("(]"), make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""))));
} }
test("Simple Unnamed Sets") test("Simple Unnamed Sets")
{ {
{ {
MD_String8 string = md_str8_lit("{a, b, c}"); MD_String8 string = md_str8_lit("{a, b, c}");
MD_Node* tree = make_test_node(MD_NodeKind_Main, md_str8_lit("")); MD_Node* tree = make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("a"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("a")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("b"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("b")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("c"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("c")));
test_result(matched_parsed_with_node(string, tree)); test_result(matched_parsed_with_node(string, tree));
} }
{ {
MD_String8 string = md_str8_lit("(1 2 3 4 5)"); MD_String8 string = md_str8_lit("(1 2 3 4 5)");
MD_Node *tree = make_test_node(MD_NodeKind_Main, md_str8_lit("")); MD_Node* tree = make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("1"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("1")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("2"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("2")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("3"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("3")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("4"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("4")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("5"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("5")));
test_result(matched_parsed_with_node(string, tree)); test_result(matched_parsed_with_node(string, tree));
} }
{ {
MD_String8 string = md_str8_lit("{a}"); MD_String8 string = md_str8_lit("{a}");
MD_Node* tree = make_test_node(MD_NodeKind_Main, md_str8_lit("")); MD_Node* tree = make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("a"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("a")));
test_result(matched_parsed_with_node(string, tree)); test_result(matched_parsed_with_node(string, tree));
} }
} }
@@ -151,10 +151,10 @@ int main(void)
test("Simple Named Sets") test("Simple Named Sets")
{ {
MD_String8 string = md_str8_lit("simple_set: {a, b, c}"); MD_String8 string = md_str8_lit("simple_set: {a, b, c}");
MD_Node* tree = make_test_node(MD_NodeKind_Main, md_str8_lit("simple_set")); MD_Node* tree = make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("simple_set"));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("a"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("a")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("b"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("b")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("c"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("c")));
test_result(matched_parsed_with_node(string, tree)); test_result(matched_parsed_with_node(string, tree));
} }
@@ -162,13 +162,13 @@ int main(void)
{ {
{ {
MD_String8 string = md_str8_lit("{a b:{1 2 3} c}"); MD_String8 string = md_str8_lit("{a b:{1 2 3} c}");
MD_Node* tree = make_test_node(MD_NodeKind_Main, md_str8_lit("")); MD_Node* tree = make_test_node(MD_NodeKind_Main, 0, md_str8_lit(""));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("a"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("a")));
{ {
MD_Node* sub = make_test_node(MD_NodeKind_Main, md_str8_lit("b")); MD_Node* sub = make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("b"));
md_node_push_child(sub, make_test_node(MD_NodeKind_Main, md_str8_lit("1"))); md_node_push_child(sub, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("1")));
md_node_push_child(sub, make_test_node(MD_NodeKind_Main, md_str8_lit("2"))); md_node_push_child(sub, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("2")));
md_node_push_child(sub, make_test_node(MD_NodeKind_Main, md_str8_lit("3"))); md_node_push_child(sub, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("3")));
md_node_push_child(tree, sub); md_node_push_child(tree, sub);
} }
MD_PushChild(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("c"))); MD_PushChild(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("c")));
@@ -177,30 +177,31 @@ int main(void)
{ {
MD_String8 string = md_str8_lit("foo: { (size: u64) -> *void }"); MD_String8 string = md_str8_lit("foo: { (size: u64) -> *void }");
MD_Node* tree = make_test_node(MD_NodeKind_Main, md_str8_lit("foo")); MD_Node* tree = make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("foo"));
MD_Node* params = make_test_node(MD_NodeKind_Main, md_str8_lit("")); MD_Node* params = make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit(""));
MD_Node* size = make_test_node(MD_NodeKind_Main, md_str8_lit("size")); MD_Node* size = make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("size"));
md_node_push_child(size, make_test_node(MD_NodeKind_Main, md_str8_lit("u64"))); md_node_push_child(size, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier md_str8_lit("u64")));
md_node_push_child(params, size); md_node_push_child(params, size);
md_node_push_child(tree, params); md_node_push_child(tree, params);
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("->"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("->")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("*"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("*")));
md_node_push_child(tree, make_test_node(MD_NodeKind_Main, md_str8_lit("void"))); md_node_push_child(tree, make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("void")));
test_result(matched_parsed_with_node(string, tree)); test_result(matched_parsed_with_node(string, tree));
} }
} }
test("Non-Sets") test("Non-Sets")
{ {
test_result(matched_parsed_with_node(md_str8_lit("foo"), make_test_node(MD_NodeKind_Main, md_str8_lit("foo")))); test_result(matched_parsed_with_node(md_str8_lit("foo"), make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("foo"))));
test_result(matched_parsed_with_node(md_str8_lit("123"), make_test_node(MD_NodeKind_Main, md_str8_lit("123")))); test_result(matched_parsed_with_node(md_str8_lit("123"), make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("123"))));
test_result(matched_parsed_with_node(md_str8_lit("+"), make_test_node(MD_NodeKind_Main, md_str8_lit("+")))); test_result(matched_parsed_with_node(md_str8_lit("+"), make_test_node(MD_NodeKind_Main, MD_NodeFlag_Identifier, md_str8_lit("+"))));
} }
test("Set Border Flags") test("Set Border Flags")
{ {
{ {
MD_ParseResult parse = MD_ParseOneNode(arena, md_str8_lit("(0, 100)"), 0); MD_TokenizeResult lexed = md_token_array_from_chunk_list()
MD_ParseResult parse = md_parse MD_ParseOneNode(arena, md_str8_lit("(0, 100)"), 0);
test_result(parse.root->flags & MD_NodeFlag_HasParenLeft && test_result(parse.root->flags & MD_NodeFlag_HasParenLeft &&
parse.root->flags & MD_NodeFlag_HasParenRight); parse.root->flags & MD_NodeFlag_HasParenRight);
} }