enable includes to have multiple targets
This commit was merged in pull request #35.
This commit is contained in:
13
semen.scm
13
semen.scm
@@ -72,7 +72,7 @@
|
||||
((or ('var . _)
|
||||
('pub 'var . _)
|
||||
('extern 'var . _)) (process-global-var sex-form acc))
|
||||
(('include _) (cons sex-form acc))
|
||||
(('include . includes) (process-includes sex-form includes acc))
|
||||
((or ('define name . _)
|
||||
('pub 'define name . _))
|
||||
(add-define name sex-form)
|
||||
@@ -92,6 +92,17 @@
|
||||
|
||||
(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)
|
||||
;; consume (import ...) form and process imports so
|
||||
;; data types end up in types db
|
||||
|
||||
@@ -115,4 +115,17 @@
|
||||
(union t-doc-val ((i int) (f float))))
|
||||
(semen-process
|
||||
'((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