GMH編程語言
3/30/09
佩服!於今,有兩種國人自己的語言登上了Google Code大雅之堂啊,期待億萬網民走上發達的信息之路。
真的遇上了語言大師啊!不,以後人人都是編程大師,做最簡單的程序員也。只要你明白“草泥馬語”就行。
漢編(史稱“中國人自己的HTML”)已經與“草泥馬”編程語言(腳本語言)達成了諒解備忘錄,表示“三年內開創戈壁上的新矽穀” !哈哈!
附:馬勒戈壁官方編程語言——“草泥馬”的學習指南
A_Brife_To_GrassMudHorse_Language
本文簡要描述了馬勒戈壁官方編程語言:《草泥馬語(暫定名)》的語言規范,語法和技術規格
簡介:什麼是《草泥馬語(暫定名)》
草泥馬語是馬勒戈壁第一款擁有自主知識產權的,以馬勒戈壁上頑強生存的草泥馬們為主體的編程語言:草泥馬語(暫定名)與本日7時正式發行了。草泥馬語語法生動豐富,內容健康活潑,是一門老少皆宜,人人適用的編程語言。它的出現彌補了我戈壁在國際編程語言屆中的一項空白。
草泥馬語是用了先進的JOT(Just Out of Time)編譯引擎,並且運行於Java虛擬機中,運行速度大幅度降低同時,還使用了戈壁內外各種先進技術,使的草泥馬語不十分可靠。
《草泥馬語(暫定名)》的語言規范
草泥馬語是一款根據國外同類型語言“Whitespace”改編(替換關鍵字)而成的全新的編程語言,執行時使用“草泥馬”的不同組合實現不同功能。
PS:在本文還沒有完工之前,可以先看Whitespace語言入門,然後吧其中的[Space]替換成草;[Tab]替換成草;[LF]替換成馬就可以了解草泥馬語的大致用法了。
每個指令都有3部分組成,包括指令頭,指令和可選的操作數
指令頭
草泥馬語的指令頭說明了指令的類型,列表如下:
指令頭 說明 鳥語說明
[草] 棧操作 Stack Manipulation
[泥][草] 數學運算 Arithmetic
[泥][泥] 堆操作 Heap access
[馬] 流程控制 Flow Control
[草][馬] 輸入輸出 I/O
棧操作指令 [指令頭:草]
棧用來存儲指令調用的參數和結果,元素僅限整數,棧高度不限。
指令 操作數 說明 鳥語說明
[草] Number 吧某個數壓棧 Push the number onto the stack
[馬][草] - 複制棧頂元素 Duplicate the top item on the stack
[泥][草] Number 複制第n個元素到棧頂 Copy the nth item on the stack (given by the
argument) onto the top of the stack
[馬][泥] - 交換棧頂兩個元素的位置 Swap the top two items on the stack
[馬][馬] - 銷毀棧頂元素 Discard the top item on the stack
[泥][馬] Number 銷毀棧頂的n個元素,但保持棧頂 Slide n items off the stack, keeping the top item
數學運算指令[指令頭:泥草]
注意,草泥馬語沒有浮點運算,但是整數運算的精度是無限的。
指令 操作數 說明 鳥語說明
[草][草] - 加 Addition
[草][泥] - 減 Subtraction
[草][馬] - 乘 Multiplication
[泥][草] - 除 Integer Division
[泥][泥] - 取模 Modulo
堆操作[指令頭:泥泥]
與棧一樣,堆也只能存儲整數,草泥馬虛擬機(AlpacaVM)最多支持65536個堆元素(0-65535),但是堆元素的大小不限制。
指令 操作數 說明 鳥語說明
[草] - 存儲棧頂元素x到堆空間y中,y是次棧頂元素 Store
[泥] - 獲取堆空間y中的元素,y是次棧頂元素 Retrieve
流程控制[指令頭:馬]
標記一個程序點可以用來進行跳轉或者函數調用,標記是一個任意長度的無符號整數,每個草泥馬文件中,標記應該是唯一的,並且所有調用的標記應當存在。
注意:河蟹這個指令僅僅在河蟹這兩個字連在一起時有效,分開是沒有效果的。
指令 操作數 說明 鳥語說明
[草][草] Label 定義一個標記 Mark a location in the program
[草][泥] Label 調用函數 Call a subroutine
[草][馬] Label 無條件跳轉 Jump unconditionally to a label
[泥][草] Label 如果棧頂元素等於0則跳轉 Jump to a label if the top of the stack is
zero
[泥][泥] Label 如果棧頂元素小於0則跳轉 Jump to a label if the top of the stack is
negative
[泥][馬] - 函數結束,返回調用方 End a subroutine and transfer control back to the
caller
[馬][馬]或者[河蟹] - 無條件結束程序運行 End the program
IO控制[指令頭:草馬]
指令 操作數 說明 鳥語說明
[草][草] - 輸出一個字符到標准輸出 Output the character at the top of the stack
[草][泥] - 輸出一個數字到標准輸出 Output the number at the top of the stack
[泥][草] - 從標准輸入內讀取一個數字(回車結束)並且放到棧頂所對應的堆空間 Read a character and place it in the location given by the top of the stack
[泥][泥] - 從標准輸入內讀取一個字符並且放到棧頂所對應的堆空間 Read a number and place it in the location given by the top of the stack
如何定義操作數
操作數的定義是二進制的整數,對於流程控制指令來說是無符號的,否則是有符號的,第一位為符號位。 定義方法是:草為0;泥為1;馬代表定義結束。對於 符號位,草為正,泥為負。