summaryrefslogtreecommitdiff
path: root/parse.h
diff options
context:
space:
mode:
Diffstat (limited to 'parse.h')
-rw-r--r--parse.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/parse.h b/parse.h
new file mode 100644
index 0000000..8f95b44
--- /dev/null
+++ b/parse.h
@@ -0,0 +1,48 @@
+#pragma once
+
+#include "lex.h"
+#include "typeutils.h"
+
+typedef enum {
+ STDIN_REDIR,
+ STDOUT_REDIR_TRUNC,
+ STDOUT_REDIR_APPEND,
+} RedirKind;
+
+
+typedef struct {
+ RedirKind kind;
+
+ union {
+ Word std_redir_filename;
+ } as;
+} Redirect;
+
+
+DECLARE_VEC(Redirect, RedirectVec)
+
+
+typedef struct {
+ TokenVec args;
+ RedirectVec redirects;
+ // TODO: prefix variable settings
+} Command;
+
+
+typedef enum {
+ CONN_PIPE,
+ CONN_EOL,
+ // TODO: add the |& thingy
+} Connector;
+
+DECLARE_MAYBE(Connector)
+
+typedef struct {
+ Command cmd;
+ Connector conn;
+} PipelineElement;
+
+
+DECLARE_VEC(PipelineElement, Pipeline)
+
+