Data update
This commit is contained in:
parent
52a6ef48dd
commit
157b70a810
604 changed files with 14253 additions and 2100 deletions
|
|
@ -86,11 +86,10 @@ BEGIN # Brain**** -> Algol 68 transpiler #
|
|||
# get the code to transpile and output it as a comment at the start #
|
||||
# of the code #
|
||||
print( ( "CO BF> " ) );
|
||||
STRING code list;
|
||||
read( ( code list, newline ) );
|
||||
print( ( newline, code list, newline, "CO", newline ) );
|
||||
STRING bf code;
|
||||
read( ( bf code, newline ) );
|
||||
print( ( newline, bf code, newline, "CO", newline ) );
|
||||
# transpile the code #
|
||||
generate( code list )
|
||||
|
||||
generate( bf code )
|
||||
|
||||
END
|
||||
|
|
|
|||
39
Task/Execute-Brain-/Pike/execute-brain-.pike
Normal file
39
Task/Execute-Brain-/Pike/execute-brain-.pike
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
string prog = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.";
|
||||
|
||||
void main() {
|
||||
array tape = allocate(30000);
|
||||
int p;
|
||||
int l = strlen(prog);
|
||||
for (int i = 0; i < l; i++) {
|
||||
switch (prog[i]) {
|
||||
case '>':
|
||||
p++;
|
||||
break;
|
||||
case '<':
|
||||
p--;
|
||||
break;
|
||||
case '+':
|
||||
tape[p]++;
|
||||
break;
|
||||
case '-':
|
||||
tape[p]--;
|
||||
break;
|
||||
case '.':
|
||||
write(sprintf("%c", tape[p])); // ascii only
|
||||
break;
|
||||
case ',':
|
||||
tape[p] = Stdio.stdin.getchar();
|
||||
break;
|
||||
case '[':
|
||||
if (!tape[p])
|
||||
for (int nest = 1; nest;)
|
||||
prog[--i] == ']' ? nest-- : prog[i] == '[' ? nest++ : 0;
|
||||
break;
|
||||
case ']':
|
||||
if (tape[p])
|
||||
for (int nest = 1; nest;)
|
||||
prog[--i] == '[' ? nest-- : prog[i] == ']' ? nest++ : 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
70
Task/Execute-Brain-/Visual-Basic-.NET/execute-brain-.vb
Normal file
70
Task/Execute-Brain-/Visual-Basic-.NET/execute-brain-.vb
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
Imports System
|
||||
|
||||
Module Program
|
||||
Sub Main(args As String())
|
||||
Brainfug("++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.")
|
||||
End Sub
|
||||
|
||||
Sub Brainfug(code As String, Optional input As String = Nothing)
|
||||
Dim inp As Integer = 1 ' input pointer if we use an input string
|
||||
Dim tape(29999) As Integer ' yes, 29999 makes an array of 30000
|
||||
Dim p As Integer
|
||||
For i = 1 To code.Length
|
||||
Dim c As Char = Mid(code, i, 1)
|
||||
Select c
|
||||
Case ">"
|
||||
p += 1
|
||||
Case "<"
|
||||
p -= 1
|
||||
Case "+"
|
||||
tape(p) += 1
|
||||
Case "-"
|
||||
tape(p) -= 1
|
||||
Case "."
|
||||
Try
|
||||
Console.Write(Chr(tape(p)))
|
||||
Catch ex As NotSupportedException
|
||||
Console.Write(".")
|
||||
End Try
|
||||
Case ","
|
||||
If input Is Nothing then
|
||||
tape(p) = Console.Read()
|
||||
Else
|
||||
Try
|
||||
tape(p) = AscW(Mid(input, inp, 1))
|
||||
Catch ex As ArgumentException
|
||||
Console.WriteLine("Panic: Out of input!")
|
||||
Environment.Exit(1)
|
||||
End Try
|
||||
inp += 1
|
||||
End If
|
||||
Case "["
|
||||
If tape(p) = 0
|
||||
Dim nest = 1
|
||||
While nest
|
||||
i += 1
|
||||
Select Mid(code, i, 1)
|
||||
Case "]"
|
||||
nest -= 1
|
||||
Case "["
|
||||
nest += 1
|
||||
End Select
|
||||
End While
|
||||
End If
|
||||
Case "]"
|
||||
If tape(p) <> 0
|
||||
Dim nest = 1
|
||||
While nest
|
||||
i -= 1
|
||||
Select Mid(code, i, 1)
|
||||
Case "["
|
||||
nest -= 1
|
||||
Case "]"
|
||||
nest += 1
|
||||
End Select
|
||||
End While
|
||||
End If
|
||||
End Select
|
||||
Next
|
||||
End Sub
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue