161 lines
3.8 KiB
Scheme
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)))
|