aboutsummaryrefslogtreecommitdiff
path: root/test_mini/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'test_mini/lexer.c')
-rw-r--r--test_mini/lexer.c112
1 files changed, 112 insertions, 0 deletions
diff --git a/test_mini/lexer.c b/test_mini/lexer.c
new file mode 100644
index 0000000..c847c1d
--- /dev/null
+++ b/test_mini/lexer.c
@@ -0,0 +1,112 @@
+
+#include "lexer.h"
+#include "parse/parse.h"
+
+
+int len_is_not_sep(char *input)
+{
+ int i;
+
+ i = -1;
+ while(input[++i])
+ {
+ if (lexer_sep(input[i]))
+ {
+ if (input[i + 1] == ' ')
+ while(input[++i] == ' ')
+ ;
+ return(i);
+ }
+ if (input[i] == '\'' || input[i] == '"')
+ {
+ i = lexer_verif_entre_cote(input, i);
+ if (input[i] == ' ')
+ return(i + 1);
+ return(i);
+ }
+ if (input[i] == ' ')
+ {
+ while(input[++i] == ' ')
+ ;
+ return (i);
+ }
+ }
+ return(i);
+}
+
+int check_input(char *input)
+{
+ int i;
+
+ i = 0;
+ if (lexer_sep(input[i]))
+ {
+ while(input[i] == input[i + 1])
+ i++;
+ i += lexe_space(&input[i + 1]);
+ return (i + 1);
+ }
+ if (input[i] == 39 || input[i] == '"')
+ return(lexer_verif_entre_cote(input, i));
+ if (input[i] == ' ')
+ {
+ while(input[++i] == ' ')
+ ;
+ return (i);
+ }
+ return(len_is_not_sep(&input[i]));
+}
+
+void check_input_out(char *input)
+{
+ int i;
+ int j;
+ char *str;
+
+ i = 0;
+ while(input[i] != '\0')
+ {
+ j = 0;
+ j += len_is_not_sep(&input[i]);
+ if (j != 0)
+ {
+ str = malloc(sizeof(char) * j + 1);
+ ft_strlcpy(str, &input[i], j + 1);
+ printf("%s%d\n",str, j);
+ free(str);
+ }
+ i += j;
+ j = check_input(&input[i]);
+ str = malloc(sizeof(char) * j + 1);
+ ft_strlcpy(str, &input[i], j + 1);
+ printf("%s%d\n",str, j);
+ free(str);
+ i += j;
+ }
+
+}
+
+t_token *create_token_list(void)
+{
+ t_token *lst_token;
+
+ if (!(lst_token = malloc(sizeof(t_token) * 1)))
+ return (NULL);
+
+ free(lst_token);
+ return (lst_token);
+}
+
+t_ftlst *lexer(char *input)
+{
+ t_ftlst *lst;
+
+ if (!input)
+ return (0);
+ if(!(lst = malloc(sizeof(t_ftlst) * 1)))
+ return(NULL);
+
+ check_input_out(input);
+ free(lst);
+ return (0);
+}