diff --git a/ast/include/ast/ast_raw_structs.h b/ast/include/ast/ast_raw_structs.h index 82c58414..6d0f635a 100644 --- a/ast/include/ast/ast_raw_structs.h +++ b/ast/include/ast/ast_raw_structs.h @@ -6,7 +6,7 @@ /* By: maiboyer +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/14 17:46:58 by maiboyer #+# #+# */ -/* Updated: 2024/07/21 17:46:08 by rparodi ### ########.fr */ +/* Updated: 2024/07/22 12:43:06 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/ast/src/from_node.c b/ast/src/from_node.c index a0f992d7..f99ca291 100644 --- a/ast/src/from_node.c +++ b/ast/src/from_node.c @@ -67,7 +67,6 @@ sym_while_statement sym_word */ -#include #include #include @@ -625,11 +624,11 @@ t_error build_sym_command_substitution(t_parse_node self, t_const_str input, t_a /* FUNCTION DONE*/ t_error build_sym_arithmetic_binary_expression(t_parse_node self, t_const_str input, t_ast_node *out); +t_error build_sym_arithmetic_literal(t_parse_node self, t_const_str input, t_ast_node *out); /* FUNCTION THAT ARE NOT DONE */ // TODO: This is your homework raph -t_error build_sym_arithmetic_literal(t_parse_node self, t_const_str input, t_ast_node *out); t_error build_sym_arithmetic_parenthesized_expression(t_parse_node self, t_const_str input, t_ast_node *out); t_error build_sym_arithmetic_postfix_expression(t_parse_node self, t_const_str input, t_ast_node *out); t_error build_sym_arithmetic_ternary_expression(t_parse_node self, t_const_str input, t_ast_node *out); @@ -672,6 +671,7 @@ t_error build_sym_arithmetic_binary_expression(t_parse_node self, t_const_str in return (*out = ret, NO_ERROR); } +// RAPH t_error build_sym_arithmetic_literal(t_parse_node self, t_const_str input, t_ast_node *out) { t_usize i; @@ -683,21 +683,23 @@ t_error build_sym_arithmetic_literal(t_parse_node self, t_const_str input, t_ast return (ERROR); i = 0; ret = ast_alloc(AST_ARITHMETIC_LITTERAL); - while (i < ts_node_child_count(self)) - { - if (ts_node_field_id_for_child(self, i) == field_lhs) - if (ast_from_node(ts_node_child(self, i), input, &ret->data.arithmetic_binary.lhs)) - return (ERROR); - if (ts_node_field_id_for_child(self, i) == field_op) - ret->data.arithmetic_binary.op = _parse_operator(ts_node_child(self, i)); - if (ts_node_field_id_for_child(self, i) == field_rhs) - if (ast_from_node(ts_node_child(self, i), input, &ret->data.arithmetic_binary.rhs)) - return (ERROR); - i++; - } + if (ast_from_node(ts_node_child(self, i), input, &ret->data.arithmetic_literal.value)) + return (ERROR); return (*out = ret, NO_ERROR); } +t_error build_sym_arithmetic_parenthesized_expression(t_parse_node self, t_const_str input, t_ast_node *out) +{ + t_usize i; + t_ast_node ret; + + if (out == NULL) + return (ERROR); + if (ts_node_symbol(self) != sym_arithmetic_parenthesized_expression) + return (ERROR); + return (ast_from_node(ts_node_child(self, 1), input, out)); +} + t_error build_sym_command_substitution(t_parse_node self, t_const_str input, t_ast_node *out) { t_ast_node ret;