ArnoldC:關鍵字出自斯瓦辛格電影的趣味編程語言

jopen 10年前發布 | 7K 次閱讀 編程語言

        英文原文:ArnoldC

        ArnoldC 是一種命令式編程語言,其基本的關鍵字均出自阿諾·斯瓦辛格的電影。該語言編寫的程序可用 Parboiled 和 ASM 解析成 Java 字節碼。

        下面一起來看看如何使用這種蛋疼趣味語言。

ArnoldC:關鍵字出自斯瓦辛格電影的趣味編程語言

        Main 方法

        每個 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 "cnblogs"

        打印變量:

TALK TO THE HAND myvar

        聲明變量

        ArnoldC 語言中唯一的變量類型是 16 位的有符號整數。必須在聲明時賦值。

HEY CHRISTMAS TREE variablename
YOU SET US UP initialvalue

        @I LIED 和 @NO PROBLEMO 這兩個“宏” 對應的值是  0 和 1

        聲明兩個變量,值分別是 0 和 1

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 = (4 + b) * 2

GET TO THE CHOPPER a
HERE IS MY INVITATION 4 GET UP b
YOU'RE FIRED 2 ENOUGH TALK

        邏輯操作

        真語句的值為 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 = (b + 5) > c

GET TO THE CHOPPER a
HERE IS MY INVITATION b
GET UP 5 LET OFF SOME STEAM BENNET c
ENOUGH TALK

        比如 a = (b c) && d

GET TO THE CHOPPER a
HERE IS MY INVITATION b
CONSIDER THAT A DIVORCE c
KNOCK KNOCK d
ENOUGH TALK

        條件語句

        如果 value 非0,執行條件分支

        If

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

        While

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

        一個帶兩個參數的非空方法

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

        典型示例

        更多例子可以在測試包中查看

        Printing squares from 1 to 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

        申明一個 modulo 函數,并在主函數調用它

IT'S SHOWTIME HEY CHRISTMAS TREE result1
YOU SET US UP  HEY CHRISTMAS TREE result2
YOU SET US UP  HEY CHRISTMAS TREE result3
YOU SET US UP  HEY CHRISTMAS TREE result4
YOU SET US UP  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  HEY CHRISTMAS TREE remainder
YOU SET US UP  HEY CHRISTMAS TREE product
YOU SET US UP  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

        翻譯: 伯樂在線 - 黃利民

        譯文鏈接: http://blog.jobbole.com/60440/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!