aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtest_mini/a.outbin17828 -> 17828 bytes
-rw-r--r--test_mini/cat36
-rw-r--r--test_mini/lexer.c10
-rw-r--r--test_mini/lexer.h9
-rw-r--r--test_mini/lexer_utils.c16
-rw-r--r--test_mini/main.c10
6 files changed, 21 insertions, 60 deletions
diff --git a/test_mini/a.out b/test_mini/a.out
index 9b7deeb..4047164 100755
--- a/test_mini/a.out
+++ b/test_mini/a.out
Binary files differ
diff --git a/test_mini/cat b/test_mini/cat
deleted file mode 100644
index 45dcc70..0000000
--- a/test_mini/cat
+++ /dev/null
@@ -1,36 +0,0 @@
-ARGV:
-[0] ./a.out
-[1] echo
-[2] salutsalut
-[3] parfait
-
-ENV:
-[0] USER=nassimehaddacha
-[1] PATH=/Users/nassimehaddacha/miniconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/nassimehaddacha/miniconda/bin:/Users/nassimehaddacha/miniconda3/condabin
-[2] LOGNAME=nassimehaddacha
-[3] SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VYiVzHotCo/Listeners
-[4] HOME=/Users/nassimehaddacha
-[5] SHELL=/bin/zsh
-[6] __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x62
-[7] TMPDIR=/var/folders/3s/wv71r7ws2hj4d1ss15_3vg4w0000gn/T/
-[8] XPC_SERVICE_NAME=0
-[9] XPC_FLAGS=0x0
-ARGV:
-[0] ./a.out
-[1] echo
-[2] salutsalut
-[3] parfait
-
-ENV:
-[0] USER=nassimehaddacha
-[1] PATH=/Users/nassimehaddacha/miniconda/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/nassimehaddacha/miniconda/bin:/Users/nassimehaddacha/miniconda3/condabin
-[2] LOGNAME=nassimehaddacha
-[3] SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.VYiVzHotCo/Listeners
-[4] HOME=/Users/nassimehaddacha
-[5] SHELL=/bin/zsh
-[6] __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x62
-[7] TMPDIR=/var/folders/3s/wv71r7ws2hj4d1ss15_3vg4w0000gn/T/
-[8] XPC_SERVICE_NAME=0
-[9] XPC_FLAGS=0x0
-echo4
-0
diff --git a/test_mini/lexer.c b/test_mini/lexer.c
index 7e4fad2..35fd384 100644
--- a/test_mini/lexer.c
+++ b/test_mini/lexer.c
@@ -1,7 +1,5 @@
#include "lexer.h"
-#include "parse/parse.h"
-
int len_is_not_sep(char *input)
{
@@ -10,6 +8,9 @@ int len_is_not_sep(char *input)
i = -1;
while(input[++i])
{
+ if (input[i] == '\\')
+ i++;
+
if (input[i] == '\\' && input[i + 1] == ' ')
i += 2;
if (lexer_sep(input[i]))
@@ -41,6 +42,8 @@ int check_input(char *input)
int i;
i = 0;
+ if (input[i] == '\\')
+ i++;
if (lexer_sep(input[i]))
{
while(input[i] == input[i + 1])
@@ -60,7 +63,6 @@ int check_input(char *input)
}
-
int check_input_out(char *input)
{
int i;
@@ -73,9 +75,7 @@ int check_input_out(char *input)
j = 0;
j += len_is_not_sep(&input[i]);
if (j != 0)
- {
return(j);
- }
i += j;
j = check_input(&input[i]);
return(j);
diff --git a/test_mini/lexer.h b/test_mini/lexer.h
index 6ae832c..f1098c8 100644
--- a/test_mini/lexer.h
+++ b/test_mini/lexer.h
@@ -19,6 +19,7 @@ enum e_token_tag
LTAG_STR = 1 << 9,
LTAG_STR_DOUBLE = 1 << 10,
LTAG_STR_SINGLE = 1 << 11,
+ LTAG_STICK = 1 << 12,
};
typedef struct s_token
@@ -29,9 +30,9 @@ typedef struct s_token
} t_token;
t_ftlst *lexer(char *input);
-enum e_token_tag ret_token_sep(char *input, int i);
+enum e_token_tag ret_token(char *input, int i);
enum e_token_tag ret_token_sep_redir_append(char *input, int i);
-int lexer_sep(char input);
-int lexer_verif_entre_cote(char *input, int i);
-int lexe_space(char *input);
+int lexer_sep(char input);
+int lexer_verif_entre_cote(char *input, int i);
+int lexe_space(char *input);
diff --git a/test_mini/lexer_utils.c b/test_mini/lexer_utils.c
index d7fe8f4..19a6923 100644
--- a/test_mini/lexer_utils.c
+++ b/test_mini/lexer_utils.c
@@ -10,7 +10,7 @@ enum e_token_tag ret_token_sep_redir_append(char *input, int i)
}
-enum e_token_tag ret_token_sep(char *input, int i)
+enum e_token_tag ret_token(char *input, int i)
{
if (input[i] == ';')
return(LTAG_AND);
@@ -24,7 +24,10 @@ enum e_token_tag ret_token_sep(char *input, int i)
return(ret_token_sep_redir_append(input,i));
if (input[i] == '<')
return(LTAG_REDIR_IN);
-
+ if (input[i] == '(')
+ return(LTAG_PARENT_OPEN);
+ if (input[i] == ')')
+ return(LTAG_PARENT_CLOSE);
return(0);
}
@@ -66,23 +69,20 @@ static int lex_verif_simple_cote(char *input, int i)
break;
}
if (input[i + 1] == ' ')
- while(input[i] == ' ')
+ while(input[i + 1] == ' ')
i++;
return(i + 1);
}
+
int lexer_verif_entre_cote(char *input, int i)
{
if(input[i] == '\'')
return(lex_verif_simple_cote(input, i));
i++;
while(input[i] != '"' && (input[i] != '\0'))
- {
++i;
- if (input[i] == '\'')
- break;
- }
if (input[i + 1] == ' ')
- while(input[i] == ' ')
+ while(input[i + 1] == ' ')
i++;
return(i + 1);
}
diff --git a/test_mini/main.c b/test_mini/main.c
index a0006d5..fe17a10 100644
--- a/test_mini/main.c
+++ b/test_mini/main.c
@@ -1,20 +1,16 @@
#include "lexer.h"
-#include "parse/parse.h"
int main(int argc, char **argv)
{
int i = 0;
char *input;
- if (!(input = malloc(sizeof(char) * ft_strlen(argv[1]) + 2)))
+ if (!(input = malloc(sizeof(char) * ft_strlen(argv[1]) + 1)))
return(0);
ft_strlcpy(input, argv[1], ft_strlen(argv[1]) + 1);
- i = ft_strlen(input);
- input[i + 1] = '\0';
- printf("%s\n",argv[1] );
- printf("%s\n",input );
- lexer(input);
+
+ lexer(input);
free(input);
exit(0);
return (0);