codebrothers.net :: Home  >  Peter Schneider
User: Guest  Login

News:

Advertisment:

Powered by Smart|MicroBlog.NET
Blog search:  
Brainfuck Interpreter and Compiler in Powershell

Surley some of you know the Brainfuck programming language... there are many compilers and interpreters around, yet I haven’t found some for powershell... so here we go:

Powershell Brainfuck Interpreter:

param ($i)

$t = @{ ’>’=’$p++;’;
’<’=’$p--;’;
’+’=’$m[$p]++’;
’-’=’$m[$p]--’;
’.’=’write-host $([char]$m[$p]) -n ’;
’,’=’$m[$p]=$host.ui.ReadLine() ’;
’[’=’while ($m[$p] -ne 0) {’;
’]’=’}’;
}

$c = ’$p=0;$m=new-object "byte[]" 32768’+"`n" gc $i -Enc Byte -r 1 | % {$c+=$t["$([char]$_)"]+"`n"}

invoke-expression $c

 

Powershell Brainfuck Compiler:

param ( [string] $infile = $(throw "Please specify input file (.b)"),
[string] $outfile = $(throw "Please specify output file (.cs)"),
[switch] $run = $false
)

$csc = (join-path ($env:windir) Microsoft.NET\Framework\v2.0.50727\csc.exe)

$transpose = @{’>’ = ’p++;’;
’<’ = ’p--;’;
’+’ = ’m[p]++;’;
’-’ = ’m[p]--;’;
’.’ = ’Console.Write(m[p]);’;
’,’ = ’m[p]=Console.ReadLine();’;
’[’ = "while (m[p]!=0) {"
’]’ = ’}’;
}

$header = @"
using System;
public class Program {
public static void Main() {
int p=0;
char[] m=new char[32768];
"@

if ($(test-path $outfile)) { rm $outfile | out-null }
$header | out-file $outfile -append

get-content $infile -encoding Byte -readcount 1 |
% { $transpose["$([char]$_)"] } | out-file $outfile -append

"}}" | out-file $outfile -append

& $csc `/target:exe $outfile | out-null

if ($run) {
$outfile = $outfile.Replace(".cs",".exe")
& .`/$outfile
}


Have fun!

Share this post: Email it!
Posted:  4/10/2007 8:25:50 AM  by  pschneider
Tags:  Powershell
[6] comments:
Nikolet said:
Nice site!
3/18/2008 8:46:48 PM
Nice Site! http://google.com
6/30/2008 5:59:38 AM
fico scores said:
Nice Site! http://excellent-credit-card.blogspot.com
7/1/2008 9:13:44 PM
flower1800 said:
PEkhzj fdasjhgadghi hdagh iao hiasoh fgiash isafohsa
7/22/2008 8:46:01 AM
google said:
Here is google. He is nice. Thanks.
1/18/2009 1:06:19 PM
google said:
Here is google. He is nice. Thanks.
1/18/2009 1:26:17 PM
Leave a Comment

Name required

Your URL

Comments (required)