Show simple example

This commit is contained in:
Maieul BOYER 2024-04-29 13:29:22 +02:00
parent 06b57272c7
commit 10795d4cee
No known key found for this signature in database

View file

@ -6,14 +6,13 @@
/* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */ /* By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/03/28 14:40:38 by rparodi #+# #+# */ /* Created: 2024/03/28 14:40:38 by rparodi #+# #+# */
/* Updated: 2024/04/28 20:07:10 by maiboyer ### ########.fr */ /* Updated: 2024/04/29 13:29:01 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "../includes/minishell.h" #include "../includes/minishell.h"
t_i32 ft_check_type_operators(t_str operators) t_i32 ft_check_type_operators(t_str operators) {
{
if (operators == NULL) if (operators == NULL)
printf("End of input"); printf("End of input");
else if (ft_strcmp(operators, ">") == 0) else if (ft_strcmp(operators, ">") == 0)
@ -45,15 +44,13 @@ t_i32 ft_check_type_operators(t_str operators)
return (1); return (1);
} }
void ft_check(t_utils *shcat, char **input) void ft_check(t_utils *shcat, char **input) {
{
t_usize i; t_usize i;
t_usize prev_i; t_usize prev_i;
i = 0; i = 0;
prev_i = 0; prev_i = 0;
while (input[i] != NULL) while (input[i] != NULL) {
{
while (ft_check_type_operators(input[i]) == 1) while (ft_check_type_operators(input[i]) == 1)
i++; i++;
if (ft_strcmp(input[i], "exit") == 0) if (ft_strcmp(input[i], "exit") == 0)
@ -69,13 +66,11 @@ void ft_check(t_utils *shcat, char **input)
} }
} }
void ft_take_args(t_utils *shcat) void ft_take_args(t_utils *shcat) {
{
t_i32 i; t_i32 i;
i = 0; i = 0;
while (1) while (1) {
{
shcat->str_input = readline((t_const_str)shcat->name_shell); shcat->str_input = readline((t_const_str)shcat->name_shell);
if (!shcat->str_input) if (!shcat->str_input)
ft_exit(shcat, 0); ft_exit(shcat, 0);
@ -90,18 +85,15 @@ void ft_take_args(t_utils *shcat)
} }
} }
void ft_init_arge(t_str arge[], t_utils *utils) void ft_init_arge(t_str arge[], t_utils *utils) {
{
size_t i; size_t i;
char *temp; char *temp;
i = 0; i = 0;
temp = NULL; temp = NULL;
while (arge[i] != NULL) while (arge[i] != NULL) {
{
if (arge[i][0] == 'P' && arge[i][1] == 'A' && arge[i][2] == 'T' && if (arge[i][0] == 'P' && arge[i][1] == 'A' && arge[i][2] == 'T' &&
arge[i][3] == 'H' && arge[i][4] == '=') arge[i][3] == 'H' && arge[i][4] == '=') {
{
temp = ft_strdup(arge[i] + 5); temp = ft_strdup(arge[i] + 5);
if (!temp) if (!temp)
ft_exit(utils, 1); ft_exit(utils, 1);
@ -115,20 +107,6 @@ void ft_init_arge(t_str arge[], t_utils *utils)
free(temp); free(temp);
} }
// t_i32 main(t_i32 argc, t_str argv[], t_str arge[])
// {
// t_utils *shcat;
//
// shcat = (t_utils *)ft_calloc(sizeof(t_utils), 1);
// if (argc == 2)
// shcat->name_shell = ft_strdup(strcat(argv[1], " \001🐱\002 > "));
// else
// shcat->name_shell = ft_strdup("shcat \001🐱\002 > ");
// shcat->envp = arge;
// ft_init_arge(arge, shcat);
// ft_take_args(shcat);
// }
#include "app/node.h" #include "app/node.h"
#include "me/string/str_len.h" #include "me/string/str_len.h"
#include "parser/api.h" #include "parser/api.h"
@ -136,8 +114,7 @@ void ft_init_arge(t_str arge[], t_utils *utils)
TSLanguage *tree_sitter_bash(void); TSLanguage *tree_sitter_bash(void);
t_node parse_to_nodes(TSParser *parser, t_const_str input) t_node parse_to_nodes(TSParser *parser, t_const_str input) {
{
TSTree *tree; TSTree *tree;
TSNode node; TSNode node;
t_node ret; t_node ret;
@ -149,8 +126,7 @@ t_node parse_to_nodes(TSParser *parser, t_const_str input)
return (ret); return (ret);
} }
void print_node_data(t_node *t, t_usize depth) void print_node_data(t_node *t, t_usize depth) {
{
t_usize idx; t_usize idx;
idx = 0; idx = 0;
@ -162,22 +138,32 @@ void print_node_data(t_node *t, t_usize depth)
print_node_data(&t->childs[idx++], depth + 1); print_node_data(&t->childs[idx++], depth + 1);
} }
t_i32 main(t_i32 argc, t_str argv[], t_str envp[]) typedef struct s_myparser {
{ TSParser *parser;
t_str input; } t_myparser;
t_myparser create_myparser(void) {
TSLanguage *lang; TSLanguage *lang;
TSParser *parser; TSParser *parser;
t_node root_node;
(void)(argc);
(void)(argv);
(void)(envp);
lang = tree_sitter_bash(); lang = tree_sitter_bash();
parser = ts_parser_new(); parser = ts_parser_new();
ts_parser_set_language(parser, lang); ts_parser_set_language(parser, lang);
input = "test \n \\cmd"; return ((t_myparser){.parser = parser});
root_node = parse_to_nodes(parser, input); }
print_node_data(&root_node, 0);
free_node(root_node); void free_myparser(t_myparser self) { ts_parser_delete(self.parser); }
ts_parser_delete(parser);
t_node parse_string(t_myparser *parser, t_const_str input) {
return (parse_to_nodes(parser->parser, input));
}
t_i32 main() {
t_myparser parser;
t_node node;
parser = create_myparser();
node = parse_string(&parser, "banane \"$VAR\"'truc'");
print_node_data(&node, 0);
free_node(node);
} }