函數和方法是一個東西:算法
function-name($argument-one, $argument-two) $argument.function-name($argument-two)
若是是一個參數:數組
function-name($argument) $arguemnt.function-name
若是在語法中插入代碼,會增長語法的複雜度嗎?數據結構
如今語法描述中,沒有插入代碼的空間,括號被 Group 佔據,由於鍵盤符號,只有那麼多,好吧,這都不是問題:函數
## grammar rule -> :type Name (type $name)
每次解析到 type Name 的時候,就會動態的添加類型常量,這個數據是解析 my 語法所必須的數據,由於是強類型語言,每一個符號在定義的時候都要聲明其類型。spa
(my @buf Buffer) (struct Cursor |name:int len:int|)
因此,應當給表達式預留一個語法空間,好處理相似的問題。其實插入語法的表達式很簡單,無非是加入關鍵字,這些關鍵字做爲數組,是某種數據類型做爲 Order 解析代碼的組件。code
(push @names $name) (my @names Strs) (say "match new keyword")
語言的語法會一直變化,會變得更簡潔,更有可讀性:io
關於操做符的優先級, 解析它們須要一個比較複雜的算法,是操做語法樹層次的:function
a + b - c * d / e
包聲明變量
(ns package)
引用模塊module
(use module)
類型定義
(type String)
函數定義
(fn (fn-name args:type) :return-type exprs)
變量聲明, 關於多變量同時賦值:在解構一個數據結構時,須要對兩個或以上的變量同時賦值,這很常見:
(my $name value) (my [$name $value] (flat value))
變量賦值和變量聲明不一樣:
$name = $other-name