summaryrefslogtreecommitdiff
path: root/cmd/hs/hs.ha
diff options
context:
space:
mode:
authorJulian Hurst <ark@mansus.space>2026-03-28 22:54:01 +0100
committerJulian Hurst <ark@mansus.space>2026-03-28 22:54:01 +0100
commit85ae695db10555d4890556c2abac6c18eb4c2182 (patch)
tree9b5bd87fe8a465b4a2dbe28029829c6284c09969 /cmd/hs/hs.ha
parent474c14c92de165516f4302685e3fa8acc3a64f45 (diff)
downloadrabbitscript-85ae695db10555d4890556c2abac6c18eb4c2182.tar.gz
Handle EOF better
Diffstat (limited to 'cmd/hs/hs.ha')
-rw-r--r--cmd/hs/hs.ha73
1 files changed, 47 insertions, 26 deletions
diff --git a/cmd/hs/hs.ha b/cmd/hs/hs.ha
index c0ad72f..233c54f 100644
--- a/cmd/hs/hs.ha
+++ b/cmd/hs/hs.ha
@@ -12,42 +12,63 @@ export fn main() void = {
state = parser::tokentype::START,
unreadbuf = ['0'...],
unreadcount = 0z,
+ currentline = 1z,
+ end = false,
};
- let ast = parser::parse(&p);
- let ast = match (ast) {
- case let a: parser::ast =>
- yield a;
- case let e: parser::error =>
- fmt::fatal(parser::strerror(e));
- };
- walkast(ast);
+
let it = interpreter::interpreter {
vars = [],
};
- interpreter::interpret(&it, ast);
-
- let ast = parser::parse(&p);
- let ast = match (ast) {
- case let a: parser::ast =>
- yield a;
- case let e: parser::error =>
- fmt::fatal(parser::strerror(e));
+ for (let ast => parser::parse(&p)) {
+ let ast = match (ast) {
+ case let a: parser::ast =>
+ yield a;
+ case let e: parser::error =>
+ fmt::println("poopies")!;
+ fmt::fatal(parser::strerror(e));
+ };
+ interpreter::interpret(&it, ast);
};
- interpreter::interpret(&it, ast);
-
for (let var .. it.vars) {
fmt::printfln("{}: {}", var.0, var.1)!;
};
- let ast = parser::parse(&p);
- let ast = match (ast) {
- case let a: parser::ast =>
- yield a;
- case let e: parser::error =>
- fmt::fatal(parser::strerror(e));
- };
- interpreter::interpret(&it, ast);
+// let ast = parser::parse(&p);
+// let ast = match (ast) {
+// case let a: parser::ast =>
+// yield a;
+// case let e: parser::error =>
+// fmt::fatal(parser::strerror(e));
+// };
+// walkast(ast);
+// let it = interpreter::interpreter {
+// vars = [],
+// };
+//
+// interpreter::interpret(&it, ast);
+//
+// let ast = parser::parse(&p);
+// let ast = match (ast) {
+// case let a: parser::ast =>
+// yield a;
+// case let e: parser::error =>
+// fmt::fatal(parser::strerror(e));
+// };
+// interpreter::interpret(&it, ast);
+//
+// for (let var .. it.vars) {
+// fmt::printfln("{}: {}", var.0, var.1)!;
+// };
+//
+// let ast = parser::parse(&p);
+// let ast = match (ast) {
+// case let a: parser::ast =>
+// yield a;
+// case let e: parser::error =>
+// fmt::fatal(parser::strerror(e));
+// };
+ //interpreter::interpret(&it, ast);
//let tk = parsetoken(&p);
//fmt::printfln("tk value: {}\ntk type: {}", tk.value, parser::strtktype(tk.tktype))!;