|
@@ -0,0 +1,62 @@
|
|
|
+#include <stdio.h>
|
|
|
+#include <stdlib.h>
|
|
|
+#define true 1
|
|
|
+#define false 0
|
|
|
+#define STR 0
|
|
|
+#define VAR 1
|
|
|
+#define MISC 2
|
|
|
+
|
|
|
+typedef struct token {
|
|
|
+ char *str;
|
|
|
+ char type;
|
|
|
+ struct token *chain;
|
|
|
+} token;
|
|
|
+
|
|
|
+char *spec = "()[]!&^|<>~%?=+-";
|
|
|
+char *char_line;
|
|
|
+token *token_start = NULL;
|
|
|
+token *token_head = NULL;
|
|
|
+
|
|
|
+int get_str_size(char *str) {
|
|
|
+ int size = 0;
|
|
|
+ for (char *s = str; *s != '\0'; s++)
|
|
|
+ size++;
|
|
|
+ return size;
|
|
|
+}
|
|
|
+
|
|
|
+char *get_middle(char *str, int start, int end) {
|
|
|
+ int size = end - start + 1;
|
|
|
+ char *str2 = (char *)malloc(sizeof(char) * size + 1);
|
|
|
+ if (!str2)
|
|
|
+ return NULL;
|
|
|
+ for (int i = 0; i < size; i++)
|
|
|
+ str2[i] = str[start + i];
|
|
|
+ str2[size] = 0;
|
|
|
+ return str2;
|
|
|
+}
|
|
|
+
|
|
|
+int create_token_from_line(int start, int end) {
|
|
|
+ char *str = get_middle(char_line, start, end);
|
|
|
+ if (!str)
|
|
|
+ return 1;
|
|
|
+ token *t = (token *)malloc(sizeof(token));
|
|
|
+ if (!t)
|
|
|
+ return 2;
|
|
|
+ if (!token_start)
|
|
|
+ token_head = t;
|
|
|
+ else if (!token_head)
|
|
|
+ token_start->chain = token_head = t;
|
|
|
+ else {
|
|
|
+ token_head->chain = t;
|
|
|
+ token_head = t;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int Main(char *line) {
|
|
|
+ int start = 0;
|
|
|
+ char mode = MISC;
|
|
|
+ for (int c = 0; c < get_str_size(line); c++) {
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|