2010-01-12 (Tuesday) [長年日記]
■ Yet Another Misa
プログラミング言語 Misa というしゅごいぴゅろぎゅらみんぎゅ言語をみちゅけらったのおぉぉぉ!!!
Misa は文法上、Brainf**k というプログラミング言語の亜流言語です。 Brainf**k とは、みさくら語に直訳すれば おつむでち**しごき という意味ですが、Misa は Brainf**k のプログラムもそのまま実行することができます。
あれ?これBrainf**kか。Yet Another Brainfuckの焼き直しで互換処理系作れない?
やってみた。
#!/usr/bin/env ruby # -*- coding: utf-8 -*- # yam.rb - Yet Another Misa iseg = ARGF.read iseg = iseg. gsub(/[^\]」』\[「『\+あぁおぉ-っッ\.!,?>→~ー<←★☆]/, ''). gsub(/[\]」』]/, 'end;'). gsub(/[\[「『]/, 'while dseg[dx] != 0;'). gsub(/[\+あぁおぉ]/, 'dseg[dx] += 1;'). gsub(/[-っッ]/, 'dseg[dx] -= 1;'). gsub(/[\.!]/, 'print dseg[dx].chr;'). gsub(/[,?]/, 'dseg[dx] = $stdin.getc;'). gsub(/[>→~ー]/, 'dx += 1;'). gsub(/[<←★☆]/, 'dx -= 1;') eval(<<INIT + iseg) dseg = Array.new(32768, 0) pc = 0 dx = 0 INIT puts ''
実行結果。
ccarbon% cat hello.misa | ruby1.9 yam.rb yam.rb:17:in `eval': (eval):4: syntax error, unexpected keyword_end, expecting $end (SyntaxError) ...ちしdx += 1;dseg[dx] -= 1;end;がdseg[dx] -= 1;dseg[dx] -=... ... ^ from yam.rb:17:in `<main>' carbon%
ごきげんよう…正規表現が曲がっていましてよ… じゃなくて、たぶん互換処理系のコードにはなっているんだと思うが、 マルチバイトの扱いがうまくいってないように思える。
今日はこれをネタにする予定だったので、もうおわり。 ん、ああ。後日こっそりとなおせそうならなんとかしてみます。 こんなんでチケット切りたくないし…
carbon% ruby1.9 -v ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
そういえば、まったく関係ないんですが、みさくらやが全店閉店するらしいですね。
[ツッコミを入れる]
[]
本日のPingbacks(全0件)








