2014年4月13日日曜日

RubyでBF処理系

最近Rubyを勉強してます

require 'io/console'
memory = Array.new(30000, 0)
pointer = 0
director = 0
code = open(ARGV[0], "r").read
while director < code.size
char = code[director]
case char
when ">"
if pointer == 29999
exit
end
pointer += 1
when "<"
if pointer == 0
exit
end
pointer -= 1
when "+"
memory[pointer] += 1
when "-"
memory[pointer] -= 1
when "."
print memory[pointer].chr
when ","
memory[pointer] = getch.ord
when "["
if memory[pointer] == 0
bracket = 1
while bracket != 0
director += 1
bracket += 1 if code[director] == "["
bracket -= 1 if code[director] == "]"
end
end
when "]"
bracket = 1
while bracket != 0
director -= 1
bracket += 1 if code[director] == "]"
bracket -= 1 if code[director] == "["
end
director -= 1
end
director += 1
end
view raw bfr.rb hosted with ❤ by GitHub

バグってたらコメントとか下さい

0 件のコメント:

コメントを投稿