設計https://www.52fb.cn語言需要用什么?
本人曾經參與過嵌入式專用芯片的C語言編譯器的開發,要想設計一門計算機語言,絕非易事。除了至少精通以下一門語言,比如
CC++Rust你還需要掌握編譯原理,熟讀一本號稱為“龍書”的全英文著作。
原名:Compilers: Principles,Techniques, and Tools作者:Alfred V.Aho, Ravi Sethi, JeffreyD,Ullman中文名:編譯原理技術與工具學習了編譯原理之后,你就會掌握BNF語法,LL(1)左遞歸文法,下面簡單說明下。
文法G是LL(1)的,當且僅當對于G的每個非終結符Α的任何兩個不同產生式 Α→α,Α→β均滿足下面條件(其中α和β不能同時推出ε): 1、FIRST(α)∩FIRST(β)=Φ 2、假若β=>*ε,那么FIRST(α)∩FOLLOW(A)=Φ
活在當下,就可以采用最新的技術棧啦,你需要掌握LLVM框架,low level vm ,底層虛擬機的意思,是一個強大的編譯器https://www.b5b6.com/houduan/,它負責把編譯器中間語言翻譯為機器指令,現在主流的編譯器都是基于llvm開發的,包括clang, swift, rust, go, 華為方舟編譯器等等。
最后需要動手實戰了,推薦閱讀一個叫TinyC的C編譯器。Tiny C Compiler(簡稱TCC, 或Tiny CC)是世界上最小的C語言編譯器,而且是開源的, 小到只有約100K,非常適合學習編譯原理。
別看它小, 功能還是很強. 可以編譯所有C99標準的ANSI C程序 , 支持CPU包括:X86 32或64位, ARM,支持Windows, Linux, OSX.(跨平臺跨系統的能力,比VC強)
TCC是由大牛Fabrice Bellard開發的,這位大牛還開發過 Qemu, FFMpeg (沒有FFMpeg, 就沒有抄它的騰訊視頻,暴風影音...)
TCC主頁: http://bellard.org/tcc/