all repos

gbf @ cccbd0ebc553e7aa30ef637731c4c736986e7dda

⭐ gleaming brainfuck

gbf/src/gbf.gleam(view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import char
import gbf/eval
import gbf/lexer
import gbf/parser
import gbf/vm
import gleam/io
import gleam/list
import gleam/result
import gleam/string

pub fn main() {
  let input =
    "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."

  let vm =
    input
    |> string.split(on: "")
    |> list.map(char.to_code)
    |> vm.new

  let ast = input |> lexer.new() |> lexer.lex |> parser.parse()
  case ast {
    Error(_) -> panic as "not yay failed"
    Ok(ast) -> {
      use res <- result.try(eval.eval(vm, ast))
      io.println("input: " <> input)
      io.println("input: " <> res.output)

      Ok("")
    }
  }
}