fbpx

從頭開始建立一個解析器

Contents

一種程式語言的遞迴解析器

從這 2.5 小時的課程,你會學到

  • Recursive-descent 的解析器
  • 為一種完整的程式語言建立解析器
  • 自上而下的解析
  • 抽象語法樹(AST)
  • 不同的AST格式
  • 左旋遞迴
  • 符號化器和符號
  • 正則表示式規範

要求

  • 基本資料結構和演算法

課程說明

解析或句法分析是設計和實現編譯器的首要階段之一。一個精心設計的程式語言的語法是使用者喜歡和選擇你的語言的重要原因。

注意:這是一個關於建構手動 Recursive-descent 解析器的實踐課。如果你對解析理論和自動演算法感興趣,你也可以考慮[ 解析演算法 ]課程。

Recursive-descent 解析器是在許多營運性程式語言中被廣泛使用的解析器組。與自動解析演算法相比,手動實現可以完全控制解析過程,並處理複雜的結構,這在自動解析器中可能是不可能的。

此外,從頭開始實現一個完整的手動解析器,可以從內部理解和看到這個過程,解開內部結構的神秘感,並把建構解析器變成一個有趣的工程任務。

在從頭開始構建解析器的課程中,我們將深入到純粹的實踐中,建構和學習解析器的不同方面。

在這門課上,你將學習 Recursive-descent 解析的概念,瞭解什麼是標記器以及它如何與解析器模組合作,學習什麼是抽象語法樹(AST),以及這些AST的不同格式,什麼是 “lookahead “和預測性解析,並最終為一種完整的程式語言建立一個解析器,類似於 Java 或 JavaScript。

實現一個解析器也將使你對其他程式語言的實際使用更加專業。

這個課程是為誰開設的?

這門課是為任何好奇的工程師準備的,他們想獲得建立複雜系統的技能(為程式語言建立解析器是一項相當高階的工程任務!),並獲得建立這種系統的可轉移知識。

如果你對編譯器、直譯器和原始碼轉換工具特別感興趣,那麼這個課程也適合你。

這門課的先決條件是基本資料結構和演算法:樹、列表、遍歷和正規表示式。

用什麼來實現?

由於我們建立的語言在語法上與 JavaScript 或 Java 非常相似,所以我們專門使用 JavaScript -它優雅的多正規化結構結合了函數語言程式設計、基於類別和基於原型的OOP,非常適合於此。

許多工程師都熟悉 JavaScript,所以應該更容易馬上開始編寫程式。然而,我們並沒有使用非常針對 JS 的結構,所以解析器的實現可以很容易地轉移到你選擇的任何其他語言中。

注意:我們希望我們的學生能夠真正遵循、理解並自己實現解析器的每一個細節,而不是僅僅複製貼上最後的解決方案。該語言的完整原始碼可在影片講座中獲得,展示並指導如何建構特定的模組。

這門課的具體內容是什麼?

這些講座的主要特點是。

  • 簡明扼要,直奔主題:每個講座都是自成一體,簡明扼要,描述與主題直接相關的資訊,不會在不相關的材料或講座上分散注意力。
  • 動畫展示與現場編輯筆記相結合:這使得對主題的理解更加容易,並顯示出物件結構是如何(以及在什麼時候)連結的。靜態的幻燈片對複雜的內容根本不起作用
  • 帶有作業的現場編碼課程端到端:完整的原始碼,從零開始,一直到最後,都在課堂的影片講座中呈現。

課程有哪些內容?

該課程分為四個部分,共18個講座,每個講座都有許多子主題。以下是內容和課程表。

第一部分:基本表示式和標記器

在這一部分中,我們描述了基本的表示式,如數字和字串,還建立了 Tokenizer 模組,用正規表示式操作。

第2部分:程式結構

在這一部分中,我們談論了程式結構,如語句和語句列表,區塊和遞迴生產規則。此外,我們還討論了不同的AST格式,並開始建構更複雜的表示式。

第三部分:控制流程和函式

在這一部分中,我們實現了變數、賦值、運算子優先順序,並介紹了函式的抽象。此外,我們還定義了控制結構,如If-statement和迭代迴圈。

第四部分:物件導向程式設計

課程的最後部分,我們實現類別和物件,談論屬性和陣列訪問。此外,我們還實現了通用函式和方法呼叫,並建立了最終的解析器可執行程式。

目標受眾

  • 任何好奇的工程師

講師簡介

Dmitry Soshnikov 軟體工程師和講師 ( 更多講師線上課程介紹 )

Dmitry Soshnikov 是一名軟體工程師,也是一名有不同於電腦科學主題的講師。

他對教育充滿熱情,注重高品質的教育內容: 簡明扼要,並使用現場編輯筆記的動畫講座。

你會從 Dimitry 的課程學到:

  • 編譯器和直譯器: 建立一個程式語言
  • 垃圾收集器(自動記憶體管理)
  • 程式設計語言理論
  • 自動機理論: 建立一個 RegExp 機器
  • 解析器理論: 實現一個編譯器編譯程式

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

🙌 如何有效率地管理 ChatGPT 輸出與整理自己的 ChatGPT 提示( prompts )使用情境?LN+ for Web 已經針對 ChatGPT 的整合做最佳化


🙌 讓 Notion AI 成為你線上學習的得力助手,詳細操作請參考 – 使用 Notion AI 功能來為 udemy 的課程做摘要總結


  • 點選這個優惠連結 課程特價 | Udemy 永久擁有課程 NT330 起( 請登入 Udemy|按過“優惠連結”後到”報名參加課程“連結網頁做更新 )
  • Udemy 現在越來越多課程有中文字幕,請參考 Soft & Share 中文線上課程
  • 手機上點選優惠連結看到的價格比電腦上看到的貴
  • $代表當地貨幣, 如在台灣為 NT
  • 點選”報名參加課程”有可能因瀏覽器 cookies 轉久一點或回報錯誤而無法連上,請稍等刷新或重新點選就會出現

報名參加課程

Sponsored by Udemy


也許你會有興趣

不受 FB 演算法影響,歡迎透過 e-mail 訂閱網站更新

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: