token stuff
This commit is contained in:
parent
76535c73c1
commit
27e26a6211
5 changed files with 72 additions and 40 deletions
3
42sh/.gitignore
vendored
Normal file
3
42sh/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
minishell
|
||||||
|
21sh
|
||||||
|
42sh
|
||||||
|
|
@ -3,12 +3,12 @@ if &cp | set nocp | endif
|
||||||
let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
|
let s:so_save = &so | let s:siso_save = &siso | set so=0 siso=0
|
||||||
let v:this_session=expand("<sfile>:p")
|
let v:this_session=expand("<sfile>:p")
|
||||||
silent only
|
silent only
|
||||||
cd ~/minishell
|
cd ~/42/minishell
|
||||||
if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
|
if expand('%') == '' && !&modified && line('$') <= 1 && getline(1) == ''
|
||||||
let s:wipebuf = bufnr('%')
|
let s:wipebuf = bufnr('%')
|
||||||
endif
|
endif
|
||||||
set shortmess=aoO
|
set shortmess=aoO
|
||||||
badd +26 includes/minishell.h
|
badd +1 includes/minishell.h
|
||||||
badd +1 src/user-interaction/ft_word_left.c
|
badd +1 src/user-interaction/ft_word_left.c
|
||||||
badd +11 src/user-interaction/ft_cursor_left.c
|
badd +11 src/user-interaction/ft_cursor_left.c
|
||||||
badd +8 src/user-interaction/ft_interactive_sh.c
|
badd +8 src/user-interaction/ft_interactive_sh.c
|
||||||
|
|
@ -17,7 +17,7 @@ badd +18 src/user-interaction/ft_cursor_right.c
|
||||||
badd +7 src/user-interaction/ft_clear_line.c
|
badd +7 src/user-interaction/ft_clear_line.c
|
||||||
badd +1 src/user-interaction/ft_line_start.c
|
badd +1 src/user-interaction/ft_line_start.c
|
||||||
badd +5 src/user-interaction/ft_line_end.c
|
badd +5 src/user-interaction/ft_line_end.c
|
||||||
badd +24 src/main/main.c
|
badd +1 src/main/main.c
|
||||||
badd +12 src/builtin/builtin_exit.c
|
badd +12 src/builtin/builtin_exit.c
|
||||||
badd +1 src/user-interaction/ft_cmd.c
|
badd +1 src/user-interaction/ft_cmd.c
|
||||||
badd +8 src/line-editing/ft_cmd.c
|
badd +8 src/line-editing/ft_cmd.c
|
||||||
|
|
@ -51,9 +51,11 @@ badd +22 src/line-editing/ft_tc_init.c
|
||||||
badd +33 libft/includes/libft.h
|
badd +33 libft/includes/libft.h
|
||||||
badd +5 libft/includes/get_next_line.h
|
badd +5 libft/includes/get_next_line.h
|
||||||
badd +22 src/token/token_init.c
|
badd +22 src/token/token_init.c
|
||||||
badd +19 src/token/includes/token.h
|
badd +1 src/token/includes/token.h
|
||||||
badd +15 src/token/token_recognition.c
|
badd +15 src/token/token_recognition.c
|
||||||
|
argglobal
|
||||||
silent! argdel *
|
silent! argdel *
|
||||||
|
set stal=2
|
||||||
edit includes/minishell.h
|
edit includes/minishell.h
|
||||||
set splitbelow splitright
|
set splitbelow splitright
|
||||||
wincmd _ | wincmd |
|
wincmd _ | wincmd |
|
||||||
|
|
@ -64,8 +66,8 @@ set nosplitbelow
|
||||||
set nosplitright
|
set nosplitright
|
||||||
wincmd t
|
wincmd t
|
||||||
set winheight=1 winwidth=1
|
set winheight=1 winwidth=1
|
||||||
exe 'vert 1resize ' . ((&columns * 91 + 91) / 182)
|
exe 'vert 1resize ' . ((&columns * 89 + 89) / 178)
|
||||||
exe 'vert 2resize ' . ((&columns * 90 + 91) / 182)
|
exe 'vert 2resize ' . ((&columns * 88 + 89) / 178)
|
||||||
argglobal
|
argglobal
|
||||||
setlocal fdm=manual
|
setlocal fdm=manual
|
||||||
setlocal fde=0
|
setlocal fde=0
|
||||||
|
|
@ -76,12 +78,12 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 52 - ((51 * winheight(0) + 37) / 75)
|
let s:l = 43 - ((18 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
52
|
43
|
||||||
normal! 042l
|
normal! 046|
|
||||||
wincmd w
|
wincmd w
|
||||||
argglobal
|
argglobal
|
||||||
edit src/line-editing/includes/line_editing.h
|
edit src/line-editing/includes/line_editing.h
|
||||||
|
|
@ -94,15 +96,15 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 46 - ((45 * winheight(0) + 37) / 75)
|
let s:l = 46 - ((25 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
46
|
46
|
||||||
normal! 0
|
normal! 0
|
||||||
wincmd w
|
wincmd w
|
||||||
exe 'vert 1resize ' . ((&columns * 91 + 91) / 182)
|
exe 'vert 1resize ' . ((&columns * 89 + 89) / 178)
|
||||||
exe 'vert 2resize ' . ((&columns * 90 + 91) / 182)
|
exe 'vert 2resize ' . ((&columns * 88 + 89) / 178)
|
||||||
tabedit src/main/main.c
|
tabedit src/main/main.c
|
||||||
set splitbelow splitright
|
set splitbelow splitright
|
||||||
wincmd _ | wincmd |
|
wincmd _ | wincmd |
|
||||||
|
|
@ -113,8 +115,8 @@ set nosplitbelow
|
||||||
set nosplitright
|
set nosplitright
|
||||||
wincmd t
|
wincmd t
|
||||||
set winheight=1 winwidth=1
|
set winheight=1 winwidth=1
|
||||||
exe 'vert 1resize ' . ((&columns * 91 + 91) / 182)
|
exe 'vert 1resize ' . ((&columns * 89 + 89) / 178)
|
||||||
exe 'vert 2resize ' . ((&columns * 90 + 91) / 182)
|
exe 'vert 2resize ' . ((&columns * 88 + 89) / 178)
|
||||||
argglobal
|
argglobal
|
||||||
setlocal fdm=manual
|
setlocal fdm=manual
|
||||||
setlocal fde=0
|
setlocal fde=0
|
||||||
|
|
@ -125,12 +127,12 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 22 - ((19 * winheight(0) + 37) / 75)
|
let s:l = 2 - ((1 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
22
|
2
|
||||||
normal! 09l
|
normal! 016|
|
||||||
wincmd w
|
wincmd w
|
||||||
argglobal
|
argglobal
|
||||||
edit src/line-editing/ft_interactive_sh.c
|
edit src/line-editing/ft_interactive_sh.c
|
||||||
|
|
@ -143,15 +145,15 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 56 - ((55 * winheight(0) + 37) / 75)
|
let s:l = 15 - ((14 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
56
|
15
|
||||||
normal! 012l
|
normal! 016|
|
||||||
wincmd w
|
wincmd w
|
||||||
exe 'vert 1resize ' . ((&columns * 91 + 91) / 182)
|
exe 'vert 1resize ' . ((&columns * 89 + 89) / 178)
|
||||||
exe 'vert 2resize ' . ((&columns * 90 + 91) / 182)
|
exe 'vert 2resize ' . ((&columns * 88 + 89) / 178)
|
||||||
tabedit src/token/includes/token.h
|
tabedit src/token/includes/token.h
|
||||||
set splitbelow splitright
|
set splitbelow splitright
|
||||||
wincmd _ | wincmd |
|
wincmd _ | wincmd |
|
||||||
|
|
@ -162,8 +164,8 @@ set nosplitbelow
|
||||||
set nosplitright
|
set nosplitright
|
||||||
wincmd t
|
wincmd t
|
||||||
set winheight=1 winwidth=1
|
set winheight=1 winwidth=1
|
||||||
exe 'vert 1resize ' . ((&columns * 91 + 91) / 182)
|
exe 'vert 1resize ' . ((&columns * 89 + 89) / 178)
|
||||||
exe 'vert 2resize ' . ((&columns * 90 + 91) / 182)
|
exe 'vert 2resize ' . ((&columns * 88 + 89) / 178)
|
||||||
argglobal
|
argglobal
|
||||||
setlocal fdm=manual
|
setlocal fdm=manual
|
||||||
setlocal fde=0
|
setlocal fde=0
|
||||||
|
|
@ -174,12 +176,12 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 18 - ((17 * winheight(0) + 37) / 75)
|
let s:l = 19 - ((18 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
18
|
19
|
||||||
normal! 0
|
normal! 029|
|
||||||
wincmd w
|
wincmd w
|
||||||
argglobal
|
argglobal
|
||||||
edit src/token/ft_tokenize.c
|
edit src/token/ft_tokenize.c
|
||||||
|
|
@ -192,15 +194,15 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 35 - ((34 * winheight(0) + 37) / 75)
|
let s:l = 28 - ((11 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
35
|
28
|
||||||
normal! 01l
|
normal! 08|
|
||||||
wincmd w
|
wincmd w
|
||||||
exe 'vert 1resize ' . ((&columns * 91 + 91) / 182)
|
exe 'vert 1resize ' . ((&columns * 89 + 89) / 178)
|
||||||
exe 'vert 2resize ' . ((&columns * 90 + 91) / 182)
|
exe 'vert 2resize ' . ((&columns * 88 + 89) / 178)
|
||||||
tabedit src/token/token_init.c
|
tabedit src/token/token_init.c
|
||||||
set splitbelow splitright
|
set splitbelow splitright
|
||||||
set nosplitbelow
|
set nosplitbelow
|
||||||
|
|
@ -217,13 +219,14 @@ setlocal fml=1
|
||||||
setlocal fdn=20
|
setlocal fdn=20
|
||||||
setlocal fen
|
setlocal fen
|
||||||
silent! normal! zE
|
silent! normal! zE
|
||||||
let s:l = 19 - ((18 * winheight(0) + 37) / 75)
|
let s:l = 19 - ((10 * winheight(0) + 20) / 40)
|
||||||
if s:l < 1 | let s:l = 1 | endif
|
if s:l < 1 | let s:l = 1 | endif
|
||||||
exe s:l
|
exe s:l
|
||||||
normal! zt
|
normal! zt
|
||||||
19
|
19
|
||||||
normal! 031l
|
normal! 035|
|
||||||
tabnext 3
|
tabnext 3
|
||||||
|
set stal=1
|
||||||
if exists('s:wipebuf')
|
if exists('s:wipebuf')
|
||||||
silent exe 'bwipe ' . s:wipebuf
|
silent exe 'bwipe ' . s:wipebuf
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit b38fc62abb47b660dddc683266a7fc3aa805ab96
|
Subproject commit 87f043154c8e46ae7d0df30ec25ee420ce1b8099
|
||||||
|
|
@ -23,7 +23,7 @@ int ft_tokenize(t_list **alst, char *str)
|
||||||
token = (*alst)->content;
|
token = (*alst)->content;
|
||||||
if (!*str)
|
if (!*str)
|
||||||
return (0);
|
return (0);
|
||||||
else if (token->type == TOKEN_OPERATOR && !quoted)
|
else if ((token->type & TOKEN_OPERATOR) && !quoted)
|
||||||
{
|
{
|
||||||
if (can_be_used_in_op)
|
if (can_be_used_in_op)
|
||||||
token_append(token, *str);
|
token_append(token, *str);
|
||||||
|
|
@ -32,8 +32,25 @@ int ft_tokenize(t_list **alst, char *str)
|
||||||
}
|
}
|
||||||
else if (can_be_first_of_op && !quoted)
|
else if (can_be_first_of_op && !quoted)
|
||||||
{
|
{
|
||||||
|
(*alst)->next = ft_lstnew(token_init(), sizeof(t_token));
|
||||||
|
(*alst) = (*alst)->next;
|
||||||
|
token = (*alst)->content;
|
||||||
|
token->type = TOKEN_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
else if (*str == '\n' && !quoted)
|
||||||
|
ft_tokenize(&(*alst)->next, str + 1);
|
||||||
|
else if (*str == ' ' && !quoted)
|
||||||
|
ft_tokenize(&(*alst)->next, str + 1);
|
||||||
|
else if (token->type == TOKEN_WORD)
|
||||||
|
token_append(token, *str);
|
||||||
|
else if (*str = '#')
|
||||||
|
{
|
||||||
|
while (*str && *str != '\n')
|
||||||
|
str++;
|
||||||
|
ft_tokenize(alst, str);
|
||||||
|
}
|
||||||
|
(*alst)->next = ft_lstnew(token_init(), sizeof(t_token));
|
||||||
|
token->type = TOKEN_WORD;
|
||||||
|
token_append(token, *str);
|
||||||
ft_tokenize(&(*alst)->next, str + 1);
|
ft_tokenize(&(*alst)->next, str + 1);
|
||||||
ft_tokenize(alst, str + 1);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,23 @@
|
||||||
#ifndef TOKEN_H
|
#ifndef TOKEN_H
|
||||||
# define TOKEN_H
|
# define TOKEN_H
|
||||||
|
|
||||||
# define TOKEN_WORD 0b000001
|
# define TK_WORD 0x001
|
||||||
# define TOKEN_OPERATOR 0b000010
|
# define TK_NEWLINE 0x002
|
||||||
|
# define TK_IOHERE 0b00000100
|
||||||
|
# define TK_DLESS 0b00001000
|
||||||
|
# define TK_DGREAT 0b00010000
|
||||||
|
# define TK_LESS 0b00100000
|
||||||
|
# define TK_GREAT 0b00100000
|
||||||
|
# define TK_LESSAND 0b00100000
|
||||||
|
# define TK_GREATAND 0b01000000
|
||||||
|
# define TK_OPERATOR 0b01111100
|
||||||
|
|
||||||
typedef struct s_token t_token;
|
typedef struct s_token t_token;
|
||||||
|
|
||||||
struct s_token
|
struct s_token
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
|
int id;
|
||||||
char *content;
|
char *content;
|
||||||
char *size;
|
char *size;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue