update: parser now uses tokens from lexer
fixes pending: - some functions are longer than norminette allows - find solution to a list of commands being returned, even though a syntax error is found when processing tokens (maybe delegate some work to the lexer and return only a syntax-valid list?)
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
/* By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/10/22 19:03:51 by sede-san #+# #+# */
|
||||
/* Updated: 2026/02/09 21:19:02 by sede-san ### ########.fr */
|
||||
/* Updated: 2026/02/11 00:35:08 by sede-san ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -17,38 +17,6 @@
|
||||
# include "core.h"
|
||||
# include "builtins.h"
|
||||
|
||||
# define TOKENS_COUNT 5
|
||||
|
||||
typedef enum e_token_type
|
||||
{
|
||||
TOKEN_WORD,
|
||||
TOKEN_PIPE,
|
||||
TOKEN_REDIRECT_IN,
|
||||
TOKEN_REDIRECT_OUT,
|
||||
TOKEN_APPEND,
|
||||
TOKEN_HEREDOC
|
||||
} t_token_type;
|
||||
|
||||
typedef struct s_token
|
||||
{
|
||||
t_token_type type;
|
||||
char *value;
|
||||
} t_token;
|
||||
|
||||
typedef enum e_redirection_type
|
||||
{
|
||||
REDIRECT_IN,
|
||||
REDIRECT_OUT,
|
||||
APPEND,
|
||||
HEREDOC
|
||||
} t_redirection_type;
|
||||
|
||||
typedef struct s_redirection
|
||||
{
|
||||
t_redirection_type type;
|
||||
char *target;
|
||||
} t_redirection;
|
||||
|
||||
/******************************************************************************/
|
||||
/* Functions */
|
||||
/******************************************************************************/
|
||||
@@ -57,4 +25,16 @@ typedef struct s_redirection
|
||||
|
||||
extern t_list *parse(char *line, t_minishell *minishell);
|
||||
|
||||
// lexer.c
|
||||
|
||||
extern t_list *lex(const char *line);
|
||||
|
||||
extern void token_clear(t_token *token);
|
||||
extern t_command *command_new(t_list **tokens);
|
||||
extern void command_clear(t_command *command);
|
||||
extern void command_add_tokens(t_command *command, t_list **tokens);
|
||||
extern bool is_pipe(t_token *token);
|
||||
extern bool is_redirection(t_token *token);
|
||||
void redirection_add(t_list **tokens, t_token *token, t_command *command);
|
||||
void words_add(t_list **tokens, t_command *command);
|
||||
#endif /* PARSER_H */
|
||||
|
||||
Reference in New Issue
Block a user