diff options
Diffstat (limited to 'src/parser.c')
| -rw-r--r-- | src/parser.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/parser.c b/src/parser.c index 13ab10d..8393cda 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,7 +6,7 @@ /* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/29 15:53:29 by dkaiser #+# #+# */ -/* Updated: 2025/01/20 19:13:31 by chuhlig ### ########.fr */ +/* Updated: 2025/01/25 11:38:47 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,17 +19,24 @@ static t_token *find_token_by_type(t_token *tokens, int type); t_token *split_at_first(t_token **tokens, int type); static t_node *parse_statement(t_token *tokens, t_env **env); -t_list *parse(t_token *tokens, t_env **env) +t_node *parse(t_token *tokens, t_env **env) { t_node *result; - if ((*tokens).type == PIPE_TOKEN) + if ((*tokens).type == PIPE_TOKEN + || ((*tokens).type == REDIR_TOKEN && !(*tokens).next)) + { result = NULL; + free_tokens(tokens); + } else result = parse_statement(tokens, env); if (result == NULL) + { printf("Parsing error.\n"); - return (ft_lstnew(result)); + free_tokens(tokens); + } + return (result); } static t_node *parse_statement(t_token *tokens, t_env **env) @@ -70,7 +77,7 @@ t_token *split_at_first(t_token **tokens, int type) *tokens = split->next; if (result == split) result = NULL; - free_token(split); + free_token2(split); split = NULL; return (result); } |
