ArnoldCは、アーノルド・シュワルツェネッガーの映画を基本キーワードとした命令型プログラミング言語です。この言語で書かれたプログラムは、ParboiledとASMを使ってJavaバイトコードにパースすることができます。
この楽しい言語の使い方をご紹介します。
[]
主な方法
ArnoldCのプログラムには必ずmainメソッドが必要です。これを以下に示します:
IT'S SHOWTIME
[ ]
YOU HAVE BEEN TERMINATED
最もシンプルなArnoldCプログラムは以下の通り:
IT'S SHOWTIME
YOU HAVE BEEN TERMINATED
声明
輸出
TALK TO THE HAND ステートメントは、文字列や変数を出力するために使用します。文字列を出力します:
TALK TO THE HAND "jobbole"
変数を印刷します:
TALK TO THE HAND myvar
変数の宣言
ArnoldCの変数型は16ビット符号付き整数だけです。宣言時に値を代入する必要があります。
HEY CHRISTMAS TREE variablename
YOU SET US UP initialvalue
マクロ」の@I LIEDと@NO PROBLEMOは、値0と1に対応しています。
値 0 と値 1 の 2 つの変数を宣言します。
HEY CHRISTMAS TREE varFalse
YOU SET US UP @I LIED
HEY CHRISTMAS TREE varTrue
YOU SET US UP @NO PROBLEMO
変数の代入
変数代入文には、以下の書式を使用してください:
GET TO THE CHOPPER myvar
HERE IS MY INVITATION firstOperand
[operations]
ENOUGH TALK
HERE IS MY INVITATION は、スタックの一番上にある変数に代入するために使われます。他の操作の後、最終的に変数 myvar に代入されます。
算術演算
追加
GET UP operand
減法的
GET DOWN operand
減算
YOU'RE FIRED operand
わり算
HE HAD TO SPLIT operand
すべての算術演算の優先順位は同じです。例:a = * 2
GET TO THE CHOPPER a
HERE IS MY INVITATION 4
GET UP b
YOU'RE FIRED 2
ENOUGH TALK
#p#
論理演算
真の文の値は1、偽の文の値は0です。
に等しい
YOU ARE NOT YOU YOU ARE ME operand
まさる
LET OFF SOME STEAM BENNET operand
もしかしたら
CONSIDER THAT A DIVORCE operand
とともに
KNOCK KNOCK operand
例:a = > c
GET TO THE CHOPPER a
HERE IS MY INVITATION b
GET UP 5
LET OFF SOME STEAM BENNET c
ENOUGH TALK
例えば、a = && d
GET TO THE CHOPPER a
HERE IS MY INVITATION b
CONSIDER THAT A DIVORCE c
KNOCK KNOCK d
ENOUGH TALK
条件文
値が0以外の場合、条件分岐を実行
もし
if (value) [statements]
BECAUSE I'M GOING TO SAY PLEASE value
[statements]
YOU HAVE NO RESPECT FOR LOGIC
If Else
if (value) [statements] else [statements]
BECAUSE I'M GOING TO SAY PLEASE value
[statements]
BULLSHIT
[statements]
YOU HAVE NO RESPECT FOR LOGIC
例1
if(a) print "a is true"
else print "a is not true"
BECAUSE I'M GOING TO SAY PLEASE a
TALK TO THE HAND "a is true"
BULLSHIT
TALK TO THE HAND "a is not true"
YOU HAVE NO RESPECT FOR LOGIC
例2 条件文の値はまず計算しなければなりません if(a > b) print "a is greater than b"
GET TO THE CHOPPER result
HERE IS MY INVITATION a
LET OFF SOME STEAM BENNET b
ENOUGH TALK
BECAUSE I'M GOING TO SAY PLEASE result
TALK TO THE HAND "a is greater b"
YOU HAVE NO RESPECT FOR LOGIC
一方
STICK AROUND value
[statements]
CHILL
印刷例 1~10
IT'S SHOWTIME
HEY CHRISTMAS TREE isLessThan10
YOU SET US UP @NO PROBLEMO
HEY CHRISTMAS TREE n
YOU SET US UP 0
STICK AROUND isLessThan10
GET TO THE CHOPPER n
HERE IS MY INVITATION n
GET UP 1
ENOUGH TALK
TALK TO THE HAND n
GET TO THE CHOPPER isLessThan10
HERE IS MY INVITATION 10
LET OFF SOME STEAM BENNET n
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED
方法論
メソッドはメイン関数の外で定義する必要があります。メソッドのパラメータは I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE で定義します。GET YOUR ASS TO MARS はメソッド宣言の最後に置かれ、メソッドが空でないことを示します。I'LL BE BACK は RETURN で、メソッドが空かどうかによって変数を運ぶことができます。
手ぶら
LISTEN TO ME VERY CAREFULLY methodName
[Statements]
HASTA LA VISTA, BABY
#p#
2つの引数を持つ空でないメソッド
LISTEN TO ME VERY CAREFULLY methodName
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE arg1
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE arg2
GET YOUR ASS TO MARS
[Statements]
HASTA LA VISTA, BABY
代表例
その他の例はテストパッケージでご覧いただけます。
1から10までの正方形の印刷
IT'S SHOWTIME
HEY CHRISTMAS TREE limit
YOU SET US UP 10
HEY CHRISTMAS TREE index
YOU SET US UP 1
HEY CHRISTMAS TREE squared
YOU SET US UP 1
HEY CHRISTMAS TREE loop
YOU SET US UP @NO PROBLEMO
STICK AROUND loop
GET TO THE CHOPPER squared
HERE IS MY INVITATION index
YOU'RE FIRED index
ENOUGH TALK
TALK TO THE HAND squared
GET TO THE CHOPPER loop
HERE IS MY INVITATION limit
LET OFF SOME STEAM BENNET index
ENOUGH TALK
GET TO THE CHOPPER index
HERE IS MY INVITATION index
GET UP 1
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED
モジュロ関数を宣言し、メイン関数の中で呼び出します。
IT'S SHOWTIME
HEY CHRISTMAS TREE result1
YOU SET US UP 0
HEY CHRISTMAS TREE result2
YOU SET US UP 0
HEY CHRISTMAS TREE result3
YOU SET US UP 0
HEY CHRISTMAS TREE result4
YOU SET US UP 0
GET YOUR ASS TO MARS result1
DO IT NOW modulo 9 4
TALK TO THE HAND result1
GET YOUR ASS TO MARS result2
DO IT NOW modulo 4795 87
TALK TO THE HAND result2
GET YOUR ASS TO MARS result3
DO IT NOW modulo 3978 221
TALK TO THE HAND result3
GET YOUR ASS TO MARS result4
DO IT NOW modulo 5559 345
TALK TO THE HAND result4
YOU HAVE BEEN TERMINATED
LISTEN TO ME VERY CAREFULLY modulo
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE dividend
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE divisor
GIVE THESE PEOPLE AIR
HEY CHRISTMAS TREE quotient
YOU SET US UP 0
HEY CHRISTMAS TREE remainder
YOU SET US UP 0
HEY CHRISTMAS TREE product
YOU SET US UP 0
GET TO THE CHOPPER quotient
HERE IS MY INVITATION dividend
HE HAD TO SPLIT divisor
ENOUGH TALK
GET TO THE CHOPPER product
HERE IS MY INVITATION divisor
YOU'RE FIRED quotient
ENOUGH TALK
GET TO THE CHOPPER remainder
HERE IS MY INVITATION dividend
GET DOWN product
ENOUGH TALK
I'LL BE BACK remainder
HASTA LA VISTA, BABY





