summaryrefslogtreecommitdiff
path: root/tnslc/compile
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2022-09-20 00:03:32 -0400
committerKyle Gunger <kgunger12@gmail.com>2022-09-20 00:03:32 -0400
commitbe9813b1062c1f9b2c0d13a76d56c41ba984c1db (patch)
treefbfa5b93495c14c646009c92c3b403e639ad9161 /tnslc/compile
parent5582d6427e2bc09b9975615f87cace64ce2d29ca (diff)
Generate a dummy file
Diffstat (limited to 'tnslc/compile')
-rw-r--r--tnslc/compile/compile.tnsl59
-rw-r--r--tnslc/compile/isa_x86.tnsl32
2 files changed, 58 insertions, 33 deletions
diff --git a/tnslc/compile/compile.tnsl b/tnslc/compile/compile.tnsl
index d1f72b4..d7e9416 100644
--- a/tnslc/compile/compile.tnsl
+++ b/tnslc/compile/compile.tnsl
@@ -21,10 +21,67 @@
;/
+/; compile_block (~int cur, ~{}Token data, ~{}charp hsec, csec, dsec)
+ ;hsec`.append('b')
+
+ ;cur`++
+
+ /; loop (cur` < len data`) [cur`++]
+ /; if (string_equate(data`{cur`}.data`, ";/") || string_equate(data`{cur`}.data`, ";;"))
+ ;break
+ ;; else if (string_equate(data`{cur`}.data`, "/;"))
+ ;bool ch = true
+ /; loop (ch)
+ ;compile_block(cur, data, hsec, csec, dsec)
+ ;ch = string_equate(data`{cur`}.data`, ";;")
+ ;/
+ ;; else if (string_equate(data`{cur`}.data`, ";"))
+ ;compile_statement(cur, data, hsec, csec, dsec)
+ ;/
+ ;/
+;/
+
+/; compile_statement (~int cur, ~{}Token data, ~{}charp hsec, csec, dsec)
+ ;csec`.append('c')
+ ;dsec`.append('d')
+;/
+
/; do_compile ({}charp file, ~{}Token data)
- /;
+ ;{}charp hsec = ".global _start\n"
+ ;{}charp csec = ".text\n"
+ ;{}charp dsec = ".data\n"
+
+ ;int j = len data`
+
+ /; loop (int i = 0; i < j) [i++]
+ /; if (string_equate(data`{i}.data`, "/;"))
+ ;compile_block(~i, data, ~hsec, ~csec, ~dsec)
+ ;; else if (string_equate(data`{i}.data`, ";"))
+ ;compile_statement(~i, data, ~hsec, ~csec, ~dsec)
+ ;; else
+ ;break
+ ;/
+ ;/
+
+ ;tnsl.io.File out = tnsl.io.writeFile(file)
+
+ /; loop (int i = 0; i < len hsec) [i++]
+ ;out.write(hsec{i})
+ ;/
+
+ ;out.write('\n')
+ /; loop (int i = 0; i < len csec) [i++]
+ ;out.write(csec{i})
;/
+
+ ;out.write('\n')
+
+ /; loop (int i = 0; i < len dsec) [i++]
+ ;out.write(dsec{i})
+ ;/
+
+ ;out.write('\n')
;/
;struct Symtab {
diff --git a/tnslc/compile/isa_x86.tnsl b/tnslc/compile/isa_x86.tnsl
index 1df9902..bc5d43f 100644
--- a/tnslc/compile/isa_x86.tnsl
+++ b/tnslc/compile/isa_x86.tnsl
@@ -14,35 +14,3 @@
EXPRESS OR IMPLIED
#/
-/; gen_x86 (~Node program, {}charp out)
- ;tnsl.io.File o = tnsl.io.writeFile(out)
-
- ;{}uint8 current = gen_head(program)
- /; loop (int i = 0; i < len current) [i++]
- ;o.write(current{i})
- ;/
-
- ;{}uint8 current = gen_data(program)
- /; loop (int i = 0; i < len current) [i++]
- ;o.write(current{i})
- ;/
-
- ;{}uint8 current = gen_text(program)
- /; loop (int i = 0; i < len current) [i++]
- ;o.write(current{i})
- ;/
-
- ;o.close()
-;/
-
-/; gen_data (~Node program) [{}charp]
-
-;/
-
-/; gen_text (~Node program) [{}charp]
-
-;/
-
-/; gen_head (~Node program) [{}charp]
-
-;/