aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild/metacbin32816 -> 28576 bytes
-rw-r--r--examples/table.c (renamed from source/table.c)12
-rwxr-xr-xexamples/table.metabin0 -> 15488 bytes
-rw-r--r--examples/table.meta.c (renamed from source/table.meta.c)12
-rw-r--r--source/expected.c7
-rw-r--r--source/meta.c16
-rwxr-xr-xsource/table.metabin21088 -> 0 bytes
7 files changed, 15 insertions, 32 deletions
diff --git a/build/metac b/build/metac
index cac4e03..790907c 100755
--- a/build/metac
+++ b/build/metac
Binary files differ
diff --git a/source/table.c b/examples/table.c
index d2ec1ad..63edb16 100644
--- a/source/table.c
+++ b/examples/table.c
@@ -3,25 +3,25 @@
@table(name, str) MyEnumTable
{
{ A "A" }
- { B "B" }
+ { B "Beau Gosse" }
{ C "C" }
}
typedef enum {
@expand(MyEnumTable a)
- `MyEnum_$(a.name),`
-MyEnum_Count
+` MyEnum_$(a.name),`
+ MyEnum_Count
} MyEnum;
char *StringTable[MyEnum_Count] = {
-@expand(MyEnumTable a) `$(a.str),`
+@expand(MyEnumTable a)
+` $(a.str),`
};
-
int
main(int Argc, char *Args[])
{
- printf("%s\n", StringTable[MyEnum_B]);
+ printf("@: %s\n", StringTable[MyEnum_B]);
return 0;
}
diff --git a/examples/table.meta b/examples/table.meta
new file mode 100755
index 0000000..2976f54
--- /dev/null
+++ b/examples/table.meta
Binary files differ
diff --git a/source/table.meta.c b/examples/table.meta.c
index 4f38e0e..5534457 100644
--- a/source/table.meta.c
+++ b/examples/table.meta.c
@@ -3,19 +3,15 @@
typedef enum {
-MyEnum_A,
-MyEnum_B,
-MyEnum_C,
-MyEnum_Count
+ MyEnum_A, // "A" MyEnum_B, // "Beau Gosse" MyEnum_C, // "C" MyEnum_Count
} MyEnum;
char *StringTable[MyEnum_Count] = {
-"A",
-"B",
-"C",
+ "A",
+ "Beau Gosse",
+ "C",
};
-
int
main(int Argc, char *Args[])
{
diff --git a/source/expected.c b/source/expected.c
deleted file mode 100644
index 6db128a..0000000
--- a/source/expected.c
+++ /dev/null
@@ -1,7 +0,0 @@
-typedef enum {
- MyEnum_A,
- MyEnum_B,
- MyEnum_C,
- MyEnum_Count
-} MyEnum;
-
diff --git a/source/meta.c b/source/meta.c
index 1eb643d..9b7faff 100644
--- a/source/meta.c
+++ b/source/meta.c
@@ -180,12 +180,11 @@ main(int ArgC, char *Args[])
{
Filename = Args[1];
}
-#if 1
else
{
- Filename = "table.c";
+ fprintf(stderr, "Usage: %s [filename]\n", Args[0]);
+ return 1;
}
-#endif
// NOTE(luca): The memory is assumed to stay mapped until program exits, because we will use
// pointers into that memory.
@@ -239,7 +238,6 @@ main(int ArgC, char *Args[])
}
Assert(ExpressionTable);
- // TODO: not used yet
while (IsWhitespace(In[At]) && At < InSize) At++;
Assert(At < InSize);
ExpressionTableArgumentAt = At;
@@ -309,17 +307,13 @@ main(int ArgC, char *Args[])
memcpy(Out, Expansion.Memory, Expansion.Size);
Out += Expansion.Size;
}
- else if (In[At] == '`')
- {
- // ERROR: When the last character is '`' does not print.
- *Out++ = '\n';
- }
- else
+ else if (In[At] != '`')
{
*Out++ = In[At++];
}
}
+ *Out++ = '\n';
}
Assert(At < InSize);
@@ -486,7 +480,7 @@ main(int ArgC, char *Args[])
}
else
{
- // ERROR: What if the code contains a non meta-"@_expand" tag ???
+ *Out++ = '@';
*Out++ = In[At];
}
diff --git a/source/table.meta b/source/table.meta
deleted file mode 100755
index 63edbd2..0000000
--- a/source/table.meta
+++ /dev/null
Binary files differ