diff options
author | Johnny Richard <johnny@johnnyrichard.com> | 2023-04-26 00:40:44 +0200 |
---|---|---|
committer | Carlos Maniero <carlosmaniero@gmail.com> | 2023-04-25 23:19:13 -0300 |
commit | 127dae1c3b48c3a4dceddb9000309bfeaa8d0a01 (patch) | |
tree | 4d92b3a7b4c29f0ace3a5ff699e4789f60b0aa46 /src/gas_assembly_generator.c | |
parent | c1a1bd2320b4c1508c4ab20d23b7c193a94d8026 (diff) |
style: Use clang-format as formatter and linter tool
We want to keep the code style consistent, this first commit adds a
.clang-format in order to "document" our style code.
This patch also adds a target *linter* to Makefile which will complain
if we have any style issue on test and src dirs.
I have run the follow command to create the .clang-format file:
$ clang-format -style=mozilla -dump-config > .clang-format
And I also made some adjusts to .clang-format changing the following
properties:
PointerAlignment: Right
ColumnLimit: 120
Commands executed to fix the current styling:
$ find . -name *.h | xargs clang-format -i
$ find . -name *.c | xargs clang-format -i
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
Diffstat (limited to 'src/gas_assembly_generator.c')
-rw-r--r-- | src/gas_assembly_generator.c | 70 |
1 files changed, 36 insertions, 34 deletions
diff --git a/src/gas_assembly_generator.c b/src/gas_assembly_generator.c index 5572cb7..00897fd 100644 --- a/src/gas_assembly_generator.c +++ b/src/gas_assembly_generator.c @@ -1,40 +1,42 @@ /* -* Copyright (C) 2023 Johnny Richard -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2023 Johnny Richard + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ #include "gas_assembly_generator.h" #include <assert.h> #include <stdio.h> #include <stdlib.h> -static void gas_assembly_generator_visit_function(ast_visitor_t *visitor, ast_function_declaration_t *func); -static void gas_assembly_generator_visit_return_stmt(ast_visitor_t *visitor, ast_return_stmt_t *return_stmt); -static void gas_assembly_generator_visit_literal(ast_visitor_t *visitor, ast_literal_t *literal); -static void gas_assembly_generator_binary_operation(ast_visitor_t *visitor, ast_binary_operation_t *binary_operation); +static void +gas_assembly_generator_visit_function(ast_visitor_t *visitor, ast_function_declaration_t *func); +static void +gas_assembly_generator_visit_return_stmt(ast_visitor_t *visitor, ast_return_stmt_t *return_stmt); +static void +gas_assembly_generator_visit_literal(ast_visitor_t *visitor, ast_literal_t *literal); +static void +gas_assembly_generator_binary_operation(ast_visitor_t *visitor, ast_binary_operation_t *binary_operation); void gas_assembly_generator_init(gas_assembly_generator_t *gen, FILE *out) { assert(gen && out); - gen->super = (ast_visitor_t) { - .visit_function = &gas_assembly_generator_visit_function, - .visit_literal = &gas_assembly_generator_visit_literal, - .visit_return_stmt = &gas_assembly_generator_visit_return_stmt, - .visit_binary_operation = &gas_assembly_generator_binary_operation - }; + gen->super = (ast_visitor_t){ .visit_function = &gas_assembly_generator_visit_function, + .visit_literal = &gas_assembly_generator_visit_literal, + .visit_return_stmt = &gas_assembly_generator_visit_return_stmt, + .visit_binary_operation = &gas_assembly_generator_binary_operation }; gen->out = out; } @@ -48,13 +50,13 @@ gas_assembly_generator_visit_function(ast_visitor_t *visitor, ast_function_decla exit(EXIT_FAILURE); } - gas_assembly_generator_t *gen = (gas_assembly_generator_t *) visitor; + gas_assembly_generator_t *gen = (gas_assembly_generator_t *)visitor; - fprintf(gen->out,".global _start\n"); - fprintf(gen->out,".text\n"); - fprintf(gen->out,"_start:\n"); + fprintf(gen->out, ".global _start\n"); + fprintf(gen->out, ".text\n"); + fprintf(gen->out, "_start:\n"); - for (size_t i=0; i < func->body->size; i++) { + for (size_t i = 0; i < func->body->size; i++) { ast_visitor_visit(visitor, vector_at(func->body, i)); } } @@ -63,7 +65,7 @@ static void gas_assembly_generator_visit_return_stmt(ast_visitor_t *visitor, ast_return_stmt_t *return_stmt) { assert(visitor && return_stmt); - gas_assembly_generator_t *gen = (gas_assembly_generator_t *) visitor; + gas_assembly_generator_t *gen = (gas_assembly_generator_t *)visitor; ast_visitor_visit(visitor, return_stmt->argument); @@ -75,7 +77,7 @@ gas_assembly_generator_visit_return_stmt(ast_visitor_t *visitor, ast_return_stmt static void gas_assembly_generator_visit_literal(ast_visitor_t *visitor, ast_literal_t *literal) { - gas_assembly_generator_t *gen = (gas_assembly_generator_t *) visitor; + gas_assembly_generator_t *gen = (gas_assembly_generator_t *)visitor; switch (literal->kind) { case AST_LITERAL_INTEGER: fprintf(gen->out, " mov $%d, %%rax\n", literal->value.integer); @@ -88,7 +90,7 @@ gas_assembly_generator_visit_literal(ast_visitor_t *visitor, ast_literal_t *lite static void gas_assembly_generator_binary_operation(ast_visitor_t *visitor, ast_binary_operation_t *binary_operation) { - gas_assembly_generator_t *gen = (gas_assembly_generator_t *) visitor; + gas_assembly_generator_t *gen = (gas_assembly_generator_t *)visitor; ast_visitor_visit(visitor, binary_operation->right); @@ -119,6 +121,6 @@ gas_assembly_generator_binary_operation(ast_visitor_t *visitor, ast_binary_opera return; } - fprintf(stderr, "no strategy defined for: "SVFMT"\n", SVARG(&binary_operation->op)); + fprintf(stderr, "no strategy defined for: " SVFMT "\n", SVARG(&binary_operation->op)); assert(false); } |