diff options
author | Johnny Richard <johnny@johnnyrichard.com> | 2023-04-30 00:43:25 +0200 |
---|---|---|
committer | Johnny Richard <johnny@johnnyrichard.com> | 2023-04-30 00:43:25 +0200 |
commit | 2cabcc44858627f0951d9b702baf8120be7c5cf3 (patch) | |
tree | dd634dd1813c0b5b40a9aaf2ef420883703d5fc2 /src/parser.c | |
parent | 9f034b4ebfe15844ea610ec2dd2fca1a9f7ce338 (diff) |
style: Add -Wmissing-declarations to CC CFLAGS
The refactoring also replace a if statement by switch statement.
Signed-off-by: Johnny Richard <johnny@johnnyrichard.com>
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/parser.c b/src/parser.c index e02d1fe..6b954c2 100644 --- a/src/parser.c +++ b/src/parser.c @@ -91,7 +91,7 @@ parser_parse_type(type_t *type, parser_t *parser) return false; } -bool +static bool parser_literal_integer_node(ast_node_t *node, token_t *token) { char number_as_str[token->value.size]; @@ -118,35 +118,36 @@ token_to_binary_operation_kind(token_t *token) } } -bool +static bool parser_parse_factor(parser_t *parser, ast_node_t *node) { token_t token; lexer_next_token(parser->lexer, &token); - if (token.kind == TOKEN_NUMBER) { - return parser_literal_integer_node(node, &token); - } else if (token.kind == TOKEN_OPAREN) { - parser_parse_expression(parser, node); - if (!drop_expected_token(parser, TOKEN_CPAREN)) + switch (token.kind) { + case TOKEN_NUMBER: + return parser_literal_integer_node(node, &token); + case TOKEN_OPAREN: + if (!parser_parse_expression(parser, node)) + return false; + if (!drop_expected_token(parser, TOKEN_CPAREN)) + return false; + return true; + case TOKEN_NAME: + /// FIXME: Check if the identifier is defined + ast_node_init_identifier(node, token.value); + return true; + default: { + parser_error_t error; + error.token = token; + sprintf(error.message, "unexpected '%s (" SVFMT ")' token", token_kind_to_str(token.kind), SVARG(&token.value)); + parser->errors[parser->errors_len++] = error; return false; - return true; - } else if (token.kind == TOKEN_NAME) { - /// FIXME: Check if the identifier is defined - ast_node_init_identifier(node, token.value); - return true; + } } - - // FIXME: Extract this erros logic to a function - parser_error_t error; - error.token = token; - sprintf(error.message, "unexpected '%s (" SVFMT ")' token", token_kind_to_str(token.kind), SVARG(&token.value)); - parser->errors[parser->errors_len++] = error; - - return false; } -bool +static bool parser_parse_term(parser_t *parser, ast_node_t *node) { if (!parser_parse_factor(parser, node)) @@ -207,7 +208,7 @@ parser_parse_expression(parser_t *parser, ast_node_t *node) return true; } -bool +static bool parser_parse_return_stmt(parser_t *parser, ast_node_t *node) { ast_node_t *argument_token = ast_node_new(); @@ -221,7 +222,7 @@ parser_parse_return_stmt(parser_t *parser, ast_node_t *node) return true; } -bool +static bool parser_parse_variable_definition(parser_t *parser, string_view_t variable_name, ast_node_t *node) { if (!drop_expected_token(parser, TOKEN_COLON)) @@ -250,7 +251,7 @@ parser_parse_variable_definition(parser_t *parser, string_view_t variable_name, return true; } -bool +static bool parser_parse_block_declarations(parser_t *parser, vector_t *body) { token_t current_token; |