@@ -57,24 +57,20 @@ Hello zecheng! This is the Monkey programming language!
57
57
+ ginkgo (if you want to run local unit tests)
58
58
+ golangci-lint (if you want to do local lint)
59
59
60
- # # Features
60
+ # # Conventions and Features
61
61
62
62
+ Programs can run in REPL or as scripts
63
63
+ Identifiers consist of alphabet letters or underscore
64
64
+ Statements are explicitly end by seminlon ` ; `
65
65
+ Comments start with double slash ` //`
66
- + Syntax errors are caught in a single run
67
66
+ Conditional statements (` if` and ` switch` keywords)
68
67
+ Loops (` for` , ` range` , and ` while` keywords)
69
- + First-class functions
70
- + If expressions
68
+ + First-class functions that allow closures
71
69
+ Prefix operators (binary expressions)
72
70
+ Infix operators (unary expressions)
73
71
+ Postfix operators
74
- + Tree-walking interpreter
75
- + Works on 64-bit machines
76
- + Not production ready yet, need a few more details to be addressed
77
- + Function that allows for closures
72
+ + A Pratt Parser implementation
73
+ + A Tree-walking interpreter
78
74
+ Use Go' s GC to prevent memory leak
79
75
80
76
## Components
@@ -84,9 +80,11 @@ Hello zecheng! This is the Monkey programming language!
84
80
+ Abstract Syntax Tree (AST)
85
81
+ Pratt parser based on context-free grammars and the Backus-Naur-Form
86
82
+ Tree-walking interpreter (evaluator), future: bytecode, VM, and JIT compilation
83
+ + An object system
87
84
88
85
## TODOs
89
86
87
+ + [ ] docs: doc everything related to usage and implementation details
90
88
+ [ ] feat: Unicode
91
89
+ [ ] feat: parsing line, column number for better visibility
92
90
+ [ ] feat: hexical notation and octal notation for integers
0 commit comments