aboutsummaryrefslogtreecommitdiff
path: root/src/interp/lisplib.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/lisplib.boot')
-rw-r--r--src/interp/lisplib.boot46
1 files changed, 25 insertions, 21 deletions
diff --git a/src/interp/lisplib.boot b/src/interp/lisplib.boot
index 1616a042..4fbf05db 100644
--- a/src/interp/lisplib.boot
+++ b/src/interp/lisplib.boot
@@ -437,8 +437,6 @@ compConLib1(fun,infileOrNil,outfileOrNil,auxOp,editFlag,traceFlag) ==
$LISPLIB: local := 'T
$lisplibAttributes: local := nil
$lisplibPredicates: local := nil
- $lisplibForm: local := nil
- $lisplibAbbreviation: local := nil
$lisplibParents: local := nil
$lisplibAncestors: local := nil
$lisplibModemap: local := nil
@@ -468,8 +466,6 @@ compDefineLisplib(df:=["DEF",[op,:.],:.],m,e,prefix,fal,fn) ==
$op: local := op
$lisplibAttributes: local := nil
$lisplibPredicates: local := nil -- set by makePredicateBitVector
- $lisplibForm: local := nil
- $lisplibAbbreviation: local := nil
$lisplibParents: local := nil
$lisplibAncestors: local := nil
$lisplibModemap: local := nil
@@ -486,7 +482,7 @@ compDefineLisplib(df:=["DEF",[op,:.],:.],m,e,prefix,fal,fn) ==
--will eventually become the "constructorCategory" property in lisplib
--set in compDefineCategory1 if category, otherwise in finalizeLisplib
libName := getConstructorAbbreviation op
- $compileDocumentation => compileDocumentation libName
+ $compileDocumentation => compileDocumentation(op,libName)
sayMSG ['" initializing ",$spadLibFT,:bright libName,
'"for",:bright op]
initializeLisplib libName
@@ -512,13 +508,11 @@ compDefineLisplib(df:=["DEF",[op,:.],:.],m,e,prefix,fal,fn) ==
$newConlist := [op, :$newConlist] ----------> bound in function "compiler"
res
-compileDocumentation libName ==
+compileDocumentation(ctor,libName) ==
filename := MAKE_-INPUT_-FILENAME(libName,$spadLibFT)
$FCOPY(filename,[libName,'DOCLB])
stream := RDEFIOSTREAM [['FILE,libName,'DOCLB],['MODE, :'O]]
- lisplibWrite('"documentation",finalizeDocumentation(),stream)
--- if $lisplibRelatedDomains then
--- lisplibWrite('"relatedDomains",$lisplibRelatedDomains,stream)
+ lisplibWrite('"documentation",finalizeDocumentation ctor,stream)
RSHUT(stream)
RPACKFILE([libName,'DOCLB])
$REPLACE([libName,$spadLibFT],[libName,'DOCLB])
@@ -550,9 +544,21 @@ writeInfo(ctor,info,key,prop,file) ==
LAM_,FILEACTQ(key,expandToVMForm insn)
lisplibWrite(symbolName key,info,file)
+writeKind(ctor,kind,file) ==
+ writeInfo(ctor,kind,'constructorKind,'dbConstructorKind,file)
+
+writeConstructorForm(ctor,form,file) ==
+ writeInfo(ctor,form,'constructorForm,'dbConstructorForm,file)
+
writeSuperDomain(ctor,domPred,file) ==
writeInfo(ctor,domPred,'superDomain,'dbSuperDomain,file)
+writeOperations(ctor,ops,file) ==
+ writeInfo(ctor,ops,'operationAlist,'dbOperations,file)
+
+writeConstructorModemap(ctor,mm,file) ==
+ writeInfo(ctor,mm,'constructorModemap,'dbConstructorModemap,file)
+
++ If compilation produces an error, issue inform user and
++ return to toplevel reader.
leaveIfErrors(libName,kind) ==
@@ -564,22 +570,20 @@ leaveIfErrors(libName,kind) ==
++ Finalize `libName' compilation; returns true if everything is OK.
finalizeLisplib(ctor,libName) ==
kind := dbConstructorKind constructorDB ctor
- lisplibWrite('"constructorForm",removeZeroOne $lisplibForm,$libFile)
- lisplibWrite('"constructorKind",kind,$libFile)
- lisplibWrite('"constructorModemap",removeZeroOne $lisplibModemap,$libFile)
- $lisplibCategory:= $lisplibCategory or $lisplibModemap.mmTarget
+ form := dbConstructorForm constructorDB ctor
+ writeConstructorForm(ctor,form,$libFile)
+ writeKind(ctor,kind,$libFile)
+ writeConstructorModemap(ctor,removeZeroOne $lisplibModemap,$libFile)
+ $lisplibCategory := $lisplibCategory or $lisplibModemap.mmTarget
-- set to target of modemap for package/domain constructors;
-- to the right-hand sides (the definition) for category constructors
lisplibWrite('"constructorCategory",$lisplibCategory,$libFile)
lisplibWrite('"sourceFile",namestring _/EDITFILE,$libFile)
lisplibWrite('"modemaps",removeZeroOne $lisplibModemapAlist,$libFile)
- opsAndAtts:= getConstructorOpsAndAtts(
- $lisplibForm,kind,$lisplibModemap)
- lisplibWrite('"operationAlist",removeZeroOne first opsAndAtts,$libFile)
- --lisplibWrite('"attributes",rest opsAndAtts,$libFile)
- --if kind='category then NRTgenInitialAttributeAlist rest opsAndAtts
+ opsAndAtts := getConstructorOpsAndAtts(form,kind,$lisplibModemap)
+ writeOperations(ctor,removeZeroOne first opsAndAtts,$libFile)
if kind='category then
- $pairlis : local := pairList($lisplibForm,$FormalMapVariableList)
+ $pairlis : local := pairList(form,$FormalMapVariableList)
$NRTslot1PredicateList : local := []
NRTgenInitialAttributeAlist rest opsAndAtts
writeSuperDomain(ctor,dbSuperDomain constructorDB ctor,$libFile)
@@ -588,10 +592,10 @@ finalizeLisplib(ctor,libName) ==
$lisplibVariableAlist),$libFile)
lisplibWrite('"attributes",removeZeroOne $lisplibAttributes,$libFile)
lisplibWrite('"predicates",removeZeroOne $lisplibPredicates,$libFile)
- lisplibWrite('"abbreviation",$lisplibAbbreviation,$libFile)
+ lisplibWrite('"abbreviation",dbAbbreviation constructorDB ctor,$libFile)
lisplibWrite('"parents",removeZeroOne $lisplibParents,$libFile)
lisplibWrite('"ancestors",removeZeroOne $lisplibAncestors,$libFile)
- lisplibWrite('"documentation",finalizeDocumentation(),$libFile)
+ lisplibWrite('"documentation",finalizeDocumentation ctor,$libFile)
lisplibWrite('"slot1Info",removeZeroOne $lisplibSlot1,$libFile)
if $profileCompiler then profileWrite()
leaveIfErrors(libName,kind)