From 127dae1c3b48c3a4dceddb9000309bfeaa8d0a01 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Wed, 26 Apr 2023 00:40:44 +0200 Subject: 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 --- src/gas_assembly_generator.c | 70 +++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 34 deletions(-) (limited to 'src/gas_assembly_generator.c') 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 . -*/ + * 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 . + */ #include "gas_assembly_generator.h" #include #include #include -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); } -- cgit v1.2.3