enable includes to have multiple targets #35
13
semen.scm
13
semen.scm
@@ -72,7 +72,7 @@
|
|||||||
((or ('var . _)
|
((or ('var . _)
|
||||||
('pub 'var . _)
|
('pub 'var . _)
|
||||||
('extern 'var . _)) (process-global-var sex-form acc))
|
('extern 'var . _)) (process-global-var sex-form acc))
|
||||||
(('include _) (cons sex-form acc))
|
(('include . includes) (process-includes sex-form includes acc))
|
||||||
((or ('define name . _)
|
((or ('define name . _)
|
||||||
('pub 'define name . _))
|
('pub 'define name . _))
|
||||||
(add-define name sex-form)
|
(add-define name sex-form)
|
||||||
@@ -92,6 +92,17 @@
|
|||||||
|
|
||||||
(else (sex-error sex-form "unknown top level form" sex-form))))
|
(else (sex-error sex-form "unknown top level form" sex-form))))
|
||||||
|
|
||||||
|
(define (process-includes sex-form includes acc)
|
||||||
|
;; consume (include ...) form and add to acc
|
||||||
|
;; (include <inc>) for each include
|
||||||
|
(let process ((includes includes)
|
||||||
|
(acc acc))
|
||||||
|
(if (null? includes)
|
||||||
|
acc
|
||||||
|
(process (cdr includes)
|
||||||
|
(cons (copy-form-source! sex-form `(include ,(car includes)))
|
||||||
|
acc)))))
|
||||||
|
|
||||||
(define (process-imports module-public-forms acc)
|
(define (process-imports module-public-forms acc)
|
||||||
;; consume (import ...) form and process imports so
|
;; consume (import ...) form and process imports so
|
||||||
;; data types end up in types db
|
;; data types end up in types db
|
||||||
|
|||||||
@@ -115,4 +115,17 @@
|
|||||||
(union t-doc-val ((i int) (f float))))
|
(union t-doc-val ((i int) (f float))))
|
||||||
(semen-process
|
(semen-process
|
||||||
'((union t-doc-val "Either." ((i int) (f float))))))
|
'((union t-doc-val "Either." ((i int) (f float))))))
|
||||||
|
|
||||||
|
;; Includes
|
||||||
|
(test '((include stdio.h))
|
||||||
|
(semen-process
|
||||||
|
'((include stdio.h))))
|
||||||
|
(test '((include stdio.h)
|
||||||
|
(include stdlib.h))
|
||||||
|
(semen-process
|
||||||
|
'((include stdio.h
|
||||||
|
stdlib.h))))
|
||||||
|
(test '()
|
||||||
|
(semen-process
|
||||||
|
'((include))))
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user