ArnoldC:關(guān)鍵字出自斯瓦辛格電影的趣味編程語(yǔ)言
ArnoldC 是一種命令式編程語(yǔ)言,其基本的關(guān)鍵字均出自阿諾·斯瓦辛格的電影。該語(yǔ)言編寫的程序可用 Parboiled 和 ASM 解析成 Java 字節(jié)碼。
下面一起來看看如何使用這種(蛋疼)趣味語(yǔ)言。
Main 方法
每個(gè) ArnoldC 程序必須有一個(gè)main 方法。如下:
- IT'S SHOWTIME
- [語(yǔ)句]
- YOU HAVE BEEN TERMINATED
最簡(jiǎn)單的 ArnoldC 程序如下:
- IT'S SHOWTIME
- YOU HAVE BEEN TERMINATED
語(yǔ)句
輸出
TALK TO THE HAND 語(yǔ)句用于打印輸出字符串或變量。打印字符串:
- TALK TO THE HAND "jobbole"
打印變量:
- TALK TO THE HAND myvar
聲明變量
ArnoldC 語(yǔ)言中唯一的變量類型是 16 位的有符號(hào)整數(shù)。必須在聲明時(shí)賦值。
- HEY CHRISTMAS TREE variablename
- YOU SET US UP initialvalue
@I LIED 和 @NO PROBLEMO 這兩個(gè)“宏” 對(duì)應(yīng)的值是 0 和 1
聲明兩個(gè)變量,值分別是 0 和 1
- HEY CHRISTMAS TREE varFalse
- YOU SET US UP @I LIED
- HEY CHRISTMAS TREE varTrue
- YOU SET US UP @NO PROBLEMO
變量賦值
變量賦值語(yǔ)句用如下格式:
- GET TO THE CHOPPER myvar
- HERE IS MY INVITATION firstOperand
- [operations]
- ENOUGH TALK
HERE IS MY INVITATION 用來對(duì)棧頂?shù)淖兞孔鲑x值。經(jīng)過其他操作,最終賦值給變量 myvar。
算術(shù)操作
加法
- GET UP operand
減法
- GET DOWN operand
乘法
- YOU'RE FIRED operand
除法
- HE HAD TO SPLIT operand
所有算術(shù)操作優(yōu)先級(jí)同一樣。比如: a = (4 + b) * 2
- GET TO THE CHOPPER a
- HERE IS MY INVITATION 4
- GET UP b
- YOU'RE FIRED 2
- ENOUGH TALK
#p#
邏輯操作
真語(yǔ)句的值為 1,假語(yǔ)句的值為 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
條件語(yǔ)句
如果 value 非0,執(zhí)行條件分支
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 條件語(yǔ)句的值必須先計(jì)算 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 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
方法
方法必須在主函數(shù)外定義。方法參數(shù)用 I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE 定義。每個(gè)變量必須單獨(dú)定義。GET YOUR ASS TO MARS 放在方法申明末尾,表明該方法是非空方法。I’LL BE BACK 就是 RETURN,根據(jù)方法是否為空,可以帶一個(gè)變量。
空方法
- LISTEN TO ME VERY CAREFULLY methodName
- [Statements]
- HASTA LA VISTA, BABY
#p#
一個(gè)帶兩個(gè)參數(shù)的非空方法
- 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
典型示例
更多例子可以在測(cè)試包中查看
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
申明一個(gè) modulo 函數(shù),并在主函數(shù)調(diào)用它
- 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