summaryrefslogtreecommitdiff
path: root/userland/minibox/utilities/sh/lexer.h
diff options
context:
space:
mode:
Diffstat (limited to 'userland/minibox/utilities/sh/lexer.h')
-rw-r--r--userland/minibox/utilities/sh/lexer.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/userland/minibox/utilities/sh/lexer.h b/userland/minibox/utilities/sh/lexer.h
new file mode 100644
index 0000000..57fb30b
--- /dev/null
+++ b/userland/minibox/utilities/sh/lexer.h
@@ -0,0 +1,24 @@
+#ifndef LEXER_H
+#define LEXER_H
+#include <stddef.h>
+
+typedef enum {
+ TOKEN_CHARS,
+ TOKEN_AND,
+ TOKEN_NOT,
+ TOKEN_NOOP,
+ TOKEN_PIPE,
+ TOKEN_STREAM,
+ TOKEN_STREAM_APPEND,
+} token_type_t;
+
+struct TOKEN {
+ token_type_t type;
+ char string_rep[256];
+ struct TOKEN *next;
+};
+
+struct TOKEN *lex(const char *code);
+struct AST *generate_ast(struct TOKEN *token);
+void free_tokens(struct TOKEN *token);
+#endif // LEXER_H