-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

自制編程語言 基于C語言

( 簡體 字)
作者:鄭鋼類別:1. -> 程式設計 -> 綜合
譯者:
出版社:人民郵電出版社自制編程語言 基于C語言 3dWoo書號: 49753
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:9/1/2018
頁數:438
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787115487377
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

內 容 提 要
本書是一本專門介紹自制編程語言的圖書,書中深入淺出地講述了如何開發一門編程語言,以及運行這門編程語言的虛擬機。本書主要內容包括:腳本語言的功能、詞法分析器、類、對象、原生方法、自上而下算符優先、語法分析、語義分析、虛擬機、內建類、垃圾回收、命令行及調試等技術。
本書適合程序員閱讀,也適合對編程語言原理感興趣的計算機從業人員學習。
目錄:

第0章 一些可能令人迷惑的問題 1
0.0 成功的基石不是堅持,而是“不放棄” 1
0.1 你懂編程語言的“心”嗎 2
0.2 編程語言的來歷 2
0.3 語言一定要用更底層的語言來編寫嗎 2
0.4 編譯型程序和腳本程序的異同 8
0.5 腳本語言的分類 10
0.6 為什么CPU要用數字而不是字符串作為指令 11
0.7 為什么腳本語言比編譯型語言慢 11
0.8 既然腳本語言比較慢,為什么大家還要用 12
0.9 什么是中間代碼 12
0.10 什么是編譯器的前端、后端 13
0.11 詞法分析、語法分析、語義分析和生成代碼并不是串行執行 13
0.12 什么是符號表 14
0.13 什么是關系中的閉包 14
0.14 什么是程序中的閉包 15
0.15 什么是字母表 16
0.16 什么是語言 17
0.17 正規式就是正則表達式 17
0.18 什么是正規(表達)式和正規集 17
0.19 什么是有窮自動機 18
0.20 有窮自動機與詞法分析的關系 19
0.21 詞法分析用有窮自動機(有窮狀態自動機)的弊端 19
0.22 什么是文法 20
0.23 BNF和EBNF,非終結符和終結符,開始符號及產生式 21
0.24 什么是句型、句子、短語 23
0.25 什么是語法分析 24
0.26 語法分析中的推導和歸約為什么都要最“左” 25
0.27 什么是語義分析 26
0.28 什么是語法制導 27
0.29 詞法分析器吃的是lex,擠出來的是token 27
0.30 什么是“遍” 28
0.31 文法為什么可以變換 28
0.32 為什么消除左遞歸和提取左因子 28
0.33 FIRST集、FOLLOW集、LL(1)文法 29
0.34 最右推導、最左歸約、句柄 31
0.35 算符優先分析法 32
0.36 算符優先文法 33
0.37 非終結符中常常定義的因子和項是什么 33
0.38 什么是抽象語法樹 33
0.39 編譯器如何使用或實現文法中的產生式 34
0.40 程序計數器pc與ip的區別 35
第 1章 設計一種面向對象腳本語言 36
1.1 腳本語言的功能 36
1.2 關鍵字 37
1.3 腳本的執行方式 38
1.4 “純手工”的開發環境 38
1.5 定義sparrow語言的文法 38
第2章 實現詞法分析器 46
2.1 柔性數組 46
2.2 什么是字節序 47
2.3 一些基礎的數據結構(本節源碼stepByStep/c2/a) 48
2.4 定義虛擬機結構(本節源碼stepByStep/c2/b) 56
2.5 實現源碼讀取(本節源碼stepByStep/c2/c) 57
2.6 unicode與UTF-8 59
2.6.1 什么是unicode 59
2.6.2 什么是UTF-8 59
2.6.3 UTF-8編碼規則 60
2.6.4 實現UTF-8編碼、解碼(本節源碼stepByStep/c2/d) 61
2.7 實現詞法分析器parser(本節源碼stepByStep/c2/e) 66
2.7.1 lex和token 66
2.7.2 字符串和字符串內嵌表達式 66
2.7.3 單詞識別流程 67
2.7.4 定義token和parser 68
2.7.5 解析關鍵字及獲取字符 71
2.7.6 解析標識符和unicode碼點 73
2.7.7 解析字符串、內嵌表達式、轉義字符 75
2.7.8 跳過注釋和空行 77
2.7.9 獲取token 79
2.7.10 token匹配和初始化parser 84
2.8 構建主程序(本節源碼stepByStep/c2/f) 85
2.9 編譯、測試(本節源碼stepByStep/c2/f) 88
2.9.1 一個簡單的makefile 88
2.9.2 測試paser 92
第3章 類與對象 95
3.1 對象在C語言中的概貌 95
3.2 實現對象頭(本節源碼stepByStep/c3/a) 96
3.3 實現class定義(本節源碼stepByStep/c3/a) 99
3.4 實現字符串對象(本節源碼stepByStep/c3/a) 101
3.5 模塊對象和實例對象(本節源碼stepByStep/c3/a) 103
3.6 upvalue、openUpvalue和closedUpvalue 106
3.7 實現函數對象、閉包對象與調用框架(本節源碼stepByStep/c3/a) 107
3.8 完善詞法分析器之數字解析(本節源碼stepByStep/c3/b) 111
3.9 完善詞法分析器之字符串解析和獲取token(本節源碼stepByStep/c3/b) 114
3.10 最終版詞法分析器的功能驗證(本節源碼stepByStep/c3/b) 116
3.11 實現list列表對象(本節源碼stepByStep/c3/c) 118
3.12 range對象(本節源碼stepByStep/c3/c) 121
3.13 遲到的class.c(本節源碼stepByStep/c3/c) 122
3.14 map對象(本節源碼stepByStep/c3/c) 124
3.14.1 哈希表 124
3.14.2 map對象頭文件及entry 125
3.14.3 沖突探測鏈與偽刪除 126
3.14.4 map對象的實現 128
3.15 線程對象(本節源碼stepByStep/c3/c) 134
3.15.1 線程、協程淺述 134
3.15.2 運行時棧 137
3.15.3 用戶線程的實現 138
第4章 原生方法及基礎實現 142
4.1 解釋器流程(本節源碼stepBystep/c4/a) 142
4.2 符號表 144
4.2.1 模塊的符號表 144
4.2.2 類方法的符號表 144
4.2.3 模塊變量符號表 146
4.2.4 局部變量符號表 147
4.2.5 常量符號表 147
4.3 方法在運行時棧中的參數 147
4.4 定義模塊變量(本節源碼stepByStep/c4/b) 148
4.5 原生方法(本節源碼stepByStep/c4/b) 154
4.5.1 定義裸類 154
4.5.2 定義返回值與方法綁定的宏 155
4.5.3 定義原生方法 157
4.5.4 符號表操作 159
4.5.5 定義類、綁定方法、綁定基類 160
4.6 元類及實現(本節源碼stepByStep/c4/b) 161
4.6.1 meta-class類、class類、object類 161
4.6.2 創建元類,綁定類方法 163
4.7 加載模塊(本節源碼stepByStep/c4/c) 164
4.8 虛擬機簡介 166
4.8.1 虛擬機分類及優缺點 166
4.8.2 為什么要采用虛擬機 168
4.8.3 虛擬機的簡單優化 170
4.9 字節碼 171
第5章 自上而下算符優先——TDOP 177
5.1 自上而下算符優先—TDOP 177
5.2 來自Douglas Crockford的教程 177
5.3 TDOP原理 194
5.3.1 一些概念 194
5.3.2 一個小例子 196
5.3.3 expression的思想 197
5.3.4 while(rbp < token.lbp)的意義 200
5.3.5 進入expression時當前token的類別 201
5.3.6 TDOP總結 202
第6章 實現語法分析與語義分析 204
6.1 定義指令(本節源碼stepByStep/c6/a) 204
6.2 核心腳本(本節源碼stepByStep/c6/a) 206
6.3 寫入指令(本節源碼stepByStep/c6/a) 212
6.4 編譯模塊(本節源碼stepByStep/c6/a) 216
6.5 語義分析的本質 218
6.6 注冊編譯函數(本節源碼stepByStep/c6/b) 218
6.7 賦值運算的條件 221
6.8 實現expression及其周邊(本節源碼stepByStep/c6/c) 223
6.9 局部變量作用域管理 228
6.10 變量聲明、中綴、前綴及混合運算符方法簽名(本節源碼stepByStep/c6/d) 229
6.11 解析標識符(本節源碼stepByStep/c6/e) 233
6.11.1 處理參數列表及相關 233
6.11.2 實現運算符和標識符的簽名函數 235
6.11.3 upvalue的查找與添加 239
6.11.4 變量的加載與存儲 242
6.11.5 編譯代碼塊及結束編譯單元 243
6.11.6 各種方法調用 246
6.11.7 標識符的編譯 249
6.12 編譯內嵌表達式(本節源碼stepByStep/c6/f) 256
6.13 編譯bool及null(本節源碼stepByStep/c6/g) 258
6.14 this、繼承、基類(本節源碼stepByStep/c6/h) 259
6.15 編譯小括號、中括號及list列表字面量(本節源碼stepByStep/c6/i) 260
6.16 編譯方法調用和map字面量(本節源碼stepByStep/c6/j) 263
6.17 編譯數學運算符(本節源碼stepByStep/c6/k) 266
6.18 編譯變量定義(本節源碼stepByStep/c6/l) 270
6.19 編譯語句 274
6.19.1 編譯if語句(本節源碼stepByStep/c6/m) 274
6.19.2 編譯while語句(本節源碼stepByStep/c6/n) 275
6.19.3 編譯return、break和continue語句(本節源碼stepByStep/c6/o) 280
6.19.4 編譯for循環語句(本節源碼stepByStep/c6/p) 284
6.19.5 編譯代碼塊及單一語句(本節源碼stepByStep/c6/q) 288
6.20 編譯類定義(本節源碼stepByStep/c6/r) 289
6.20.1 方法的聲明與定義 289
6.20.2 構造函數與創建對象 291
6.20.3 編譯方法 293
6.20.4 編譯類定義 296
6.21 編譯函數定義(本節源碼stepByStep/c6/s) 298
6.22 編譯模塊導入(本節源碼stepByStep/c6/t) 300
第7章 虛擬機 306
7.1 創建類與堆棧框架(本節源碼stepByStep/c7/a) 306
7.2 upvalue的創建與關閉(本節源碼stepByStep/c7/b) 309
7.3 修正操作數(本節源碼stepByStep/c7/c) 312
7.4 執行指令(本節源碼stepByStep/c7/d) 314
7.4.1 一些基礎工作 314
7.4.2 解碼、譯碼、執行(本節源碼stepByStep/c7/d) 316
7.5 運行虛擬機(本節源碼stepByStep/c7/e) 334
第8章 內建類及其方法 337
8.1 Bool類及其方法(本節源碼stepByStep/c8/a) 337
8.2 線程類及其方法(本節源碼stepByStep/c8/b) 338
8.3 函數類及其方法和函數調用重載(本節源碼stepByStep/c8/c) 345
8.4 Null類及其方法(本節源碼stepByStep/c8/d) 347
8.5 Num類及其方法(本節源碼stepByStep/c8/e) 348
8.6 String類及其方法(本節源碼stepByStep/c8/f) 355
8.7 List類及其方法(本節源碼stepByStep/c8/g) 369
8.8 Map類及其方法(本節源碼stepByStep/c8/h) 374
8.9 range類及其方法(本節源碼stepByStep/c8/i) 380
8.10 System類及其方法(本節源碼stepByStep/c8/j) 383
8.11 收尾與測試(本節源碼stepByStep/c8/k) 388
第9章 垃圾回收 393
9.1 垃圾回收淺述 393
9.2 理論基礎 395
9.3 標記—清掃回收算法 396
9.4 一些基礎結構(本節源碼stepByStep/c9/a) 397
9.5 實現GC(本節源碼stepByStep/c9/a) 400
9.6 添加臨時根對象與觸發GC 411
第 10章 命令行及調試 415
10.1 釋放虛擬機(本節源碼stepByStep/c10/a) 415
10.2 簡單的命令行界面(本節源碼stepByStep/c10/a) 415
10.3 調試(本節源碼stepByStep/c10/b) 417
序: