func main[] : I64 // https://brainfuck.org/sierpinski.b let src: String = "++++++++[>+>++++<<-]>++>>+<[-[>>+<<-]+>>]>+[-<<<[->[+[-]+>++>>>-<<]<[<]>>++++++[<<+++++>>-]+<<++.[-]<<]>.>+[>>]>+]" let src_len: I64 = c.strlen(src) let i: I64 = 0 let memory: Ptr = c.calloc(1, 30000) let p: I64 = 0 while i < src_len let op: U8 = str.nth(src, i) if op == '>' p = p + 1 else if op == '<' p = p - 1 else if op == '+' str.set(memory, p, str.nth(memory, p)+1) else if op == '-' str.set(memory, p, str.nth(memory, p)-1) else if op == '.' c.printf("%c", str.nth(memory, p)) else if op == ',' str.set(memory, p, c.getchar()) else if op == '[' if !str.nth(memory, p) i = i + 1 let opened: I64 = 0 while i < src_len & !(str.nth(src, i) == ']' & !opened) if str.nth(src, i) == '[' opened = opened + 1 else if str.nth(src, i) == ']' opened = opened - 1 i = i + 1 else if op == ']' if str.nth(memory, p) i = i - 1 let closed: I64 = 0 while i >= 0 & !(str.nth(src, i) == '[' & !closed) if str.nth(src, i) == ']' closed = closed + 1 else if str.nth(src, i) == '[' closed = closed - 1 i = i - 1 i = i + 1 c.free(memory)