LoginSignup
0

More than 5 years have passed since last update.

うまる言語(Brainf*ck + java)

Last updated at Posted at 2016-11-30

いまさらながら、ジョジョ言語などを見てやりたくなったので...

完成コード

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メソッドの引数として、取得できます
また、initTokenListOverrideすれば、実質なんでもいけます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プログラムの一覧

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0