南寧微信網(wǎng)站制作周口網(wǎng)絡推廣哪家好
一:概述
編譯器通常分為兩部分——前端和后端。在本文中,我們將實現(xiàn)編程語言的前端部分——即主要處理源語言的部分。我們將學習現(xiàn)實世界編譯器使用的技術,并將其應用到我們的編程語言中。
本文將從定義編程語言的語法開始,最終生成一個抽象語法樹(AST),這是代碼生成的基礎。我們可以將這種方法應用于其他編程語言。
在本章中,我們將學習以下內容:
- 定義一個真正的編程語言,我們將學習tinylang語言,它是一個真實編程語言的子集,將為它實現(xiàn)一個編譯器前端
- 組織編譯器項目的目錄結構
- 知道如何處理編譯器的多個輸入文件
- 具備處理用戶消息并以愉悅的方式告知他們
- 使用模塊化組件構建詞法分析器(lexer)
- 從語法規(guī)則出發(fā)構建遞歸下降解析器,進行語法分析
- 通過創(chuàng)建AST并分析其特征來進行語義分析
通過本文介紹的知識,我們將能夠為任何編程語言構建編譯器前端。
二:使用BNF文法定義一個語言
為了深入了解細節(jié),在本文中,我們將定義一個支持泛型(generics)和面向對象編程(OOP)的語言。我們將這個語言稱為 tinylang。