当前位置: 首页 > 科技观察

ArnoldC:一种带有施瓦辛格电影关键词的有趣编程语言

时间:2023-03-15 15:21:00 科技观察

ArnoldC是一种命令式编程语言,带有来自阿诺施瓦辛格电影的基本关键词。用这种语言编写的程序可以使用Parboiled和ASM解析为Java字节码。让我们来看看如何使用这种(蛋疼)有趣的语言。Main方法每个ArnoldC程序都必须有一个main方法。如下:IT'SSHOWTIME[statement]YOUHAVEBEENTERMINATED最简单的ArnoldC程序如下:IT'SSHOWTIMEYOUHAVEBEENTERMINATED语句输出TALKTOTHEHAND语句用于打印出字符串或变量。打印字符串:TALKTOTHEHAND"jobbole"打印变量:TALKTOTHEHANDmyvar声明变量ArnoldC语言中唯一的变量类型是16位有符号整数。必须在声明时赋值。HEYCHRISTMASTREEvariablenameYOUS??ETUSUPinitialvalue@ILIED和@NOPROBLEMO这两个“宏”对应的值是0和1声明两个变量,值分别是0和1HEYCHRISTMASTREEvarFalseYOUS??ETUSUP@ILIEDHEYCHRISTMASTREEvarTrueYOUS??ETUSUP@NOPROBLEMO变量赋值变量赋值语句用如下格式:GETTOTHECHOPPERmyvarHEREISMYINVITATIONfirstOperand[operations]ENOUGHTALKHEREISMYINVITATION用于给栈顶的变量赋值。经过其他操作,最终赋值给变量myvar。算术运算加法GETU操作数减法GETDOWN操作数乘法YOU'REFIRE操作数除法HEHADTOSPLI操作数所有算术运算具有相同的优先级。例如:a=(4+b)*2GETTOTHECHOPPERaHEREISMYINVITATION4GETUPbYOU'REFIRED2ENOUGHTALK#p#逻辑运算真语句的值为1,假语句的值为0。等于YOUARENOTYOUYOUAREMEoperand大于LETOFFSOMESTEAMBENNEToperand或CONSIDERTHATADIVORCEoperand与KNOCKKNOCKoperand比如:a=(b+5)>cGETTOTHECHOPPERaHEREISMYINVITATIONbGETUP5LETOFFSOMESTEAMBENNETcENOUGHTALK比如a=(b||c)&&dGETTOTHECHOPPERaHEREISMYINVITATIONbCONSIDERTHATADIVORCEcKNOCKKNOCKdENOUGHTALK条件语句如果value非0,执行条件分支Ifif(value)[statements]BECAUSEI'MGOINGTOSAYPLEASEvalue[语句]youhavenorespectforlogicifeLSERIF(value)[statimement]else[statements],因为i'moge'mogeTosayPleaseValue[statements]例2必须先计算条件语句的值if(a>b)print“aisgreaterthanb”FORLOGICWhileSTICKAROUNDvalue[statements]CHILL例子打印1到10IT'SSHOWTIMEHEYCHRISTMASTREEisLessThan10YOUSETUSUP@NOPROBLEMOHEYCHRISTMASTREEnYOUSETUSUP0STICKAROUNDisLessThan10GETTOTHECHOPPERnHEREISMYINVITATIONnGETUP1ENOUGHTALKTALKTOTHEHANDnGETTOTHECHOPPERisLessThan10HEREISMYINVITATION10LETOFFSOMESTEAMBENNETnENOUGHTALKCHILLYOUHAVEBEENTERMINATED方法方法必须在主函数外定义方法参数用INEEDYOURCLOTHESYOURBOOTSANDYOURMOTORCYCLE定义。Eachvariablemustbedefinedindividually.GETYOURASSTOMARSisplacedattheendofthemethoddeclaration,indicatingthatthemethodisanon-emptymethod.I’LLBEBACKisRETURN,whichcantakeavariableaccordingtowhetherthemethodisemptyornot.空方法LISTENTOMEVERYCAREFULLYmethodName[Statements]HASTALAVISTA,BABY#p#一个带两个参数的非空方法LISTENTOMEVERYCAREFULLYmethodNameINEEDYOURCLOTHESYOURBOOTSANDYOURMOTORCYCLEarg1INEEDYOURCLOTHESYOURBOOTSANDYOURMOTORCYCLEarg2GETYOURASSTOMARS[Statements]HASTALAVISTA,BABY典型示例更多例子可以在测试包中查看Printingsquaresfrom1to10IT'SSHOWTIMEHEYCHRISTMASTREElimitYOUSETUSUP10HEYCHRISTMASTREEindexYOUSETUSUP1HEYCHRISTMASTREEsquaredYOUSETUSUP1HEYCHRISTMASTREEloopYOUSETUSUP@NOPROBLEMOSTICKAROUNDloopGETTOTHECHOPPERsquaredHEREISMYINVITATIONindexYOU'REFIREDindexENOUGHTALKTALKTOTHEHANDsquaredGETTOTHECHOPPERloopHEREISMYINVITATIONlimitLETOFFSOMESTEAMBENNETindexENOUGHTALKGETTOTHECHOPPERindexHEREISMYINVITATIONindexGETUP1ENOUGHTALKCHILLYOUHAVEBEENTERMINATED申明一个modulo函数,并在主函数调用它IT'SSHOWTIMEHEYCHRISTMASTREEresult1YOUSETUSUP0HEYCHRISTMASTREEresult2YOUSETUSUP0HEYCHRISTMASTREEresult3YOUSETUSUP0HEYCHRISTMASTREEresult4YOUSETUSUP0GETYOURASSTOMARSresult1DOITNOWmodulo94TALKTOTHEHANDresult1GETYOURASSTOMARSresult2DOITNOWmodulo479587TALKTOTHEHANDresult2GETYOURASSTOMARSresult3DOITNOWmodulo3978221TALKTOTHEHANDresult3GETYOURASSTOMARSresult4DOITNOWmodulo5559345TALKTOTHEHANDresult4YOUHAVEBEENTERMINATEDLISTENTOMEVERYCAREFULLYmoduloINEEDYOURCLOTHESYOURBOOTSANDYOURMOTORCYCLEdividendINEEDYOURCLOTHESYOURBOOTSANDYOURMOTORCYCLEdivisorGIVETHESEPEOPLEAIRHEYCHRISTMASTREEquotientYOUSETUSUP0HEYCHRISTMASTREEremainderYOUSETUSUP0HEYCHRISTMASTREEproductYOUSETUSUP0GETTOTHECHOPPERquotientHEREISMYINVITATIONdividendHEHADTOSPLITdivisorENOUGHTALKGETTOTHECHOPPERproductHEREISMYINVITATIONdivisorYOU'REFIREDquotientENOUGHTALKGETTOTHECHOPPERremainderHEREISMYINVITATIONdividendGETDOWNproductENOUGHTALKI'LLBEBACKremainderHASTALAVISTA,BABY原文链接:https://github.com/lhartikk/ArnoldC/wiki/ArnoldC译文链接:http://blog.jobbole.com/60440/