scsh-0.5/comp-packages.scm

161 lines
3.8 KiB
Scheme

; Copyright (c) 1993, 1994 Richard Kelsey and Jonathan Rees. See file COPYING.
; Package definitions for byte-code compiler and initial image.
; Two basic structures needed to support the compiler.
(define-structure tables general-tables-interface
(open scheme-level-1
bummed-define-record-types
signals
features) ; string-hash, make-immutable!
(files (big general-table))
(optimize auto-integrate))
(define-structure filenames filenames-interface
(open scheme-level-1 signals)
(files (big filename)))
; Type system
(define-structure meta-types meta-types-interface
(open scheme-level-2
bummed-define-record-types tables bitwise
features ;make-immutable!
util signals)
(files (bcomp mtype))
(optimize auto-integrate))
(define-structure interfaces interfaces-interface
(open scheme-level-2 syntactic meta-types
signals bummed-define-record-types tables
weak)
(files (bcomp interface))
(optimize auto-integrate))
; Transforms and operators
(define-structure syntactic
(compound-interface syntactic-interface
nodes-interface)
(open scheme-level-2 meta-types
signals bummed-define-record-types tables fluids
features ;make-immutable!
;; locations ;location?
)
(files (bcomp syntax)
(bcomp schemify))
(optimize auto-integrate))
(define-structure usual-macros usual-macros-interface
(open scheme-level-2
syntactic ;name?, $source-file-name
fluids ;used in definition of %file-name%
tables signals)
(files (bcomp usual)
(bcomp rules)))
(define-structure reconstruction (export node-type reconstruct-type)
(open scheme-level-2
syntactic meta-types
util ; last
signals)
(files (bcomp recon)))
; Package system
(define-structures ((packages packages-interface)
(packages-internal packages-internal-interface))
(open scheme-level-2 syntactic meta-types interfaces
signals bummed-define-record-types tables fluids
util features locations weak)
(files (bcomp package))
(optimize auto-integrate))
(define-structure scan scan-interface
(open scheme-level-2
packages syntactic
usual-macros ; for dealing with (usual-transforms ...)
meta-types
packages-internal
signals fluids tables util
features ;force-output
filenames) ;translate
(files (bcomp scan)
(bcomp undefined))
(optimize auto-integrate))
; Compiler back end
(define-structures ((segments segments-interface)
(debug-data debug-data-interface))
(open scheme-level-2 code-vectors templates
syntactic
architecture
bummed-define-record-types
features ;make-immutable!
records util tables fluids signals)
(files (bcomp segment)
(bcomp state)
(bcomp ddata))
(optimize auto-integrate))
; Byte-code compiler
(define-structure compiler compiler-interface
(open scheme-level-2 syntactic scan meta-types
architecture
packages
packages-internal ;only for structure-package ?
interfaces ;interface-ref
locations ;make-undefined-location
reconstruction
segments
signals
tables
enumerated ;enumerand->name
util ;reduce
fluids
features) ;force-output
(files (bcomp comp)
(bcomp cprim)
(bcomp ctop))
(optimize auto-integrate))
; DEFINE-STRUCTURE and friends
(define-structure defpackage defpackage-interface
(open scheme-level-2
packages syntactic usual-macros types
interfaces
source-file-names ;%file-name%
signals ;error
tables)
(for-syntax (open scheme-level-2 signals)) ;syntax-error
(files (bcomp module-language)
(bcomp config)))
(define-structure types types-interface ;Typing language
(open scheme-level-2 meta-types syntactic loopholes)
(files (bcomp type))
;; (optimize auto-integrate) - doesn't work
)
(define-structure module-system (compound-interface defpackage-interface
types-interface)
(open defpackage types))
; Static linker
(define-structure inline inline-interface
(open scheme-level-2
syntactic
packages
signals)
(files (opt inline)))