手擼中文代碼解釋器

前言

上一篇分享過一個簡單的輕量級編譯器翻譯。爲了增強本身對編譯原理的理解,最近利用業餘時間實現了一箇中文的代碼解釋器。本篇介紹一下該編譯器的主要內容和實現步驟。
在線演示

由於內容是掛在github上,打開後可能要加載一段時間。如打開較慢,請耐心等待一下.html

項目內容

  1. 項目地址 https://github.com/gamedilong... , 初版爲了簡單且方便有須要的同窗學習,無依賴且沒有使用任何腳手架。代碼也未壓縮。能夠直接在瀏覽器調試。
  2. 該項目命名爲ccc解釋器,主要取中文和編譯器的簡寫。
  3. 主要功能,將中文代碼經過詞法分析,語法分析兩個步驟編譯成抽象語法樹,而後將抽象語法樹

編譯成js代碼執行。node

實現步驟

  1. 實現中文代碼解釋器 生成ast語法樹 (代碼基於acorn.js第一個git log調整修改而來);
  2. 實現代碼生成器 將ast語法樹樹編譯成代碼;
  3. 實現代碼編輯器 經過monaco自定義中文高亮規則實現;
  4. 實現抽象語法樹,控制檯 展現當前抽象語法,及提供打印輸出
  5. 整合如上前面的內容

實現功能

  1. 目前實現了 賦值,表達式,邏輯判斷,函數,循環 等相關語法
  2. 提供 打印,定時器 兩個上下文供測試使用
  3. 在代碼編輯窗口添加代碼後,點擊執行。右側抽象語法樹和控制檯即會生成出對於內容

總結

  1. 該項目的主要目的是將對編譯原理的學習不停留在理論上,經過在已有的開源項目的基礎上的實踐,加深編譯相關理解
  2. 在學習的基礎上作一些發散,後續會新增一些其餘的上下文實現一些有意思的東西。好比,在node環境下添加上下文執行,添加一些界面的上下文經過中文去操做。另外目前的中文語法主要由於是來自於acorn.js,能夠看做js的漢化,後續能夠自定義一些更符合中文語義的語法。
相關文章
相關標籤/搜索