用Go語言自制編譯器
放下大部頭,換一種方式入門編譯原理
本書是《用Go語言自制解釋器》的續(xù)篇。在自制解釋器時,你已經(jīng)為Monkey語言實現(xiàn)了類C語法、變量綁定、基本數(shù)據(jù)類型、算術(shù)運算、內(nèi)置函數(shù)、閉包等特性。是時候讓Monkey繼續(xù)成長了!在本書中,Monkey將繼續(xù)“進化”,并最終成長為成熟的程序設(shè)計語言。在已有詞法分析器、語法分析器和抽象語法樹的基礎(chǔ)上,你將為Monkey語言定義字節(jié)碼指令,指定操作數(shù),編寫反匯編程序,構(gòu)建執(zhí)行字節(jié)碼的虛擬機。通過動手學(xué)習,你將能夠體驗從無到有實現(xiàn)類C語言的樂趣。
【業(yè)內(nèi)佳評】
編譯器和語言開發(fā)是門檻較高的領(lǐng)域。我作為從業(yè)者,經(jīng)常遇到培養(yǎng)新人卻無法很快上手的問題。這套書很好地解決了此問題,在降低門檻的同時,又不損失豐富性,全面展示了開發(fā)編譯器和程序設(shè)計語言的要素,因此我向所有對此有興趣的讀者推薦這套書。
——史斌(benshi001)
...
放下大部頭,換一種方式入門編譯原理
本書是《用Go語言自制解釋器》的續(xù)篇。在自制解釋器時,你已經(jīng)為Monkey語言實現(xiàn)了類C語法、變量綁定、基本數(shù)據(jù)類型、算術(shù)運算、內(nèi)置函數(shù)、閉包等特性。是時候讓Monkey繼續(xù)成長了!在本書中,Monkey將繼續(xù)“進化”,并最終成長為成熟的程序設(shè)計語言。在已有詞法分析器、語法分析器和抽象語法樹的基礎(chǔ)上,你將為Monkey語言定義字節(jié)碼指令,指定操作數(shù),編寫反匯編程序,構(gòu)建執(zhí)行字節(jié)碼的虛擬機。通過動手學(xué)習,你將能夠體驗從無到有實現(xiàn)類C語言的樂趣。
【業(yè)內(nèi)佳評】
編譯器和語言開發(fā)是門檻較高的領(lǐng)域。我作為從業(yè)者,經(jīng)常遇到培養(yǎng)新人卻無法很快上手的問題。這套書很好地解決了此問題,在降低門檻的同時,又不損失豐富性,全面展示了開發(fā)編譯器和程序設(shè)計語言的要素,因此我向所有對此有興趣的讀者推薦這套書。
——史斌(benshi001)
Go語言全球排名前50的貢獻者
幾年前看SICP的時候,我學(xué)習過如何寫解釋器。在書本上學(xué)習編譯原理的過程是很枯燥的。這套書讓我們可以一邊學(xué)習理論,一邊實踐。我們能夠看到,如何通過親手實現(xiàn)解釋器和編譯器擺脫學(xué)習理論的枯燥過程。
——左書祺(@Draven)
云原生工程師、Kubernetes項目成員、《Go語言設(shè)計與實現(xiàn)》作者
如果你熟悉解釋性語言,同時是Go語言愛好者,那么這套書就是為你編寫的。使用Go語言從零實現(xiàn)一個解釋器/編譯器,不僅讓你明白它們是如何工作的,而且你對Go語言也會有更深的理解。如果能夠跟著書中內(nèi)容實際動手實現(xiàn)一個解釋器/編譯器,那么你的技術(shù)一定會有很大的飛躍。
——徐新華
Go語言中文網(wǎng)站長、公眾號“polarisxu”主理人
程序員的三大浪漫之一就是自制編程語言。得益于Go自身語法的簡潔性和在工程方面的平衡性,這套書通過簡明直接的代碼,一步步地向讀者揭示自制一門編程語言并不是高不可攀的事情。對于想自制編程語言又不想啃編譯原理的讀者,我推薦這套書。
——蒙卓(mengzhuo)
Go項目成員
這是一套很好的書,我曾在學(xué)習Go語言的時候有幸拜讀過?,F(xiàn)在,它終于有中譯本了。自制解釋器和編譯器,一聽就知道是很酷的事情。這套書的成功之處在于,它并非高屋建瓴,而是從零開始帶著我們完成解釋器和編譯器的搭建,實戰(zhàn)性很強。
——啟艦
2017年度CSDN博客之星、前阿里巴巴研發(fā)工程師、“啟艦雜談”主理人
在軟件設(shè)計中,開發(fā)人員經(jīng)常需要開發(fā)一些高度抽象的定制模塊。這些模塊很可能涉及領(lǐng)域特定語言(DSL)的設(shè)計和解析。如果你很熟悉編譯器的各個模塊和運行原理,就可以很輕松地設(shè)計出適配自己項目的DSL。市面上關(guān)于編譯器的書有很多,這些著作往往大而全,但是不易理解。這套書的作者對內(nèi)容設(shè)計得非常精巧,通過從0到1創(chuàng)造一門編程語言來帶領(lǐng)讀者了解解釋器和編譯器的核心原理。我相信,它能給DSL設(shè)計者帶來幫助。
——李正興
騰訊高級工程師
索斯藤·鮑爾(Thorsten Ball)
Sourcegraph軟件工程師,精通多門程序設(shè)計語言,包括Go、C、JavaScript和Ruby,深諳編譯原理、系統(tǒng)編程、Unix、數(shù)據(jù)庫等相關(guān)技術(shù)?,F(xiàn)居德國,長期活躍于歐洲各大技術(shù)大會。
廖彬
畢業(yè)于中國科學(xué)院計算技術(shù)研究所,高級語言虛擬機愛好者,在語言虛擬機領(lǐng)域從事開發(fā)近十年,曾就職于阿里巴巴和騰訊。
