很偶然的一個(gè)想法,在從北京回成都的高鐵上:我想要一個(gè)計(jì)算器。于是在火車(chē)上花了十來(lái)個(gè)小時(shí),完成了一個(gè)模型:能夠處理+-*/的優(yōu)先級(jí),以及“()”,比如:1+(3+2)*4。這已是一年前的故事了;之后支持了函數(shù),便成為了一門(mén)語(yǔ)言(雖然是腳本)。先后經(jīng)過(guò)數(shù)次根本性地修改,便成為了現(xiàn)在本文的主角:一個(gè)基于棧的,支持過(guò)程式、函數(shù)式、面向?qū)ο笕N風(fēng)格的,擁有垃圾收集器的編譯型腳本語(yǔ)言——Xmas。

 

  一、Xmas是什么?

  首先她是“圣誕節(jié)”的簡(jiǎn)稱(chēng),用以紀(jì)念多年前,還在看涼宮春日的憂郁時(shí)的自己(也是通過(guò)其,我第一次知道Xmas,涼宮曾將其畫(huà)在活動(dòng)室的窗戶(hù)上)。

  起先,她只是一顆可以執(zhí)行的抽象語(yǔ)法樹(shù),并且沒(méi)有自己的完整的運(yùn)行時(shí),很多功能都依賴(lài)于宿主系統(tǒng)(C++);后來(lái),她有了自己的字節(jié)碼,便得以從宿主系統(tǒng)獨(dú)立出來(lái),編譯器、虛擬機(jī)、垃圾收集器是各自獨(dú)立的系統(tǒng);現(xiàn)在,加入了lambda、面向?qū)ο蠛?,一堆語(yǔ)法糖接踵而至,也有了一個(gè)更加高效和健壯的GC。

  究其根本,其僅僅由以下單元命令組成(以后會(huì)大量用到):

移動(dòng)開(kāi)發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

push ->入棧
pop ->出棧(實(shí)際中并沒(méi)有這個(gè)操作)set ->修改值(參數(shù)、變量)+-*/% ->操作符call ->函數(shù)調(diào)用ret ->函數(shù)返回goto ->無(wú)條件跳轉(zhuǎn)(如break)jump ->有條件跳轉(zhuǎn)(如if、while)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式