kernel: Phase 1 parser — s-expr reader + 54 tests [consumes-lex]
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 49s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 49s
R-1RK lexical syntax: numbers, strings, symbols, #t/#f, (), nested lists,
; comments. Strings wrap as {:knl-string ...} to distinguish from symbols
(bare SX strings). Reader macros deferred to Phase 6 per plan.
Consumes lib/guest/lex.sx character predicates.
This commit is contained in:
@@ -56,9 +56,9 @@ The whole interesting thing: there are no special forms hardcoded in the evaluat
|
||||
## Roadmap
|
||||
|
||||
### Phase 1 — Parser
|
||||
- [ ] S-expression reader with the standard atoms (number, string, symbol, boolean, nil) and lists.
|
||||
- [x] S-expression reader with the standard atoms (number, string, symbol, boolean, nil) and lists.
|
||||
- [ ] Reader macros optional; defer to Phase 6.
|
||||
- [ ] Tests in `lib/kernel/tests/parse.sx`.
|
||||
- [x] Tests in `lib/kernel/tests/parse.sx`.
|
||||
|
||||
### Phase 2 — Core evaluator with first-class environments
|
||||
- [ ] `kernel-eval expr env` — primary entry, walks AST, threads env as a value.
|
||||
@@ -108,7 +108,8 @@ The whole interesting thing: there are no special forms hardcoded in the evaluat
|
||||
- Klisp implementation (Andres Navarro) — pragmatic reference.
|
||||
|
||||
## Progress log
|
||||
_(awaiting Phase 1 — depends on stable env-as-value substrate state)_
|
||||
|
||||
- 2026-05-10 — Phase 1 parser landed. `lib/kernel/parser.sx` reads R-1RK lexical syntax: numbers (int/float/exp), strings (with escapes), symbols (permissive — anything non-delimiting), booleans `#t`/`#f`, the empty list `()`, nested lists, and `;` line comments. Reader macros (`'` `,` `,@`) deferred per plan. AST: numbers/booleans/lists pass through; strings are wrapped as `{:knl-string …}` to distinguish from symbols which are bare SX strings. 54 tests in `lib/kernel/tests/parse.sx` pass via `sx_server.exe` epoch protocol. chisel: consumes-lex (uses `lex-digit?` and `lex-whitespace?` from `lib/guest/lex.sx` — pratt deliberately not consumed because Kernel is plain s-expressions, no precedence climbing).
|
||||
|
||||
## Blockers
|
||||
_(none yet — main risk is substrate gap discovery during Phase 2)_
|
||||
|
||||
Reference in New Issue
Block a user