mirror of
https://codeberg.org/la-chouette/minishell.git
synced 2025-12-06 07:28:09 +01:00
wordsplit: make it compile
This commit is contained in:
parent
3e64ac3769
commit
6c8dd312c0
7 changed files with 41 additions and 43 deletions
|
|
@ -6,7 +6,7 @@
|
|||
/* By: kcolin <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/06 13:44:06 by kcolin #+# #+# */
|
||||
/* Updated: 2025/02/19 18:03:54 by khais ### ########.fr */
|
||||
/* Updated: 2025/02/20 15:00:46 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: jguelen <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/19 13:20:01 by jguelen #+# #+# */
|
||||
/* Updated: 2025/02/19 18:27:37 by khais ### ########.fr */
|
||||
/* Updated: 2025/02/19 18:38:33 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ bool token_rule_1(t_token_build *token_build, char *original)
|
|||
{
|
||||
if (original[token_build->current_index] == '\0')
|
||||
{
|
||||
token_build->wordlist = delimit(token_build);
|
||||
delimit(token_build);
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
|
|
@ -41,7 +41,7 @@ bool token_rule_2(t_token_build *token_build, char *original)
|
|||
if (token_build->currently_in_operator && token_build->quote == '\0'
|
||||
&& is_operator_combo(token_build->cur_token->buffer, original[token_build->current_index]))
|
||||
{
|
||||
token_build->cur_token = push_char(token_build->cur_token, original[token_build->current_index]);
|
||||
push_char(token_build, original[token_build->current_index]);
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
|
|
@ -73,9 +73,9 @@ bool token_rule_3(t_token_build *token_build, char *original)
|
|||
*/
|
||||
bool token_rule_4(t_token_build *token_build, char *original)
|
||||
{
|
||||
if (original[idx] == '\'' || original[idx] == '"')
|
||||
if (original[token_build->current_index] == '\'' || original[token_build->current_index] == '"')
|
||||
{
|
||||
quote = quote_flip(&token, original[idx], quote);
|
||||
quote_flip(token_build, original[token_build->current_index]);
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: jguelen <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/19 13:21:18 by jguelen #+# #+# */
|
||||
/* Updated: 2025/02/19 18:25:55 by khais ### ########.fr */
|
||||
/* Updated: 2025/02/19 18:37:05 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -25,10 +25,9 @@
|
|||
*/
|
||||
bool token_rule_6(t_token_build *token_build, char *original)
|
||||
{
|
||||
if (quote == '\0' && is_operator_start(original[idx]))
|
||||
if (token_build->quote == '\0' && is_operator_start(original[token_build->current_index]))
|
||||
{
|
||||
operator_start(&wordlist, &token, original[idx],
|
||||
¤tly_in_word, ¤tly_in_operator);
|
||||
operator_start(token_build, original[token_build->current_index]);
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
|
|
@ -38,12 +37,11 @@ bool token_rule_6(t_token_build *token_build, char *original)
|
|||
** 7. If the current character is an unquoted <blank>, any token containing the
|
||||
** previous character is delimited and the current character shall be discarded.
|
||||
*/
|
||||
bool token_rule_7(t_token_build *token_build, char *original);
|
||||
bool token_rule_7(t_token_build *token_build, char *original)
|
||||
{
|
||||
if (is_blank(original[idx]) && quote == '\0')
|
||||
if (is_blank(original[token_build->current_index]) && token_build->quote == '\0')
|
||||
{
|
||||
wordlist = delimit(wordlist, &token, ¤tly_in_word,
|
||||
¤tly_in_operator);
|
||||
delimit(token_build);
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
|
|
@ -55,9 +53,9 @@ bool token_rule_7(t_token_build *token_build, char *original);
|
|||
*/
|
||||
bool token_rule_8(t_token_build *token_build, char *original)
|
||||
{
|
||||
if (currently_in_word)
|
||||
if (token_build->currently_in_word)
|
||||
{
|
||||
token = push_char(token, original[idx]);
|
||||
push_char(token_build, original[token_build->current_index]);
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
|
|
@ -68,6 +66,6 @@ bool token_rule_8(t_token_build *token_build, char *original)
|
|||
*/
|
||||
bool token_rule_10(t_token_build *token_build, char *original)
|
||||
{
|
||||
token = new_word(token, original[idx], ¤tly_in_word);
|
||||
new_word(token_build, original[token_build->current_index]);
|
||||
return (true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
/* +:+ +:+ +:+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/19 18:26/57 by khais #+# #+# */
|
||||
/* Updated: 2025/02/19 18:26:57 by khais ### ########.fr */
|
||||
/* Created: 2025/02/19 18:41/00 by khais #+# #+# */
|
||||
/* Updated: 2025/02/19 18:41:00 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -36,8 +36,8 @@ t_wordlist *minishell_wordsplit(char *original)
|
|||
continue ;
|
||||
if (token_rule_4(&token_build, original))
|
||||
continue ;
|
||||
if (token_rule_5(&token_build, original))
|
||||
continue ;
|
||||
/* if (token_rule_5(&token_build, original)) */
|
||||
/* continue ; */
|
||||
if (token_rule_6(&token_build, original))
|
||||
continue ;
|
||||
if (token_rule_7(&token_build, original))
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
/* +:+ +:+ +:+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/19 18:22/52 by khais #+# #+# */
|
||||
/* Updated: 2025/02/19 18:22:52 by khais ### ########.fr */
|
||||
/* Created: 2025/02/19 18:37/59 by khais #+# #+# */
|
||||
/* Updated: 2025/02/19 18:37:59 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
|
@ -31,10 +31,10 @@ typedef struct s_token_build
|
|||
size_t current_index;
|
||||
} t_token_build;
|
||||
|
||||
t_wordlist *delimit(t_token_build *token_build);
|
||||
t_buffer *push_char(t_token_build *token_build, char c);
|
||||
t_buffer *new_word(t_token_build *token_build, char c);
|
||||
char quote_flip(t_token_build *token_build, char c);
|
||||
void delimit(t_token_build *token_build);
|
||||
void push_char(t_token_build *token_build, char c);
|
||||
void new_word(t_token_build *token_build, char c);
|
||||
void quote_flip(t_token_build *token_build, char c);
|
||||
void operator_start(t_token_build *token_build, char c);
|
||||
bool token_rule_1(t_token_build *token_build, char *original);
|
||||
bool token_rule_2(t_token_build *token_build, char *original);
|
||||
|
|
|
|||
|
|
@ -3,55 +3,52 @@
|
|||
/* ::: :::::::: */
|
||||
/* wordsplit_utils.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: jguelen <jguelen@student.42.fr> +#+ +:+ +#+ */
|
||||
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/19 14:27:47 by jguelen #+# #+# */
|
||||
/* Updated: 2025/02/19 18:02:33 by jguelen ### ########.fr */
|
||||
/* Created: 2025/02/19 18:40/48 by khais #+# #+# */
|
||||
/* Updated: 2025/02/19 18:40:48 by khais ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "wordsplit.h"
|
||||
|
||||
t_wordlist *delimit(t_token_build *token_build)
|
||||
void delimit(t_token_build *token_build)
|
||||
{
|
||||
if (token_build->cur_token == NULL)
|
||||
return (token_build->wordlist);
|
||||
return ;
|
||||
token_build->wordlist = wordlist_push(token_build->wordlist,
|
||||
worddesc_create(token_build->cur_token->buffer));
|
||||
free(token_build->cur_token);
|
||||
token_build->cur_token = NULL;
|
||||
token_build->currently_in_word = false;
|
||||
token_build->currently_in_operator = false;
|
||||
return (token_build->wordlist);
|
||||
}
|
||||
|
||||
t_buffer *push_char(t_token_build *token_build, char c)
|
||||
void push_char(t_token_build *token_build, char c)
|
||||
{
|
||||
if (token_build->cur_token == NULL)
|
||||
token_build->cur_token = ft_buffer_new();
|
||||
return (ft_buffer_pushchar(token_build->cur_token, c));
|
||||
ft_buffer_pushchar(token_build->cur_token, c);
|
||||
}
|
||||
|
||||
t_buffer *new_word(t_token_build *token_build, char c)
|
||||
void new_word(t_token_build *token_build, char c)
|
||||
{
|
||||
token_build->cur_token = push_char(token_build->cur_token, c);
|
||||
push_char(token_build, c);
|
||||
token_build->currently_in_word = true;
|
||||
return (token_build->cur_token);
|
||||
}
|
||||
|
||||
char quote_flip(t_token_build *token_build, char c)
|
||||
void quote_flip(t_token_build *token_build, char c)
|
||||
{
|
||||
if (token_build->quote == '\0')
|
||||
token_build->quote = c;
|
||||
else if (token_build->quote == c)
|
||||
token_build->quote = '\0';
|
||||
token_build->cur_token = push_char(token_build->cur_token, c);
|
||||
return (token_build->quote);
|
||||
push_char(token_build, c);
|
||||
}
|
||||
|
||||
void operator_start(t_token_build *token_build, char c)
|
||||
{
|
||||
token_build->wordlist = delimit(token_build);
|
||||
token_build->cur_token = new_word(token_build, c);
|
||||
delimit(token_build);
|
||||
new_word(token_build, c);
|
||||
token_build->currently_in_operator = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue