3.1 - Giving Meaning to Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.2 - Strategies of Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.3 - A Tree-Walking Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.4 - Representing Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Foundation of our Object System . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.5 - Evaluating Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Integer Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Completing the REPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Boolean Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Prex Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Inx Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.6 - Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
3.7 - Return Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.8 - Abort! Abort! There’s been a mistake!, or: Error Handling . . . . . . . . . . . . 131
3.9 - Bindings & The Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.10 - Functions & Function Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.11 - Who’s taking the trash out? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4 Extending the Interpreter 152
4.1 - Data Types & Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.2 - Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Supporting Strings in our Lexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Parsing Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Evaluating Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
String Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.3 - Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
4.4 - Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Supporting Arrays in our Lexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Parsing Array Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Parsing Index Operator Expressions . . . . . . . . . . . . . . . . . . . . . . . . . 169
Evaluating Array Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Evaluating Index Operator Expressions . . . . . . . . . . . . . . . . . . . . . . . 174
Adding Built-in Functions for Arrays . . . . . . . . . . . . . . . . . . . . . . . . . 177
Test-Driving Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
4.5 - Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Lexing Hash Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Parsing Hash Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Hashing Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Evaluating Hash Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Evaluating Index Expressions With Hashes . . . . . . . . . . . . . . . . . . . . . 195
4.6 - The Grand Finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Resources 200
Feedback 202
Changelog 203
2
评论0
最新资源