fixed problem with redirection lexing

This commit is contained in:
Jack Halford 2017-02-28 18:53:58 +01:00
parent 703f8a4cd4
commit ca1e060463
5 changed files with 12 additions and 16 deletions

View file

@ -17,8 +17,8 @@ int lexer_great(t_list **alst, t_lexer *lexer)
t_token *token; t_token *token;
token = (*alst)->content; token = (*alst)->content;
if (token->type) /* if (token->type) */
return (lexer_lex(&(*alst)->next, lexer)); /* return (lexer_lex(&(*alst)->next, lexer)); */
token_append(token, lexer, 0, 0); token_append(token, lexer, 0, 0);
lexer->pos++; lexer->pos++;
if (lexer->str[lexer->pos] == '&') if (lexer->str[lexer->pos] == '&')

View file

@ -17,8 +17,8 @@ int lexer_less(t_list **alst, t_lexer *lexer)
t_token *token; t_token *token;
token = (*alst)->content; token = (*alst)->content;
if (token->type) /* if (token->type) */
return (lexer_lex(&(*alst)->next, lexer)); /* return (lexer_lex(&(*alst)->next, lexer)); */
token_append(token, lexer, 0, 0); token_append(token, lexer, 0, 0);
lexer->pos++; lexer->pos++;
if (lexer->str[lexer->pos] == '&') if (lexer->str[lexer->pos] == '&')

View file

@ -18,12 +18,8 @@ int lexer_number(t_list **alst, t_lexer *lexer)
t_lexstate state; t_lexstate state;
token = (*alst)->content; token = (*alst)->content;
if ((state = get_state_global(lexer))) if ((state = get_state_global(lexer))
{ || (state = get_state_redir(lexer)))
lexer->state = state;
return (lexer_lex(alst, lexer));
}
else if ((state = get_state_redir(lexer)))
{ {
lexer->state = state; lexer->state = state;
return (lexer_lex(alst, lexer)); return (lexer_lex(alst, lexer));

View file

@ -27,7 +27,7 @@ int lexer_word(t_list **alst, t_lexer *lexer)
if ((state = get_state_redir(lexer))) if ((state = get_state_redir(lexer)))
{ {
lexer->state = state; lexer->state = state;
return (lexer_lex(alst, lexer)); return (lexer_lex(&(*alst)->next, lexer));
} }
token_append(token, lexer, 0, 0); token_append(token, lexer, 0, 0);
lexer->pos++; lexer->pos++;

View file

@ -45,7 +45,7 @@ int non_interactive_shell(char *command)
int interactive_shell() int interactive_shell()
{ {
t_list *token; t_list *token;
t_list *ltoken; t_list *token_tail;
t_lexer lexer; t_lexer lexer;
t_btree *ast; t_btree *ast;
@ -59,13 +59,13 @@ int interactive_shell()
pop(&lexer.stack); pop(&lexer.stack);
else if (get_lexer_stack(lexer) == DLESS) else if (get_lexer_stack(lexer) == DLESS)
lexer.state = DLESS; lexer.state = DLESS;
ltoken = ft_lstlast(token); token_tail = ft_lstlast(token);
if (lexer_lex(token ? &ltoken : &token, &lexer)) /* if (token_tail) */
/* token_tail = token_tail->next; */
if (lexer_lex(token ? &token_tail : &token, &lexer))
return (1); return (1);
token_print(token); token_print(token);
} while (get_lexer_stack(lexer)); } while (get_lexer_stack(lexer));
// if (bquotes_expand(&token))
// return (1);
if (!token) if (!token)
return (0); return (0);
ft_add_str_in_history(lexer.str); ft_add_str_in_history(lexer.str);