summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorCarlos Maniero <carlos@maniero.me>2023-05-10 16:07:39 -0300
committerCarlos Maniero <carlos@maniero.me>2023-05-10 17:35:03 -0300
commit75639fbf01bd6ae1212521b6cf822025eb8b598d (patch)
tree49709154c437cfbc01568f1e0c9abc8574fd3a54 /src/main.c
parent2cf0bcb409f3a1fd298b664103d57c945c6349f5 (diff)
namespaces: Add a namespace structure that represents a file
We have been always parsing a single function. Since we want to have multiple functions in a near future, this patch introduces an namespace that represents an entire file. To ensure a function is defined inside a namespace, a helper function was created. Today our ast_node structure is highly exposed, and this is something that Johnny and I have been discussed. So then, this is a first step to try to protected the code generation from our ast tree. Signed-off-by: Carlos Maniero <carlos@maniero.me>
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/main.c b/src/main.c
index 780499c..ca6ed9b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -27,11 +27,11 @@
#include "string_view.h"
static void
-generate_gas_x86_64_linux(ast_node_t *func)
+generate_gas_x86_64_linux(ast_node_t *ns)
{
gas_assembly_generator_t gen;
gas_assembly_generator_init(&gen, stdout);
- gas_assembly_generator_compile_linux_main(&gen, func);
+ gas_assembly_generator_compile_linux_main(&gen, ns);
}
static void
@@ -89,20 +89,20 @@ main(int argc, char **argv)
parser_t parser;
parser_init(&parser, &lexer, scope);
- ast_node_t *func = parser_parse_function_declaration(&parser);
+ ast_node_t *ns = parser_parse_ns(&parser);
- if (func == NULL) {
+ if (ns == NULL) {
parser_print_errors(&parser);
return EXIT_FAILURE;
}
if (should_dump_ast) {
- pretty_print_ast(func);
+ pretty_print_ast(ns);
} else {
- generate_gas_x86_64_linux(func);
+ generate_gas_x86_64_linux(ns);
}
scope_destroy(scope);
- ast_node_destroy(func);
+ ast_node_destroy(ns);
return EXIT_SUCCESS;
}