add chicken-import support to sex

also fix unquoting to single atom processing wrongly in walk-sex-tree
This commit is contained in:
2025-06-14 14:07:00 +03:00
parent f309f83dbb
commit bd71dcc8a7
3 changed files with 23 additions and 13 deletions

View File

@@ -111,22 +111,27 @@
(else (error "Pub what?"))))
(define (walk-sex-tree form acc)
(case (car form)
((fn) (walk-function form #t acc))
((extern) (walk-extern form acc))
((pub) (walk-public form acc))
((struct union) (walk-struct form acc))
((unquote) (fold (fn (walk-sex-tree x y))
acc
(eval (cadr form))))
(if (list? form)
(case (car form)
((fn) (walk-function form #t acc))
((extern) (walk-extern form acc))
((pub) (walk-public form acc))
((struct union) (walk-struct form acc))
((unquote) (fold (fn (walk-sex-tree x y))
acc
(eval (cadr form))))
(else (append (walk-generic form (list)) acc))))
(else (append (walk-generic form (list)) acc)))
;; only for unquote support
(list (list (atom-to-fmt-c form)))))
(define (process-form form acc)
(case (car form)
((define) (eval form) acc)
((template) (eval form) acc)
((load) (eval form) acc)
((chicken-import)
(eval (cons 'import (cdr form))) acc)
(else
(walk-sex-tree form acc))))