(FILECREATED " 4-Nov-86 11:42:22" ("compiled on " {DSK}NCPATH.;4) "12-Nov-85 14:59:23" recompiled changes: NCPath.FSM.PathCollect NCPath.FSM.RealPathCollect NCPath.FSMState.ListNextSteps NCPath.Path.StepInPathP NCPath.Path.EQUAL NCPath.Apply in "NoteCards 1.3k 31-Oct-86...." dated "11-May-86 15:19:08") (FILECREATED " 4-Nov-86 11:41:58" {DSK}NCPATH.;4 34617 changes to: (FNS NCPath.Path.EQUAL NCPath.Path.StepInPathP NCPath.FSM.PathCollect NCPath.FSM.RealPathCollect NCPath.FSMState.ListNextSteps NCPath.Apply) previous date: "21-Mar-86 16:23:34" {DANTE}LISP>NEW>NCPATH.;11) NCPath.FSM.PathCollect D1 (I 1 RootCard I 0 PathSpec) -A Ao @ g@A o@oA h(51Q NCP.ReportError 33Q NCPath.FSM.RealPathCollect 21Q TYPENAME 14Q NCP.ReportError 3 NCP.ValidCard) (24Q NCPathFSM) ( 45Q " or " 40Q " Illegal Argument to NCPath.FSM.PathCollect: " 11Q " is not an appropriate notecard. Check the card and the notefile.") NCPath.FSM.RealPathCollect D1 (P 2 RemovablePaths P 1 UnFinishedPaths P 0 FinishedPaths I 1 RootCard I 0 FSMInstance) .hhA@ I HJ IJ YH(46Q NCPath.Collection.CollectMultiplePaths 43Q NCPath.Collection.ComputeNextCollection 40Q LDIFFERENCE 32Q \NCONC2 27Q NCPath.Collection.ListFinishedPaths 21Q NCPath.Collection.ListRemovablePaths 12Q NCPath.Collection.CollectMultiplePaths 7 NCPath.FSM.FirstStep) NIL () NCPath.FSM.FirstStep D1 (P 4 NextState P 2 TempFSMNode P 1 TempFSM I 1 FSMInstance I 0 RootCard) YAAkhA =A A A #IJHKJLK@I HX@A (126Q NCPath.FSM.RealFirstStep 113Q \NCONC2 110Q NCPath.FSM.RealFirstStep 47Q Copy.NCPathFSMNode 36Q Copy.NCPathFSM 32Q NCPath.FSM.NextState 23Q NCPath.FSM.NextState) (76Q NCPathFSMNode 56Q NCPathFSM 42Q NCPathFSM 7 NCPathFSM 3 NCPathFSM) () NCPath.FSM.RealFirstStep D1 (I 1 FSMInstance I 0 RootCard) AA 3A (0@A d XI HZYJ YH@A (76Q NCPath.FSM.ListFirstSteps 64Q LAST 41Q NCPath.FSM.AddPotentialSteps 33Q NCPath.FSM.ListFirstSteps 21Q NCPath.FSMState.SpecifiesCardP 6 NCPath.FSMState.SpecifiesCardP 3 NCPath.FSM.NextState) (14Q NCPathFSM) () NCPath.FSM.ListFirstSteps D1 (P 5 Link P 1 End I 1 FSMInstance I 0 RootCard) y @A @h HJ`AdNA _dOIMA _dOA _dOA_dOK Lh[HXL&(114Q COPY 72Q NCPath.Path.Create 53Q NCPath.FSM.NextState 11Q NCPath.FSMState.ListNextSteps) (131Q NCPathFSM 107Q NCPathFSM 37Q NCPathFSM 32Q NCPathFSMTYPE# 4 NCPathFSM) () NCPath.FSM.AddPotentialSteps D1 (P 11Q Link I 0 FSMInstance) @ @ jh@jh d `@dK@dL`dO@jhdMkj@ dN@ _dO@_dOIHhZH&xJ(227Q COPY 210Q NCPath.Path.AddStep 66Q NCPath.Link.ListPotentialSteps 31Q NCPath.Path.LastStep 13Q NCPath.Path.LastStep) (244Q NCPathFSM 222Q NCPathFSM 203Q NCPathFSM 155Q NCPathFSMNode 150Q NCPathFSM 135Q NCPathPathStepTYPE# 122Q NCPathFSM 106Q NCPathFSM 101Q NCPathFSMTYPE# 54Q NCPathFSMNode 47Q NCPathFSM 34Q NCPathPathStep 24Q NCPathFSM 16Q NCPathPathStep 6 NCPathFSM) () NCPath.FSM.ListMultiplePaths D1 (P 7 Node I 0 FSMInstance) m@a@Qd_`@dKdO@dL@ dM@dNIHhZH&J@h(103Q COPY) (115Q NCPathFSM 76Q NCPathFSM 62Q NCPathFSM 40Q NCPathFSM 33Q NCPathFSMTYPE# 17Q NCPathFSM 3 NCPathFSM) () NCPath.FSM.AddNextSteps D1 (P 3 Link I 0 FSMInstance) 50@ @ dK@ IHhZH&J(40Q NCPath.FSM.AddStep 24Q NCPath.FSMState.ListNextSteps 13Q NCPath.Path.LastStep) (17Q NCPathFSM 6 NCPathFSM) () NCPath.FSM.IncrementUseCount D1 (I 0 FSMInstance) $@@@jk@ (41Q PUTASSOC) (34Q NCPathFSM 17Q NCPathFSM 11Q NCPathFSM 3 NCPathFSM) () NCPath.FSM.AddStep D1 (I 1 FSMInstance I 0 Step) `AHdIA HdI`d@AjhHdIkjA HdIA HdIAHdI(145Q COPY 122Q NCPath.Path.AddStep 27Q NCPath.FSM.NextState) (163Q NCPathFSM 140Q NCPathFSM 115Q NCPathFSM 63Q NCPathFSMNode 56Q NCPathFSM 44Q NCPathPathStepTYPE# 7 NCPathFSM 2 NCPathFSMTYPE#) () NCPath.FSM.NextState D1 (I 0 FSMInstance) @o @(15Q NCP.ReportError) (27Q NCPathFSMNode 22Q NCPathFSM 3 NCPathFSM) ( 12Q " NIL CurrentState of FSM in NCPath.FSM.NextState ") NCPath.FSM.LoopLimitExceededP D1 (I 0 FSMInstance) ?@jh.@@@@@hNIL (66Q NCPathFSMNode 61Q NCPathFSM 51Q NCPathFSM 43Q NCPathFSM 32Q NCPathFSM 24Q NCPathFSM 10Q NCPathFSMNode 3 NCPathFSM) () NCPath.FSM.AbsoluteDepthLimitExceededP D1 (I 0 FSMInstance) #@jh@ k@h(24Q LENGTH) (32Q NCPathFSM 17Q NCPathFSM 3 NCPathFSM) () NCPath.FSMState.ComputeCollection D1 (I 0 FSMInstance) @ @ n@ @ @ `@ HdI@HdI@HdI@ HdI@HdIh(143Q COPY 60Q NCPath.FSM.NextState 47Q NCPath.FSM.AddPotentialSteps 42Q NCPath.FSMState.TerminalP 37Q NCPath.FSM.NextState 32Q NCPath.FSMState.SpecifiesCardP 27Q NCPath.FSM.NextState 21Q NCPath.PathStep.MeetsFSMCardSpecificationP 10Q NCPath.Path.LastStep) (161Q NCPathFSM 136Q NCPathFSM 116Q NCPathFSM 76Q NCPathFSM 53Q NCPathFSMTYPE# 14Q NCPathFSM 3 NCPathFSM) () NCPath.FSMState.ListNextSteps D1 (P 4 Link I 1 FSMNodeInstance I 0 PathStepORCard) xAg@ @Ajh +@ @Ajh o o AHIAL LJ KhZHXK&o o (165Q SHOULDNT 156Q NCP.ReportError 122Q NCPath.Apply 102Q SHOULDNT 72Q NCP.ReportError 62Q NCPath.PathStep.PotentialSteps 42Q NCP.ValidLink 27Q NCPath.NoteCard.ListPotentialSteps 6 NCP.ValidCard) (50Q NCPathFSMNode 35Q NCPathPathStep 15Q NCPathFSMNode) ( 162Q " Illegal argument in NCPath.ListNextSteps: NIL " 153Q " NIL FSMNodeInstance in NCPath.ListNextSteps " 77Q " Illegal argument in NCPath.ListNextSteps: PathStepORCard not a Card or Link " 67Q " PathStepORCard not a link or card in NCPath.ListNextSteps ") NCPath.FSMState.SpecifiesCardP D1 (L (0 FSMState)) @djhhNIL (5 NCPathFSMNode) () NCPath.FSMState.SpecifiesLinkP D1 (L (0 FSMNodeInstance)) @djhNIL (5 NCPathFSMNode) () NCPath.FSMState.TerminalP D1 (L (0 FSMNode)) @hNIL NIL () NCPath.Collection.ComputeNextCollection D1 (P 2 FSMInstance I 0 PathCollection) I@!HIZ IJ J J J o o HX(101Q \NCONC2 76Q SHOULDNT 66Q NCP.ReportError 56Q NCPath.FSM.ComputeMultilpeCollections 51Q NCPath.FSMState.SpecifiesCardP 36Q NCPath.FSM.AddNextSteps 31Q NCPath.FSMState.SpecifiesLinkP 16Q NCPath.FSM.IncrementUseCount) (44Q NCPathFSM 24Q NCPathFSM) ( 73Q " PathCollection not a list of FSMs " 63Q " FSMInstance does not specify a Card or a Link in NCPath.ComputeCollection ") NCPath.FSM.ComputeMultilpeCollections D1 (P 4 NextState P 2 TempFSMInstance P 1 TempFSMNode I 0 FSMInstance) G@ <@ @ @ #JIHKILKJ HX@ (104Q NCPath.FSMState.ComputeCollection 72Q \NCONC2 67Q NCPath.FSMState.ComputeCollection 27Q Copy.NCPathFSM 23Q Copy.NCPathFSMNode 12Q NCPath.FSM.NextState 3 NCPath.FSM.NextState) (56Q NCPathFSMNode 36Q NCPathFSM 16Q NCPathFSM) () NCPath.Collection.CollectMultiplePaths D1 (I 0 Collection) #0@d XI HZYJ YH(34Q LAST 11Q NCPath.FSM.ListMultiplePaths) NIL () NCPath.Collection.ListRemovablePaths D1 (P 4 FSMInstance I 0 Collection) ?@AHI\ L L L LJ KhZHXK&(50Q NCPath.FSM.AbsoluteDepthLimitExceededP 43Q NCPath.FSM.LoopLimitExceededP 36Q NCPath.Path.LoopsP 23Q NCPath.FSMState.TerminalP) (31Q NCPathFSM 16Q NCPathFSM) () NCPath.Collection.ListFinishedPaths D1 (P 4 FSMInstance I 0 Collection) /@AHI\ LJ KhZHXK&(23Q NCPath.FSMState.TerminalP) (30Q NCPathFSM 16Q NCPathFSM) () NCPath.Path.Create D1 (I 2 FSMInstance I 1 FirstStepLink I 0 Root) :@0A-`dABjhHdIkj@o (67Q NCP.ReportError) (27Q NCPathFSMNode 22Q NCPathFSM 10Q NCPathPathStepTYPE#) ( 64Q " NIL Root or FirstStepLink in NCPath.Path.Create. ") NCPath.Path.End D1 (I 0 Path) @ (6 NCPath.PathStep.End 3 NCPath.Path.LastStep) NIL () NCPath.Path.AddStep D1 (L (1 Path 0 Step)) @ANIL NIL () NCPath.Path.LastStep D1 (L (0 Path)) @NIL NIL () NCPath.Path.StepInPathP D1 (P 1 PathStep I 1 Path I 0 TestStep) EAHhY 0@jhIjh@I IiHX(70Q NC.SameLinkP 16Q NCP.ValidCard) (63Q NCPathPathStep 55Q NCPathPathStep 37Q NCPathPathStep 24Q NCPathPathStep) () NCPath.Path.EQUAL D1 (P 3 Path2Step P 2 Path1Step I 1 Path2 I 0 Path1) h@ A (@ A A @ "IHiJK JjhKjhhIH(102Q NC.SameLinkP 40Q REVERSE 33Q REVERSE 23Q LAST 16Q LAST 7 LENGTH 3 LENGTH) (123Q NCPathPathStep 110Q NCPathPathStep 75Q NCPathPathStep 67Q NCPathPathStep) () NCPath.Path.LoopsP D1 (I 0 Path) @ @ (10Q NCPath.Path.StepInPathP 3 NCPath.Path.LastStep) NIL () NCPath.PathStep.End D1 (I 0 PathStep) @j@ @ (34Q NCP.GetLinkSource 22Q NCP.GetLinkDestination) (27Q NCPathPathStep 15Q NCPathPathStep 3 NCPathPathStep) () NCPath.PathStep.PotentialSteps D1 (I 1 Direction I 0 PathStep) @@jhA (24Q NCPath.Link.ListPotentialSteps) (11Q NCPathPathStep 3 NCPathPathStep) () NCPath.PathStep.MeetsFSMCardSpecificationP D1 (I 1 FSMNode I 0 PathStep) A A@ o (26Q NCP.ReportError 16Q NCPath.Apply 3 NCPath.FSMState.SpecifiesCardP) (11Q NCPathPathStep) ( 23Q " FSM-State does not specify a card in NCPath.PathStep.MeetsFSMCardSpecificationP ") NCPath.Apply D1 (I 1 Item I 0 FSMNodeInstance) F@ o g@@jA@jA A h (103Q APPLY 76Q NCP.GetLinkSource 71Q NCP.GetLinkDestination 27Q TRUE 16Q NCP.ReportError) (57Q NCPathFSMNode 42Q NCPathFSMNode 34Q NCPathFSMNode 22Q * 3 NCPathFSMNode) ( 13Q " NIL Predicate in SPECIAL-APPLY ") Copy.NCPathFSM D1 (I 0 FSMInstance) X`@HdI@HdI@HdI@ HdI@HdI(74Q COPY) (112Q NCPathFSM 67Q NCPathFSM 47Q NCPathFSM 27Q NCPathFSM 7 NCPathFSM 2 NCPathFSMTYPE#) () Copy.NCPathFSMNode D1 (I 0 FSMNodeInstance) i`@HdI@jhHdIkj@jhHdIkj@HdI@HdINIL (133Q NCPathFSMNode 113Q NCPathFSMNode 61Q NCPathFSMNode 27Q NCPathFSMNode 7 NCPathFSMNode 2 NCPathFSMNodeTYPE#) () NCPath.Link.ListPotentialSteps D1 (I 2 Direction I 1 PreviousDirection I 0 PreviousLink) @A B (10Q NCPath.NoteCard.ListPotentialSteps 4 NCPath.Link.GetCard) NIL () NCPath.NoteCard.ListPotentialSteps D1 (I 1 Direction I 0 Card) .Adg@ h@ i@ Ah@ o (53Q NCP.ReportError 43Q NCP.GetLinks 33Q NCP.GetLinks 23Q \APPEND2 20Q NCP.GetLinks 13Q NCP.GetLinks) (4 BOTH) ( 50Q " Direction neither T, NIL, or BOTH in NCPath.PotentialStepsFromCard. ") NCPath.Link.GetCard D1 (I 1 Direction I 0 PreviousLink) A@ @ (12Q NCP.GetLinkSource 5 NCP.GetLinkDestination) NIL () (PRETTYCOMPRINT NCPATHCOMS) (RPAQQ NCPATHCOMS ((* * This package is intended to implement a path-description language for NoteCards. Note that Paths and Path&FSMs are sometimes confused.) (* * Path specifications are FSMs or Finite State Machines. They are implemented as lists of predicates to be applied to cards or links at present. FSMs and FSM-Nodes are also sometimes confused. Paths are implmented as lists of links. They represent a path through the NoteCards network of cards and links. A pointer to the appropriate node of an NCPathFSM is cons-ed onto the front of a path to make a PATH&FSM. Thus, each step of a path is a link. The Paths are stored as a tree structure, and each path shares cons cells with other paths. The paths are in reverse order and the root of the tree specifying all the paths is a notecard ID which was the starting point for the search.) (* * This list of functions implement the FSM. Note that there is alot of stuff in the other code that knows about FSMs and acts accordingly. In other words, this is not a true implementation of FSMs.) (FNS NCPath.FSM.PathCollect NCPath.FSM.RealPathCollect NCPath.FSM.FirstStep NCPath.FSM.RealFirstStep NCPath.FSM.ListFirstSteps NCPath.FSM.AddPotentialSteps NCPath.FSM.ListMultiplePaths NCPath.FSM.AddNextSteps NCPath.FSM.IncrementUseCount NCPath.FSM.AddStep NCPath.FSM.NextState NCPath.FSM.LoopLimitExceededP NCPath.FSM.AbsoluteDepthLimitExceededP) (FNS NCPath.FSMState.ComputeCollection NCPath.FSMState.ListNextSteps NCPath.FSMState.SpecifiesCardP NCPath.FSMState.SpecifiesLinkP NCPath.FSMState.TerminalP) (* * The second group of functions implements the collection data item. A collection is a list of paths or PATH&FSMs that share cons cells.) (FNS NCPath.Collection.ComputeNextCollection NCPath.FSM.ComputeMultilpeCollections NCPath.Collection.CollectMultiplePaths NCPath.Collection.ListRemovablePaths NCPath.Collection.ListFinishedPaths) (* * These functions implement the Path data structure.) (FNS NCPath.Path.Create NCPath.Path.End NCPath.Path.AddStep NCPath.Path.LastStep NCPath.Path.StepInPathP NCPath.Path.EQUAL NCPath.Path.LoopsP) (FNS NCPath.PathStep.End NCPath.PathStep.PotentialSteps NCPath.PathStep.MeetsFSMCardSpecificationP) (* * The last functions in this file are basically utilities that depend on implmentation details.) (FNS NCPath.Apply Copy.NCPathFSM Copy.NCPathFSMNode NCPath.Link.ListPotentialSteps NCPath.NoteCard.ListPotentialSteps NCPath.Link.GetCard) (* * Data types ) (RECORDS NCPathFSM NCPathFSMNode NCPathPathStep))) (DATATYPE NCPathFSM ((InitialState POINTER) (CurrentState POINTER) (Path POINTER) (LoopLimitAList POINTER) (AbsoluteDepthLimit INTEGER)) AbsoluteDepthLimit _ 0) (DATATYPE NCPathFSMNode ((Predicate POINTER) (Card/Link FLAG) (Direction FLAG) (NextNodes POINTER) ( LoopLimit INTEGER)) Predicate _ (FUNCTION NILL) Card/Link _ T Direction _ T NextNodes _ NIL LoopLimit _ 1) (DATATYPE NCPathPathStep ((Link POINTER) (Direction FLAG))) (/DECLAREDATATYPE (QUOTE NCPathFSM) (QUOTE (POINTER POINTER POINTER POINTER FIXP)) (QUOTE ((NCPathFSM 0 POINTER) (NCPathFSM 2 POINTER) (NCPathFSM 4 POINTER) (NCPathFSM 6 POINTER) (NCPathFSM 8 FIXP))) ( QUOTE 10)) (/DECLAREDATATYPE (QUOTE NCPathFSMNode) (QUOTE (POINTER FLAG FLAG POINTER FIXP)) (QUOTE (( NCPathFSMNode 0 POINTER) (NCPathFSMNode 0 (FLAGBITS . 0)) (NCPathFSMNode 0 (FLAGBITS . 16)) ( NCPathFSMNode 2 POINTER) (NCPathFSMNode 4 FIXP))) (QUOTE 6)) (/DECLAREDATATYPE (QUOTE NCPathPathStep) (QUOTE (POINTER FLAG)) (QUOTE ((NCPathPathStep 0 POINTER) ( NCPathPathStep 0 (FLAGBITS . 0)))) (QUOTE 2)) (PUTPROPS NCPATH COPYRIGHT ("Xerox Corporation" 1986)) NIL