MyLang 語言 -- 本身的語言

 

函數和方法是一個東西:算法

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
相關文章
相關標籤/搜索