mirror of
https://github.com/Ed94/metadesk.git
synced 2026-08-01 20:28:13 +00:00
rename samples to examples; delete dead build scripts
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
@struct foo : {
|
||||
x : ([MAX_PATH]char),
|
||||
}
|
||||
|
||||
@struct @test_tag bar : {
|
||||
y : float,
|
||||
z: i32,
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
@sets a_set : {
|
||||
named_set : {1, 3, 7},
|
||||
{not, named, set},
|
||||
@tag_with_params(p1, p2, p3) { e1, e2, e3 },
|
||||
@tag_with_params(p1, p2, p3) @tag2_with_params(p, pp, ppp) { e1, e2, e3 },
|
||||
}
|
||||
|
||||
@empty_set empty : {
|
||||
}
|
||||
|
||||
@tagged_unnamed_set {
|
||||
a_label: {unnamed_set_element}
|
||||
}
|
||||
|
||||
@showcase_mixed_set_scoping {
|
||||
@symbol_label
|
||||
+: (1 2 3],
|
||||
@symbol_label
|
||||
*: [x y z),
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, Identifier,
|
||||
String: foo,
|
||||
Whole String: foo,
|
||||
Tag: @struct
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 1100000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasParenLeft, HasParenRight, IsBeforeComma, Identifier,
|
||||
String: x,
|
||||
Whole String: x,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0011000000000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBracketLeft, HasBracketRight,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: MAX_PATH,
|
||||
Whole String: MAX_PATH,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: char,
|
||||
Whole String: char,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, Identifier,
|
||||
String: bar,
|
||||
Whole String: bar,
|
||||
Tag: @struct
|
||||
Tag: @test_tag
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: y,
|
||||
Whole String: y,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: float,
|
||||
Whole String: float,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: z,
|
||||
Whole String: z,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: i32,
|
||||
Whole String: i32,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,282 @@
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, Identifier,
|
||||
String: a_set,
|
||||
Whole String: a_set,
|
||||
Tag: @sets
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, IsBeforeComma, Identifier,
|
||||
String: named_set,
|
||||
Whole String: named_set,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000010000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Numeric,
|
||||
String: 1,
|
||||
Whole String: 1,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000010000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Numeric,
|
||||
String: 3,
|
||||
Whole String: 3,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000010000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Numeric,
|
||||
String: 7,
|
||||
Whole String: 7,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110011000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, IsBeforeComma, IsAfterComma,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Identifier,
|
||||
String: not,
|
||||
Whole String: not,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Identifier,
|
||||
String: named,
|
||||
Whole String: named,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Identifier,
|
||||
String: set,
|
||||
Whole String: set,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110011000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, IsBeforeComma, IsAfterComma,
|
||||
Tag: @tag_with_params
|
||||
Tag Children{
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Identifier,
|
||||
String: p1,
|
||||
Whole String: p1,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Identifier,
|
||||
String: p2,
|
||||
Whole String: p2,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Identifier,
|
||||
String: p3,
|
||||
Whole String: p3,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Identifier,
|
||||
String: e1,
|
||||
Whole String: e1,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Identifier,
|
||||
String: e2,
|
||||
Whole String: e2,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Identifier,
|
||||
String: e3,
|
||||
Whole String: e3,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110011000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, IsBeforeComma, IsAfterComma,
|
||||
Tag: @tag_with_params
|
||||
Tag Children{
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Identifier,
|
||||
String: p1,
|
||||
Whole String: p1,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Identifier,
|
||||
String: p2,
|
||||
Whole String: p2,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Identifier,
|
||||
String: p3,
|
||||
Whole String: p3,
|
||||
}
|
||||
}
|
||||
Tag: @tag2_with_params
|
||||
Tag Children{
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Identifier,
|
||||
String: p,
|
||||
Whole String: p,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Identifier,
|
||||
String: pp,
|
||||
Whole String: pp,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Identifier,
|
||||
String: ppp,
|
||||
Whole String: ppp,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000010000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, Identifier,
|
||||
String: e1,
|
||||
Whole String: e1,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000011000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsBeforeComma, IsAfterComma, Identifier,
|
||||
String: e2,
|
||||
Whole String: e2,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000001000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: IsAfterComma, Identifier,
|
||||
String: e3,
|
||||
Whole String: e3,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, Identifier,
|
||||
String: empty,
|
||||
Whole String: empty,
|
||||
Tag: @empty_set
|
||||
}
|
||||
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight,
|
||||
Tag: @tagged_unnamed_set
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight, Identifier,
|
||||
String: a_label,
|
||||
Whole String: a_label,
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: unnamed_set_element,
|
||||
Whole String: unnamed_set_element,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000110000000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasBraceLeft, HasBraceRight,
|
||||
Tag: @showcase_mixed_set_scoping
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 1001000010000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasParenLeft, HasBracketRight, IsBeforeComma,
|
||||
String: +,
|
||||
Whole String: +,
|
||||
Tag: @symbol_label
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000010000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Numeric,
|
||||
String: 1,
|
||||
Whole String: 1,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000010000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Numeric,
|
||||
String: 2,
|
||||
Whole String: 2,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000010000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Numeric,
|
||||
String: 3,
|
||||
Whole String: 3,
|
||||
}
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0110000011000000000000000000000000000000000000000000000000000000,
|
||||
Flag Names: HasParenRight, HasBracketLeft, IsBeforeComma, IsAfterComma,
|
||||
String: *,
|
||||
Whole String: *,
|
||||
Tag: @symbol_label
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: x,
|
||||
Whole String: x,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: y,
|
||||
Whole String: y,
|
||||
}
|
||||
Node {
|
||||
Kind: Main,
|
||||
Flags: 0000000000000001000000000000000000000000000000000000000000000000,
|
||||
Flag Names: Identifier,
|
||||
String: z,
|
||||
Whole String: z,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
// Sample code to print out the data from MD_ParseWholeFile
|
||||
#include "md.h"
|
||||
#include "md.c"
|
||||
|
||||
static MD_Arena *arena = 0;
|
||||
|
||||
#define INDENT_SPACES 2
|
||||
static void Print(FILE* file, int indent_count, char* fmt, ...) {
|
||||
for(int i = 0; i < indent_count*INDENT_SPACES; i += 1)
|
||||
{
|
||||
fprintf(file, " ");
|
||||
}
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vfprintf(file, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
static void PrintNode(MD_Node* node, FILE* file, int indent_count) {
|
||||
Print(file, indent_count, "Node {\n");
|
||||
Print(file, indent_count+1, "Kind: %.*s,\n", MD_S8VArg(MD_StringFromNodeKind(node->kind)));
|
||||
|
||||
int flags_bits = sizeof(node->flags)*8;
|
||||
char binary_flags[sizeof(node->flags)*8+1];
|
||||
binary_flags[flags_bits] = '\0';
|
||||
int flag_index = 0;
|
||||
MD_NodeFlags flags = node->flags;
|
||||
for (int i = 0; i < flags_bits; i++) {
|
||||
binary_flags[i] = (flags&1) ? '1' : '0';
|
||||
flag_index++;
|
||||
flags >>= 1;
|
||||
}
|
||||
|
||||
Print(file, indent_count+1, "Flags: %s,\n", binary_flags);
|
||||
Print(file, indent_count+1, "Flag Names: ", binary_flags);
|
||||
MD_String8List flags_list = MD_StringListFromNodeFlags(arena, node->flags);
|
||||
|
||||
MD_StringJoin join = MD_ZERO_STRUCT;
|
||||
join.mid = MD_S8CString(", ");
|
||||
|
||||
MD_String8 flag_names = MD_S8ListJoin(arena, flags_list, &join);
|
||||
fprintf(file, "%.*s,\n", MD_S8VArg(flag_names));
|
||||
|
||||
if(node->string.size > 0) Print(file, indent_count+1, "String: %.*s,\n", MD_S8VArg(node->string));
|
||||
if(node->raw_string.size > 0) Print(file, indent_count+1, "Whole String: %.*s,\n", MD_S8VArg(node->raw_string));
|
||||
if (node->first_tag->kind != MD_NodeKind_Nil) {
|
||||
for (MD_EachNode(tag, node->first_tag)) {
|
||||
Print(file, indent_count+1, "Tag: @%.*s\n", MD_S8VArg(tag->string));
|
||||
if (tag->first_child->kind != MD_NodeKind_Nil) {
|
||||
Print(file, indent_count+2, "Tag Children{\n");
|
||||
for (MD_EachNode(arg, tag->first_child)) {
|
||||
PrintNode(arg, file, indent_count+3);
|
||||
}
|
||||
Print(file, indent_count+2, "}\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(MD_EachNode(child, node->first_child)) {
|
||||
PrintNode(child, file, indent_count+1);
|
||||
}
|
||||
Print(file, indent_count, "}\n");
|
||||
}
|
||||
|
||||
int main(int argument_count, char **arguments)
|
||||
{
|
||||
arena = MD_ArenaAlloc(1ull << 40);
|
||||
|
||||
// NOTE(pmh): Parse all the files passed in via command line.
|
||||
MD_Node *list = MD_MakeList(arena);
|
||||
for(int i = 1; i < argument_count; i += 1)
|
||||
{
|
||||
MD_Node *root = MD_ParseWholeFile(arena, MD_S8CString(arguments[i])).node;
|
||||
MD_PushNewReference(arena, list, root);
|
||||
}
|
||||
|
||||
for(MD_EachNode(ref, list->first_child))
|
||||
{
|
||||
MD_Node *root = MD_NodeFromReference(ref);
|
||||
MD_String8 code_filename = MD_PathChopLastPeriod(MD_PathSkipLastSlash(root->string));
|
||||
MD_String8 info_filename = MD_S8Fmt(arena, "parsed_%.*s.txt", MD_S8VArg(code_filename));
|
||||
printf("Parse Input -> Output: %.*s -> %.*s\n", MD_S8VArg(code_filename), MD_S8VArg(info_filename));
|
||||
|
||||
FILE* file = fopen((char *)info_filename.str, "wb");
|
||||
for(MD_EachNode(node, root->first_child))
|
||||
{
|
||||
PrintNode(node, file, 0);
|
||||
fprintf(file, "\n");
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user