lexing problems w/ less and great
This commit is contained in:
parent
8abf9fe433
commit
c65e07038b
4 changed files with 10 additions and 10 deletions
|
|
@ -54,5 +54,6 @@ int process_redirect(t_process *p)
|
|||
dup2_close(p->fdin, STDIN);
|
||||
if (p->fdout != STDOUT)
|
||||
dup2_close(p->fdout, STDOUT);
|
||||
ft_lstdel(&p->redirs, ft_lst_cfree);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,18 +18,18 @@ int lexer_great(t_list **alst, t_lexer *lexer)
|
|||
|
||||
token = (*alst)->content;
|
||||
token_append(token, lexer, 0, 0);
|
||||
if (lexer->str[lexer->pos + 1] == '&')
|
||||
DG("lexer->str=[%s]", lexer->str);
|
||||
lexer->pos++;
|
||||
if (lexer->str[lexer->pos] == '&')
|
||||
{
|
||||
token->type = TK_GREATAND;
|
||||
lexer->pos++;
|
||||
token_append(token, lexer, 0, 0);
|
||||
lexer->pos++;
|
||||
return (lexer_greatand(alst, lexer));
|
||||
}
|
||||
if (lexer->str[lexer->pos + 1] == '>')
|
||||
if (lexer->str[lexer->pos] == '>')
|
||||
{
|
||||
token->type = TK_DGREAT;
|
||||
lexer->pos++;
|
||||
token_append(token, lexer, 0, 0);
|
||||
lexer->pos++;
|
||||
lexer->state = DEFAULT;
|
||||
|
|
|
|||
|
|
@ -18,20 +18,20 @@ int lexer_less(t_list **alst, t_lexer *lexer)
|
|||
|
||||
token = (*alst)->content;
|
||||
token_append(token, lexer, 0, 0);
|
||||
if (lexer->str[lexer->pos + 1] == '&')
|
||||
lexer->pos++;
|
||||
if (lexer->str[lexer->pos] == '&')
|
||||
{
|
||||
token->type = TK_LESSAND;
|
||||
lexer->pos++;
|
||||
token_append(token, lexer, 0, 0);
|
||||
lexer->pos++;
|
||||
return (lexer_lessand(alst, lexer));
|
||||
}
|
||||
if (lexer->str[lexer->pos + 1] == '<')
|
||||
if (lexer->str[lexer->pos] == '<')
|
||||
{
|
||||
token_free(token, 0);
|
||||
(*alst)->content = token_init();
|
||||
token->type = TK_DLESS;
|
||||
lexer->pos += 2;
|
||||
lexer->pos++;
|
||||
push(&lexer->stack, DLESS);
|
||||
lexer->state = DEFAULT;
|
||||
ft_lsteadd(&lexer->heredoc_stack, ft_lstnew(alst, sizeof(alst)));
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ int interactive_shell()
|
|||
else if (get_lexer_stack(lexer) == DLESS)
|
||||
lexer.state = DLESS;
|
||||
ltoken = ft_lstlast(token);
|
||||
if (lexer_lex((token ? <oken : &token), &lexer))
|
||||
if (lexer_lex(token ? <oken : &token, &lexer))
|
||||
return (1);
|
||||
DG("[{mag}%s{eoc}] stack=[%i] state=[%i]", lexer.str, lexer.stack ? *(int*)lexer.stack->content : 0, lexer.state);
|
||||
token_print(token);
|
||||
|
|
@ -75,7 +75,6 @@ int interactive_shell()
|
|||
btree_print(STDBUG, ast, &ft_putast);
|
||||
if (ft_exec(&ast))
|
||||
return (1);
|
||||
DG("gonna free [%s] @ [%p]", lexer.str, lexer.str);
|
||||
ft_strdel(&lexer.str);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue