aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author lemon<lsof@mailbox.org>2022-08-08 16:06:08 +0200
committer lemon<lsof@mailbox.org>2022-08-08 16:06:08 +0200
commitfc55daf22dd890860ac9c1a0a29900977a700df2 (patch)
tree96735ed737ae499c9dbbf54ad7bec44c6a4b6eb0 /src
parentcc325dce01101e8b488cfc7e9fddfe0f778c7e17 (diff)
start self hosted comler
Diffstat (limited to 'src')
-rw-r--r--src/libc.hff7
-rw-r--r--src/main.cff7
-rw-r--r--src/parse.hff18
3 files changed, 32 insertions, 0 deletions
diff --git a/src/libc.hff b/src/libc.hff
new file mode 100644
index 0000000..98a6f3c
--- /dev/null
+++ b/src/libc.hff
@@ -0,0 +1,7 @@
+! stdio.h
+struct 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;
diff --git a/src/main.cff b/src/main.cff
new file mode 100644
index 0000000..1dbbbee
--- /dev/null
+++ b/src/main.cff
@@ -0,0 +1,7 @@
+import "libc.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);
+}
diff --git a/src/parse.hff b/src/parse.hff
new file mode 100644
index 0000000..463dd26
--- /dev/null
+++ b/src/parse.hff
@@ -0,0 +1,18 @@
+struct Loc {
+ fileid u16,
+ idx isize,
+ col int,
+ line int,
+}
+
+#[lax]
+enum TokT {
+ kw_or
+}
+
+struct Tok {
+ t int,
+ u union {
+ i i64
+ },
+}