Parsing errors for unbalanced sets and text literals.

This commit is contained in:
Miguel Lechon
2021-03-10 18:32:29 +01:00
parent 35ef98a5fd
commit 701b77e118
16 changed files with 219 additions and 50 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ int main(int argument_count, char **arguments)
" f: ([4 + 5]S32),\n"
" g: ([FOO + BAR]I32),\n"
"}\n\n");
MD_Node *code = MD_ParseWholeString(MD_S8Lit("Generated Test Code"), example_code);
MD_Node *code = MD_ParseWholeString(MD_S8Lit("Generated Test Code"), example_code).node;
printf("Source Metadesk Code:\n");
printf("%.*s\n\n", MD_StringExpand(example_code));
+1 -1
View File
@@ -10,7 +10,7 @@ int main(int argument_count, char **arguments)
MD_Node *last = MD_NilNode();
for(int i = 1; i < argument_count; i += 1)
{
MD_Node *root = MD_ParseWholeFile(MD_S8CString(arguments[i]));
MD_Node *root = MD_ParseWholeFile(MD_S8CString(arguments[i])).node;
MD_PushSibling(&first, &last, MD_NilNode(), root);
}
+1 -1
View File
@@ -28,7 +28,7 @@ int main(int argument_count, char **arguments)
MD_Node *last = MD_NilNode();
for(int i = 1; i < argument_count; i += 1)
{
MD_Node *root = MD_ParseWholeFile(MD_S8CString(arguments[i]));
MD_Node *root = MD_ParseWholeFile(MD_S8CString(arguments[i])).node;
MD_PushSibling(&first, &last, MD_NilNode(), root);
}
+1 -1
View File
@@ -63,7 +63,7 @@ int main(int argument_count, char **arguments)
MD_Node *last = MD_NilNode();
for(int i = 1; i < argument_count; i += 1)
{
MD_Node *root = MD_ParseWholeFile(MD_S8CString(arguments[i]));
MD_Node *root = MD_ParseWholeFile(MD_S8CString(arguments[i])).node;
MD_PushSibling(&first, &last, MD_NilNode(), root);
}
@@ -51,7 +51,7 @@ int main(int argument_count, char **arguments)
SiteInfo site_info = {0};
{
printf("Parsing site metadata at \"%.*s\"...\n", MD_StringExpand(site_info_path));
MD_Node *site_info_file = MD_ParseWholeFile(site_info_path);
MD_Node *site_info_file = MD_ParseWholeFile(site_info_path).node;
site_info = ParseSiteInfo(site_info_file);
}
@@ -74,7 +74,7 @@ int main(int argument_count, char **arguments)
MD_String8 path = MD_PushStringF("%.*s/%.*s",
MD_StringExpand(folder),
MD_StringExpand(file_info.filename));
MD_PushSibling(&first_root, &last_root, MD_NilNode(), MD_ParseWholeFile(path));
MD_PushSibling(&first_root, &last_root, MD_NilNode(), MD_ParseWholeFile(path).node);
}
}
}
+1
View File
@@ -0,0 +1 @@
{
+1
View File
@@ -0,0 +1 @@
(
+1
View File
@@ -0,0 +1 @@
}
+1
View File
@@ -0,0 +1 @@
'
+25
View File
@@ -0,0 +1,25 @@
// Sample code to demonstrate syntax error detection and reporting
#include "md.h"
#include "md.c"
int main(int argument_count, char **arguments)
{
for(int i = 1; i < argument_count; i += 1)
{
MD_ParseResult parse = MD_ParseWholeFile(MD_S8CString(arguments[i]));
if(parse.first_error)
{
for(MD_Error *error = parse.first_error; error; error = error->next)
{
MD_OutputError(stderr, error);
}
}
else
{
printf("No error in file %s\n", arguments[i]);
}
}
return 0;
}