Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
118
Task/Execute-Brain-/Never/execute-brain-.never
Normal file
118
Task/Execute-Brain-/Never/execute-brain-.never
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
record BFI
|
||||
{
|
||||
cmd : char;
|
||||
next : BFI;
|
||||
jmp : BFI;
|
||||
}
|
||||
|
||||
record MEM
|
||||
{
|
||||
val : int;
|
||||
next : MEM;
|
||||
prev : MEM;
|
||||
}
|
||||
|
||||
func compile(prog : string) -> BFI
|
||||
{
|
||||
var i = 0;
|
||||
var n = BFI;
|
||||
var p = BFI;
|
||||
var j = BFI;
|
||||
var pgm = BFI;
|
||||
|
||||
for (i = 0; i < length(prog); i = i + 1) {
|
||||
n = BFI('0', nil, nil);
|
||||
|
||||
if (p != nil) {
|
||||
p.next = n
|
||||
} else {
|
||||
pgm = n
|
||||
};
|
||||
|
||||
n.cmd = prog[i];
|
||||
p = n;
|
||||
|
||||
if (prog[i] == '[') {
|
||||
n.jmp = j;
|
||||
j = n;
|
||||
0
|
||||
} else if (prog[i] == ']') {
|
||||
n.jmp = j;
|
||||
j = j.jmp;
|
||||
n.jmp.jmp = n;
|
||||
0
|
||||
} else {
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
pgm
|
||||
}
|
||||
|
||||
func exec(pgm : BFI) -> int
|
||||
{
|
||||
var m = MEM(0, nil, nil);
|
||||
var n = BFI;
|
||||
|
||||
for (n = pgm; n != nil; n = n.next) {
|
||||
if (n.cmd == '+') {
|
||||
m.val = m.val + 1
|
||||
} else if (n.cmd == '-') {
|
||||
m.val = m.val - 1
|
||||
} else if (n.cmd == '.') {
|
||||
printc(chr(m.val));
|
||||
0
|
||||
} else if (n.cmd == ',') {
|
||||
m.val = read()
|
||||
} else if (n.cmd == '[') {
|
||||
if (m.val == 0) {
|
||||
n = n.jmp;
|
||||
0
|
||||
} else {
|
||||
0
|
||||
}
|
||||
} else if (n.cmd == ']') {
|
||||
if (m.val != 0) {
|
||||
n = n.jmp;
|
||||
0
|
||||
} else {
|
||||
0
|
||||
}
|
||||
} else if (n.cmd == '<') {
|
||||
m = m.prev;
|
||||
0
|
||||
} else if (n.cmd == '>') {
|
||||
if (m.next == nil) {
|
||||
m.next = MEM(0, nil, nil);
|
||||
m.next.prev = m;
|
||||
0
|
||||
} else {
|
||||
0
|
||||
};
|
||||
|
||||
m = m.next;
|
||||
0
|
||||
} else {
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
0
|
||||
}
|
||||
|
||||
func run(prog : string) -> int
|
||||
{
|
||||
var pgm = BFI;
|
||||
|
||||
pgm = compile(prog);
|
||||
exec(pgm);
|
||||
|
||||
0
|
||||
}
|
||||
|
||||
func main() -> int
|
||||
{
|
||||
/* Hello World! */
|
||||
run("++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.");
|
||||
0
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue