いまさらながら、ジョジョ言語などを見てやりたくなったので...
完成コード
Brainf*ck
正式名称はあれなので、伏字ですが...
(わからない方はこちらを)
有名な8つの命令だけでかける言語ですね!
これを使っていきます
Brainf*ckの機能をJavaで
ここが一番苦労しました....
処理フロー
File読み込み -> 文字列作成 -> 各文字の読み込み -> 各文字に対する処理
大まかに4つです
-
File読み込み
はcompileFile
メソッド -
文字列作成
と各文字の読み込み
はcompileString
メソッド -
各文字に対する処理
はcompile
メソッド
コード貼ると長くなってしまうので、省略します...ごめんなさい...
詳細はClearBrain.java
に書いてあります
継承クラス作成
うまる言語なので、Umaru
クラスをw
Umaru.java
public class Umaru extends ClearBrain {
public static void main(String[] args) {
Umaru cb = new Umaru(args[0]);
}
public Umaru(String str) {
super(str);
}
@Override
public void initTokenList() {
Token.NEXT.text = "あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!";
Token.PREVIOUS.text = "だらけるのも楽じゃないんだよ!お兄ちゃん!!";
Token.INC.text = "お兄ちゃん!";
Token.DEC.text = "お願いお兄ちゃん!!コンビニで買ってきて?";
Token.GET.text = "ウへへ。。。";
Token.PUT.text = "うまる…きかーーん!!";
Token.LOOP.text = "いちまんえん!!! 何どうしたの!? うまるにワイロは効かないよ!!";
Token.JUMP.text = "人生に、無駄も必要だと考えるうまるです。";
}
}
実行時に引数として、言語のファイルを指定すると、main
メソッドの引数として、取得できます
また、initTokenList
をOverride
すれば、実質なんでもいけますw
うまる言語ファイル
helloworld.umaru
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
いちまんえん!!! 何どうしたの!? うまるにワイロは効かないよ!!
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
だらけるのも楽じゃないんだよ!お兄ちゃん!!
だらけるのも楽じゃないんだよ!お兄ちゃん!!
だらけるのも楽じゃないんだよ!お兄ちゃん!!
お願いお兄ちゃん!!コンビニで買ってきて?
人生に、無駄も必要だと考えるうまるです。
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
うまる…きかーーん!!
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
お兄ちゃん!
お兄ちゃん!
うまる…きかーーん!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
うまる…きかーーん!!
うまる…きかーーん!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
うまる…きかーーん!!
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
お願いお兄ちゃん!!コンビニで買ってきて?
うまる…きかーーん!!
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
うまる…きかーーん!!
だらけるのも楽じゃないんだよ!お兄ちゃん!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
うまる…きかーーん!!
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
うまる…きかーーん!!
お兄ちゃん!
お兄ちゃん!
お兄ちゃん!
うまる…きかーーん!!
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
うまる…きかーーん!!
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
お願いお兄ちゃん!!コンビニで買ってきて?
うまる…きかーーん!!
あーーーーっと!!ここで出ました!!うまる選手必殺のスクリューー泳法ー!!
お兄ちゃん!
うまる…きかーーん!!
長すぎるw
(お兄ちゃんを入れすぎて、うるさくなってますねw)
実行
なにはともあれ、実行です
$ javac Umaru.java
$ java Umaru hellworld.umaru
同時にやるなら
$ javac Umaru.java; java Umaru hellworld.umaru
でいけます
結果
おわかりのとおり...w
Hello, world!
追記
継承クラスはなんでもいけると思って、ジョジョ言語をやって気づいたのですが、定義されてない文字が来た時に無限ループになってしまいます...
(あとで修正せねば...)
参考
プログラミング言語Tippy(Brainf*ckのGroovy実装)
GitHub : brainf*ck-java
Hello_worldプログラムの一覧