aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2022-08-08 19:31:35 +0200
committerlemon <lsof@mailbox.org>2022-08-08 19:31:35 +0200
commitdddbdcbeb41777c1e98e37281dddd6f3c89a1280 (patch)
tree6c172f13a3d7d92bc31b8a045d81b7fa7caad007 /src
parentfc55daf22dd890860ac9c1a0a29900977a700df2 (diff)
ok
Diffstat (limited to 'src')
-rw-r--r--src/common.hff12
-rw-r--r--src/libc.hff10
-rw-r--r--src/main.cff8
-rw-r--r--src/parse.cff5
-rw-r--r--src/parse.hff9
5 files changed, 39 insertions, 5 deletions
diff --git a/src/common.hff b/src/common.hff
new file mode 100644
index 0000000..71e3be0
--- /dev/null
+++ b/src/common.hff
@@ -0,0 +1,12 @@
+import "libc.hff";
+
+defmacro assert {
+(ex,s) [ (do
+ if not (ex) {
+ fprintf(stderr, "%s:%d: assertion failed: ", #FILE, #LINE);
+ fprintf(stderr, "`%s'", (s));
+ fprintf(stderr, "\n");
+ abort();
+ }
+) ]
+}
diff --git a/src/libc.hff b/src/libc.hff
index 98a6f3c..f06f4dd 100644
--- a/src/libc.hff
+++ b/src/libc.hff
@@ -1,7 +1,11 @@
! stdio.h
struct FILE;
-extern static stdin FILE,
- stdout FILE,
- stderr FILE;
+extern static stdin *FILE,
+ stdout *FILE,
+ stderr *FILE;
extern fn printf(fmt *const u8, ...) void;
extern fn fprintf(fp *FILE, fmt *const u8, ...) void;
+
+! stdlib.h
+extern fn abort() void;
+extern fn exit(c int) void;
diff --git a/src/main.cff b/src/main.cff
index 1dbbbee..9392a7a 100644
--- a/src/main.cff
+++ b/src/main.cff
@@ -1,7 +1,11 @@
import "libc.hff";
+import "common.hff";
import "parse.hff";
extern fn main(argc int, argv **u8) int {
- let t Tok = { TokT:kw_or, { .i: 1 } };
- printf("%d\n", TokT:kw_or);
+ assert(argc > 1, "args?");
+
+ let p = Parser {};
+ parse(&p, argv[1]);
}
+
diff --git a/src/parse.cff b/src/parse.cff
new file mode 100644
index 0000000..35cccdb
--- /dev/null
+++ b/src/parse.cff
@@ -0,0 +1,5 @@
+import "parse.hff";
+
+extern fn parse(P *Parser, path *const u8) [#]Decl {
+ return {};
+}
diff --git a/src/parse.hff b/src/parse.hff
index 463dd26..9976df3 100644
--- a/src/parse.hff
+++ b/src/parse.hff
@@ -16,3 +16,12 @@ struct Tok {
i i64
},
}
+
+struct Decl {
+}
+
+struct Parser {
+
+}
+
+extern fn parse(P *Parser, path *const u8) [#]Decl;