blog

ArnoldC:スワルツェネッガーの映画をキーワードにした楽しいプログラミング言語

ArnoldCは、アーノルド・シュワルツェネッガーの映画に登場する基本的なキーワードを使った命令型プログラミング言語です。この言語で書かれたプログラムは、ParboiledとASMを使ってJavaバイ...

Aug 22, 2014 · 8 min. read
シェア

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 
Read next

OpenStack ネットワーク構成の設計

OpenStackは、豊富なネットワーク構成環境を提供し、本稿では、クラウドシステムの設計について説明します検討と設計の要件のネットワークの一部です。

Aug 20, 2014 · 6 min read