=Lambda語言 =
第一次語法規範'
Lambda'語,是一種以嚴謹和簡潔為發展方向的輔助語。'
目前,其構詞法及詞根仍未定義,本文例句採用英語詞彙作為語法演示使用。
一、記法約定'
1'、等價符號'
本文中,使用「=」來表示等價的概念。
若「a=b」則,a與b在任何情況下可以互相替換使用。
2'、形式函數'
本文中,由於詞彙尚未完成,使用的詞彙名稱將全部被視為代號,具體詞彙請參見詞彙表(待構建)。
二、基本概念'
1、段落'
稱「{」及「}」括起的部分為一個段落。允許嵌套。
例如:{cut2 i0 apple0}
2'、句子'
稱以不是任何其他語法單位的參數的獨立單位開頭的一組詞彙為一個句子。
例如:
cut2 i0 apple0 eat2 i0 apple0
為兩個句子:
cut2 i0 apple0
eat2 i0 apple0
3'、獨立單位'
完整句子中,每個獨立單位是使用空格分隔文字。
「give3 he0 red1 `apple0 me0」 有五個獨立單位
基於詞彙的函數性質,每個獨立單位有且僅有三個部分:前項,中項,後項
其中,前項和後項都為數字,中項為字符。
例如,在』1give3『中,前項為『1』,中項為『give’,後項為『3』。
本語言在「獨立單位」方面,存在三個語法糖:
後項語法糖:後項若為零則可省略:『apple0』=『apple’
後項為零是一個語法糖:apple0=apple1 `obj
前項語法糖:前項若無需指定時可以省略。
4'、語法單位'
本語言中,每個獨立單位都是函數,其後項為其表示的函數所需參數個數。
而其指明的參數個數指的是其後跟隨的語法單位的個數。
一個完整的句子,其語法單位的劃分可以依如下劃分過程遞歸地定義:
首先定義一個劃分函數t
t具有以下劃分規則:
規則一: an=(an)n即』apple0』=』(apple0)0』
規則二:t[(a)0 b c…]=(a)0 t[b c…]
規則三:t[(a)n b0 c d…]=t[(a b)n-1 c d..。]
規則四:t[(a)n bn c d…]=t[an t[bn c d …]]
其中a,b,c,d…分別匹配一個』獨立單位『。
a匹配任何獨立單位。
(a)0匹配後項為零的獨立單位,例如』apple0『或『apple’。
(a)n匹配後項不為零的獨立單位,例如,可匹配』run1』或』cut2』或』give3』,不能匹配』apple0』
而(a)n可以匹配』(apple)0『也可匹配』(give)3』或』(give he)2』
另外,每次劃分首先執行最內層(嵌套層數最深)的劃分。
最終劃分完畢後,在每一層括號中,每一個『獨立單位『都是一個『語法單位』。
例句:
give3 he red1 `apple me
t[give3 he red1 `apple me]
=t[give3 he0 red1 `apple0 me0] (後項語法糖)
=t[(give3)3 he0 red1 `apple0 me0] (規則一)
=t[(give3 he0)2 red1 `apple0 me0] (規則三)
=t[(give3 he0)2 t[red1 `apple0 me0]] (規則四)
=t[(give3 he0)2 t[(red1)1 `apple0 me0]] (規則一)
=t[(give3 he0)2 t[(red1 `apple0)0 me0]] (規則三)
=t[(give3 he0)2 (red1 `apple0)0 t[me0]] (規則二)
=t[(give3 he0)2 (red1 `apple0)0 t[(me0)0]] (規則一)
=t[(give3 he0)2 (red1 `apple0)0 (me0)0] (規則二)
=t[(give3 he0 (red1 `apple0)0)1 (me0)0] (規則三)
=t[(give3 he0 (red1 `apple0)0 (me0)0)0] (規則三)
=(give3 he0 (red1 `apple0)0 (me0)0)0 (規則二)
=(give3 he (red1 `apple0) me) (後項語法糖)
至此,劃分完畢。
可得:
』give3』所需的三個參數(語法單位)為:『he0』 『me0』 『(red apple0)』
『red1』所需的一個參數(語法單位)為』apple0』
整句譯為:「他給我一個紅蘋果」
本質上而言,語法單位的劃分和使用獨立單位後項僅是為了避免大量使用括號的語法糖。
另一種可能的類似的語法糖使用縮進,則上述句子可表示如下:
give he
red `apple
me
三、語法'
A.'詞語類型:'
在本語言中,任何詞彙都是函數,因此,後文未特別說明,「函數」指代「詞彙(語)」。
例如:
『apple』 在其他語言中為名詞,在本語言中記為為 『apple0』,其含義為一個接受零個參數,返回一個 『蘋果類對象』 的函數。
『run『 在其他語言中為動詞,在本語言中應記為『run1』, 其含義為一個接受一個參數的函數,在這裡,該參數為一個「指示動作發出者」的語法單位。使用起來形如「run1 person0」,譯為「有一個人跑步」。
『cut』 在其他語言中為動詞,在本語言中應記為『cut2』, 其含義為一個接受兩個參數的函數,在這裡,兩個參數分別為「動作發出者」,」動作接受者「。使用起來形如「cut2 person0 apple0」,譯為「有一個人 切 蘋果」。
B.'函數返回值'
如未特別說明,一般函數的返回值都是一個其他語言中的所謂「主系表」結構:
例如:
eat2 i0 apple0
返回:
一次「吃」動作的發起者是i0並且其動作接收者是apple0
C.'環境和指代'
本語言中,認為形如「我吃他的蘋果」是「我吃蘋果」在「那蘋果是他的「的環境中表現出的意思。
某獨立單位x的環境e,用語法詞」env2 x e」表示,返回附加了環境的x。
本語言中,去除了冠詞,引入了更加自由的指代方式。
仍然考慮「我吃他的蘋果」
若表現為:
env2 eat2 i0 apple0 blg2 apple0 he0 (錯誤示例)
註:blg2 x y 表示 x 的所有權屬於 y
則會出現謬誤:
因為這裡在
eat2 i0 apple0
和
blg2 apple0 he0
中各產生了一個蘋果類對象,我們不能指明他們是同一個蘋果,於是環境聲明變得沒有意義了。
英語中,這通過a 和 the 的泛、特指特性得以避免。
本語言中,使用了即時構造並聲明常數函數的方法達到指代的目的。
通過語法詞」cns2 name value」可以即時構造並聲明一個名字為name的,零參數的,返回value的常數函數,同時,cns的返回值為value。
則上述句子的正確表達為:
env2 eat2 i0 cns2 「1apple」 apple0 blg2 1apple he0
注意在左邊 1apple 聲明時要帶上雙引號,因為其是一個字符串而不是一個函數。
因為其使用之頻繁,有一個語法糖可以幫助寫出更簡潔的表達:
cns2 「1x」 x=1x
該指代方式表現在獨立單位的前項上。
數字的選取在不衝突的前提下是任意的。
cns的聲明的有效範圍是同一段落。
衝突指在同一段落中有兩或多次相同名字的cns聲明。
則例句改寫為:
env2 eat2 i0 1apple0 blg2 1apple he0
選取其他數字亦可(如15):
env2 eat2 i0 15apple0 blg2 15apple he0
另外,鑑於env2 在作為其他語言的的所謂定語(或狀語)使用的頻繁程度,有如下語法糖:
env2 x (an x …)=an `x …
則例句可改寫為:
eat2 i0 blg2 `apple he0
這應是本語言的一般表達。
D'.被動'
本語言中沒有其他語言中的被動概念,使用一個特殊詞彙』obj』代替
本語言中』obj』是唯一一個非函數對象,其泛指一切東西,包括本語言內的語法現象。
在表達其他語言的被動,如「他被殺了」
表達為:
kill2 obj he
其本質是不指明動作執行者,達到被動句的效果。
E.'按其他語言所謂詞性劃分的詞語性質:'
1、名詞
其他語言作為名詞的成分,通常在本語言表現為一個零參數函數。如「apple0」
2、形容詞或副詞
其他語言作為形容詞的成分,通常在本語言表現為一個一參數函數,如」red1」
3、動詞
本語言,不及物與及物動詞沒有語言層面上的區別。
其他語言作為不及物動詞的成分,通常在本語言表現為一個二參數函數,如「rise2」
其他語言作為及物動詞的成分,通常在本語言表現為一個二參數函數,如「cut2」
其他語言作為需要追加賓語補足語的動詞成分,通常在本語言表現為一個三(或多)參數函數,如」give3「
6、數詞
本語言無數詞,涉及到數字的,統一採用標準數學表達。
在表示數量時,使用「 數字』 」記法,如 3』 apple ,譯為「三個蘋果」。
原則上,任何獨立語法單位前都應加上數量,但出於使用方便,作為語法糖,數量為1的可以省略。
7、序數詞
本語言的序數詞採用「 th1 數字 」函數,例如,第一為「 th1 1 」,第二為」 th1 2」
F'.其他語言中的語法成分(本語言的一般詞彙)'
1、時態
本語言沒有與其他語言相對應的,語言層面的時態變化。
充當時態表示工作的,是以下幾個函數:
pst1 x now1 x fut1 x 分別表示x發生於過去、現在、將來
例如,now1 cut2 i0 apple0 譯為「我切蘋果」
fin1 x ing1 x 分別表示x已完成、正在進行
例如,ing1 now1 cut2 i0 apple0 譯為「我正在切蘋果」
2、中文的「的」
本語言沒有所有格概念,但將中文的「的」拆分為三個函數:
blg2 x y 法律上的歸屬權 x歸屬於y
blg2 desk he 桌子是他的
css2 x y 組成部分 組成y的x
css2 `heart i 我的心臟
val2 x y 外在指標 y的外在指標x
val2 `car speed 車的速度
同時鑑於常用性,保留了所有格代詞,但僅是語法糖:
形如:代詞s
例如 hes1 x=blg2 he `x
3、情態動詞
本語言沒有情態動詞,以一般函數替代:
如:
「能」的意思用函數『able2』表示
(英文)he can run 可以譯為
able2 he run
4、代詞
本語言人稱代詞有:
i0,you0,he0,she0,it0 我、你、他、她、它
群體代詞直接在單數人稱代詞後加』l』
il0,youl0,hel0,shel0 ,theyl0,itl0 我們、你們、他們、她們、他們(性別不限)、它們
5、連詞
本語言連詞包括但不限於:
and2,or2,however2,but2