怎樣寫一個新編程語言

怎樣寫一個新編程語言編程

 

編程思想+計算機結構:編程語言

編程思想決定:類型系統(內存佈局)+函數調用解釋;函數

計算機結構:控制結構;佈局

 

編程語言-》編譯器-〉內存模型設計

 

編程範式的肯定指針

類型系統的肯定;協程

內存模型的肯定;遞歸

 

類型系統對應內存;編譯器要完成內存佈局的指令;內存

函數調用對應cpu:編譯器要完成調用約定;作用域

 

編譯器對abi的支持;

 

 

 

類型系統:類型系統與內存模型密切相關;

 

做者:Belleve
連接:https://www.zhihu.com/question/19942085/answer/18200093
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

  1. 語義設計
  2. 語法設計
  3. 實現一個編譯器
實際上,最難的每每是第一步,也就是語義設計,由於它決定了你的語言的最終形態。「語義」的內容會很寬泛,下面這些都是語義的範疇:
  1. 類型系統:是強類型仍是弱類型?靜態類型仍是動態類型?是否有類型推導?若是有,基於哪一種形式系統?是否容許子類型?是否容許遞歸類型?類型轉換的機制如何?等等。
  2. 編程範式:你的語言是過程式(Imperative)仍是聲明式(Declarative)仍是二者結合?對於「聲明式」,是函數式(Functional)仍是邏輯式(Logical)?是否容許元編程?等等。
  3. 存儲:你的語言是否容許用戶干預存儲細節?是否容許指針算數?是否容許手動內存管理?變量(符號)的做用域規則如何?是詞法做用域(Lexical Scoping)仍是動態做用域(Dynamic Scoping)仍是二者結合?
  4. 子程序:你的語言是否有子程序?若是有,他們是不是第一態(First Class)的?參數傳遞是按值傳遞仍是按名傳遞?是否容許按引用傳遞?求值策略是急迫求值仍是懶惰求值?參數之間的求值順序是怎樣?
  5. 流程控制:你的語言是否容許非結構跳轉?是否有內建的異常處理機制?是否有連續體(Continuation)或協程(Coroutine)機制?
https://www.zhihu.com/question/19942085
相關文章
相關標籤/搜索