BEGIN OPEN GrammarBasic;
-- the following is exported by LR0ItemsImpl
LR0Item: TYPE = RECORD[ref: REF LR0ItemBody, x: CARDINAL]; -- item1.x = item2.x => item1 = item2
LR0ItemBody: TYPE;
-- the following is exported by LR0ItemSetsBasicImpl
TentativeLR0ItemSet: TYPE = REF TentativeLR0ItemSetBody;
TentativeLR0ItemSetBody: TYPE;
LR0ItemSet: TYPE = REF LR0ItemSetBody;
LR0ItemSetBody: TYPE;
ClearLR0ItemSetsAssociatedNodes: PROC[Grammar];
CreateEmptyTentativeLR0ItemSet: PROC[Grammar] RETURNS[TentativeLR0ItemSet];
InsertItemInTentativeLR0ItemSet: PROC[TentativeLR0ItemSet, LR0Item] RETURNS[--newItem-- BOOLEAN];
GenItemsInTentativeLR0ItemSet: PROC[TentativeLR0ItemSet, PROC[LR0Item]];
FreezeTentativeLR0ItemSet: PROC[TentativeLR0ItemSet] RETURNS[LR0ItemSet];
GenItemsInLR0ItemSet: PROC[LR0ItemSet, PROC[LR0Item]];
NarrowLR0ItemSet: PROC[REF ANY] RETURNS[LR0ItemSet];
NarrowTentativeLR0ItemSet: PROC[REF ANY] RETURNS[TentativeLR0ItemSet];
GetLR0AssociatedNode: PROC[LR0ItemSet] RETURNS[REF ANY];
SetLR0AssociatedNode: PROC[LR0ItemSet, REF ANY];
END..