compiler - cccbook/sp GitHub Wiki
編譯器
- 詞彙掃描 (lexer)
- 語法剖析 (parser)
- 代碼產生 (codegen)
手動作法
授課內容
- 先用簡單運算式編譯器講解 BNF, EBNF 語法
- 詞彙掃描 Lexer (Scanner)
- 用 EBNF 語法描述 IF, WHILE, ...
- 觀看更完整的 Lua 程式與語法
- Lua 範例 -- https://en.wikipedia.org/wiki/Lua_(programming_language)
- Lua 語法 -- https://www.lua.org/manual/5.1/manual.html (看 8 – The Complete Syntax of Lua)
- 看 Jack 的程式與語法
- 試著閱讀我的 js 版編譯器 -- https://github.com/cccbook/sp/tree/master/code/nand2tetris/11/js
- 詞彙掃描 -- https://github.com/cccbook/sp/blob/master/code/nand2tetris/11/js/lexer.js
- 語法剖析 -- https://github.com/cccbook/sp/blob/master/code/nand2tetris/11/js/parser.js
- 程式碼產生 -- https://github.com/cccbook/sp/blob/master/code/nand2tetris/11/js/code_generator.js
- 完整編譯器 -- https://github.com/cccbook/sp/blob/master/code/nand2tetris/11/js/compiler.js