diff options
Diffstat (limited to 'cmd/hs')
| -rw-r--r-- | cmd/hs/hs.ha | 73 |
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))!; |
