Fix brainf*ck interpreter memory issue
[bob_language.git] / tests / test2.bob
blobf7d05a20d0a9e27ee1739d94fb53f49833ed8c0a
1 fn readProgram()
3 i = 0
4 program = get_chr()
5 ?? (!(program[i] == "\n"))
7 i = i + 1
8 program[i] = get_chr()
10 i = 0
14 fn left()
16 pointer = pointer - 1
20 fn right()
22 pointer = pointer + 1
23 ? (!($data > pointer))
25 $data = $data * 2
27 re 0
31 fn inc()
33 data[pointer] = data[pointer] + 1
36 fn dec()
38 data[pointer] = data[pointer] - 1
41 fn read()
43 data[pointer] = get_chr()
46 fn print()
48 out_str("%s", data[pointer])
52 fn otvaracia()
54 ? (data[pointer] == 0)
56 parCount = 1
57 ?? (!(parCount == 0))
59 line = line + 1
60 ? (program[line] == "[")
62 parCount = parCount + 1
64 ? (program[line] == "]")
66 parCount = parCount - 1
73 fn zatvaracia()
75 ? (!(data[pointer] == 0))
77 parCount = 1
78 ?? (!(parCount == 0))
80 line = line - 1
81 ? (program[line] == "]")
83 parCount = parCount + 1
85 ?(program[line] == "[")
87 parCount = parCount - 1
93 fn BoB()
95 readProgram()
96 line = 0
97 pointer = 0
98 $data = 16
99 ?? (line < $program)
101 command = program[line]
102 ? (command == ">")
104 right()
106 ? (command == "<")
108 left()
110 ? (command == "+")
112 inc()
114 ? (command == "-")
116 dec()
118 ? (command == ".")
120 print()
122 ? (command == ",")
124 read()
126 ? (command == "[")
128 otvaracia()
130 ? (command == "]")
132 zatvaracia()
134 line = line + 1