DIRECTORY
AbstractTypesDef,
WartDef,
AbstractProductionsDef;
AbstractProductionsImpl: CEDAR PROGRAM IMPORTS AbstractProductionsDef EXPORTS AbstractProductionsDef=
BEGIN
OPEN AbstractTypesDef, WartDef, AbstractProductionsDef;
ProgramProd
ProgramProdProcs: PUBLIC ProgramNodeProcs ←
NEW[ProgramNodeProcsBody ← [ProgramProdMakeSymbolTable]];
BuildProgramProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, numberDprogno: numberDNode, numberDverno: numberDNode, ReferencedProgramList: ReferencedProgramListNode, DeclarationList: DeclarationListNode]
RETURNS[ProgramNode] =
BEGIN
data: ProgramProdData ←
NEW[ProgramProdDataBody←[
identifier, numberDprogno, numberDverno, ReferencedProgramList, DeclarationList]];
RETURN[NEW[ProgramNodeBody←[position, length, ProgramProdProcs, data]]];
END;
ReferencedProgramListemptyProd
ReferencedProgramListemptyProdProcs: PUBLIC ReferencedProgramListNodeProcs ←
NEW[ReferencedProgramListNodeProcsBody ← [ReferencedProgramListemptyProdReadInTable]];
BuildReferencedProgramListemptyProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[ReferencedProgramListNode] =
BEGIN
RETURN[NEW[ReferencedProgramListNodeBody←[position, length, ReferencedProgramListemptyProdProcs, NIL]]];
END;
ReferencedProgramListmoreProd
ReferencedProgramListmoreProdProcs: PUBLIC ReferencedProgramListNodeProcs ←
NEW[ReferencedProgramListNodeProcsBody ← [ReferencedProgramListmoreProdReadInTable]];
BuildReferencedProgramListmoreProdNode: PUBLIC PROC[position: INT, length: INT, ReferencedProgramList: ReferencedProgramListNode, ReferencedProgram: ReferencedProgramNode]
RETURNS[ReferencedProgramListNode] =
BEGIN
data: ReferencedProgramListmoreProdData ←
NEW[ReferencedProgramListmoreProdDataBody←[
ReferencedProgramList, ReferencedProgram]];
RETURN[NEW[ReferencedProgramListNodeBody←[position, length, ReferencedProgramListmoreProdProcs, data]]];
END;
ReferencedProgramProd
ReferencedProgramProdProcs: PUBLIC ReferencedProgramNodeProcs ←
NEW[ReferencedProgramNodeProcsBody ← [ReferencedProgramProdReadInTable]];
BuildReferencedProgramProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, numberDprogno: numberDNode, numberDverno: numberDNode]
RETURNS[ReferencedProgramNode] =
BEGIN
data: ReferencedProgramProdData ←
NEW[ReferencedProgramProdDataBody←[
identifier, numberDprogno, numberDverno]];
RETURN[NEW[ReferencedProgramNodeBody←[position, length, ReferencedProgramProdProcs, data]]];
END;
DeclarationListemptyProd
DeclarationListemptyProdProcs: PUBLIC DeclarationListNodeProcs ←
NEW[DeclarationListNodeProcsBody ← [DeclarationListemptyProdBuildTable, DeclarationListemptyProdRecordNames]];
BuildDeclarationListemptyProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[DeclarationListNode] =
BEGIN
RETURN[NEW[DeclarationListNodeBody←[position, length, DeclarationListemptyProdProcs, NIL]]];
END;
DeclarationListmoreProd
DeclarationListmoreProdProcs: PUBLIC DeclarationListNodeProcs ←
NEW[DeclarationListNodeProcsBody ← [DeclarationListmoreProdBuildTable, DeclarationListmoreProdRecordNames]];
BuildDeclarationListmoreProdNode: PUBLIC PROC[position: INT, length: INT, DeclarationList: DeclarationListNode, Declaration: DeclarationNode]
RETURNS[DeclarationListNode] =
BEGIN
data: DeclarationListmoreProdData ←
NEW[DeclarationListmoreProdDataBody←[
DeclarationList, Declaration]];
RETURN[NEW[DeclarationListNodeBody←[position, length, DeclarationListmoreProdProcs, data]]];
END;
DeclarationtypeProd
DeclarationtypeProdProcs: PUBLIC DeclarationNodeProcs ←
NEW[DeclarationNodeProcsBody ← [DeclarationtypeProdBuildTable, DeclarationtypeProdRecordNames]];
BuildDeclarationtypeProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, Type: TypeNode]
RETURNS[DeclarationNode] =
BEGIN
data: DeclarationtypeProdData ←
NEW[DeclarationtypeProdDataBody←[
identifier, Type]];
RETURN[NEW[DeclarationNodeBody←[position, length, DeclarationtypeProdProcs, data]]];
END;
DeclarationconstantProd
DeclarationconstantProdProcs: PUBLIC DeclarationNodeProcs ←
NEW[DeclarationNodeProcsBody ← [DeclarationconstantProdBuildTable, DeclarationconstantProdRecordNames]];
BuildDeclarationconstantProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, Type: TypeNode, Constant: ConstantNode]
RETURNS[DeclarationNode] =
BEGIN
data: DeclarationconstantProdData ←
NEW[DeclarationconstantProdDataBody←[
identifier, Type, Constant]];
RETURN[NEW[DeclarationNodeBody←[position, length, DeclarationconstantProdProcs, data]]];
END;
TypearrayProd
TypearrayProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypearrayProdCanonicaliseType]];
BuildTypearrayProdNode: PUBLIC PROC[position: INT, length: INT, Constant: ConstantNode, Type: TypeNode]
RETURNS[TypeNode] =
BEGIN
data: TypearrayProdData ←
NEW[TypearrayProdDataBody←[
Constant, Type]];
RETURN[NEW[TypeNodeBody←[position, length, TypearrayProdProcs, data]]];
END;
TypebooleanProd
TypebooleanProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypebooleanProdCanonicaliseType]];
BuildTypebooleanProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypebooleanProdProcs, NIL]]];
END;
TypebulkDataSinkProd
TypebulkDataSinkProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypebulkDataSinkProdCanonicaliseType]];
BuildTypebulkDataSinkProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypebulkDataSinkProdProcs, NIL]]];
END;
TypebulkDataSourceProd
TypebulkDataSourceProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypebulkDataSourceProdCanonicaliseType]];
BuildTypebulkDataSourceProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypebulkDataSourceProdProcs, NIL]]];
END;
TypecardinalProd
TypecardinalProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypecardinalProdCanonicaliseType]];
BuildTypecardinalProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypecardinalProdProcs, NIL]]];
END;
TypechoiceProd
TypechoiceProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypechoiceProdCanonicaliseType]];
BuildTypechoiceProdNode: PUBLIC PROC[position: INT, length: INT, Type: TypeNode, CandidateList: CandidateListNode]
RETURNS[TypeNode] =
BEGIN
data: TypechoiceProdData ←
NEW[TypechoiceProdDataBody←[
Type, CandidateList]];
RETURN[NEW[TypeNodeBody←[position, length, TypechoiceProdProcs, data]]];
END;
TypeemptyRecordProd
TypeemptyRecordProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypeemptyRecordProdCanonicaliseType]];
BuildTypeemptyRecordProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypeemptyRecordProdProcs, NIL]]];
END;
TypeenumerationProd
TypeenumerationProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypeenumerationProdCanonicaliseType]];
BuildTypeenumerationProdNode: PUBLIC PROC[position: INT, length: INT, CorrespondenceList: CorrespondenceListNode]
RETURNS[TypeNode] =
BEGIN
data: TypeenumerationProdData ←
NEW[TypeenumerationProdDataBody←[
CorrespondenceList]];
RETURN[NEW[TypeNodeBody←[position, length, TypeenumerationProdProcs, data]]];
END;
TypeerrorProd
TypeerrorProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypeerrorProdCanonicaliseType]];
BuildTypeerrorProdNode: PUBLIC PROC[position: INT, length: INT, FieldList: FieldListNode]
RETURNS[TypeNode] =
BEGIN
data: TypeerrorProdData ←
NEW[TypeerrorProdDataBody←[
FieldList]];
RETURN[NEW[TypeNodeBody←[position, length, TypeerrorProdProcs, data]]];
END;
TypeintegerProd
TypeintegerProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypeintegerProdCanonicaliseType]];
BuildTypeintegerProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypeintegerProdProcs, NIL]]];
END;
TypelocalReferenceProd
TypelocalReferenceProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypelocalReferenceProdCanonicaliseType]];
BuildTypelocalReferenceProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode]
RETURNS[TypeNode] =
BEGIN
data: TypelocalReferenceProdData ←
NEW[TypelocalReferenceProdDataBody←[
identifier]];
RETURN[NEW[TypeNodeBody←[position, length, TypelocalReferenceProdProcs, data]]];
END;
TypelongCardinalProd
TypelongCardinalProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypelongCardinalProdCanonicaliseType]];
BuildTypelongCardinalProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypelongCardinalProdProcs, NIL]]];
END;
TypelongIntegerProd
TypelongIntegerProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypelongIntegerProdCanonicaliseType]];
BuildTypelongIntegerProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypelongIntegerProdProcs, NIL]]];
END;
TypeprocedureProd
TypeprocedureProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypeprocedureProdCanonicaliseType]];
BuildTypeprocedureProdNode: PUBLIC PROC[position: INT, length: INT, FieldListarg: FieldListNode, FieldListres: FieldListNode, NameList: NameListNode]
RETURNS[TypeNode] =
BEGIN
data: TypeprocedureProdData ←
NEW[TypeprocedureProdDataBody←[
FieldListarg, FieldListres, NameList]];
RETURN[NEW[TypeNodeBody←[position, length, TypeprocedureProdProcs, data]]];
END;
TyperecordProd
TyperecordProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TyperecordProdCanonicaliseType]];
BuildTyperecordProdNode: PUBLIC PROC[position: INT, length: INT, FieldList: FieldListNode]
RETURNS[TypeNode] =
BEGIN
data: TyperecordProdData ←
NEW[TyperecordProdDataBody←[
FieldList]];
RETURN[NEW[TypeNodeBody←[position, length, TyperecordProdProcs, data]]];
END;
TyperemoteReferenceProd
TyperemoteReferenceProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TyperemoteReferenceProdCanonicaliseType]];
BuildTyperemoteReferenceProdNode: PUBLIC PROC[position: INT, length: INT, identifiera: identifierNode, identifierb: identifierNode]
RETURNS[TypeNode] =
BEGIN
data: TyperemoteReferenceProdData ←
NEW[TyperemoteReferenceProdDataBody←[
identifiera, identifierb]];
RETURN[NEW[TypeNodeBody←[position, length, TyperemoteReferenceProdProcs, data]]];
END;
TypesequenceProd
TypesequenceProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypesequenceProdCanonicaliseType]];
BuildTypesequenceProdNode: PUBLIC PROC[position: INT, length: INT, Constant: ConstantNode, Type: TypeNode]
RETURNS[TypeNode] =
BEGIN
data: TypesequenceProdData ←
NEW[TypesequenceProdDataBody←[
Constant, Type]];
RETURN[NEW[TypeNodeBody←[position, length, TypesequenceProdProcs, data]]];
END;
TypestringProd
TypestringProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypestringProdCanonicaliseType]];
BuildTypestringProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypestringProdProcs, NIL]]];
END;
TypeunspecifiedProd
TypeunspecifiedProdProcs: PUBLIC TypeNodeProcs ←
NEW[TypeNodeProcsBody ← [TypeunspecifiedProdCanonicaliseType]];
BuildTypeunspecifiedProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[TypeNode] =
BEGIN
RETURN[NEW[TypeNodeBody←[position, length, TypeunspecifiedProdProcs, NIL]]];
END;
CorrespondenceListoneProd
CorrespondenceListoneProdProcs: PUBLIC CorrespondenceListNodeProcs ←
NEW[CorrespondenceListNodeProcsBody ← [CorrespondenceListoneProdCanonicaliseCorrespondenceList, CorrespondenceListoneProdCheckCorrespondenceList]];
BuildCorrespondenceListoneProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, Constant: ConstantNode]
RETURNS[CorrespondenceListNode] =
BEGIN
data: CorrespondenceListoneProdData ←
NEW[CorrespondenceListoneProdDataBody←[
identifier, Constant]];
RETURN[NEW[CorrespondenceListNodeBody←[position, length, CorrespondenceListoneProdProcs, data]]];
END;
CorrespondenceListmoreProd
CorrespondenceListmoreProdProcs: PUBLIC CorrespondenceListNodeProcs ←
NEW[CorrespondenceListNodeProcsBody ← [CorrespondenceListmoreProdCanonicaliseCorrespondenceList, CorrespondenceListmoreProdCheckCorrespondenceList]];
BuildCorrespondenceListmoreProdNode: PUBLIC PROC[position: INT, length: INT, CorrespondenceListvalue: CorrespondenceListNode, CorrespondenceListnext: CorrespondenceListNode]
RETURNS[CorrespondenceListNode] =
BEGIN
data: CorrespondenceListmoreProdData ←
NEW[CorrespondenceListmoreProdDataBody←[
CorrespondenceListvalue, CorrespondenceListnext]];
RETURN[NEW[CorrespondenceListNodeBody←[position, length, CorrespondenceListmoreProdProcs, data]]];
END;
CandidateListoneProd
CandidateListoneProdProcs: PUBLIC CandidateListNodeProcs ←
NEW[CandidateListNodeProcsBody ← [CandidateListoneProdCanonicaliseCandidateList, CandidateListoneProdEmptyWorkTableOfNames]];
BuildCandidateListoneProdNode: PUBLIC PROC[position: INT, length: INT, NameList: NameListNode, Type: TypeNode]
RETURNS[CandidateListNode] =
BEGIN
data: CandidateListoneProdData ←
NEW[CandidateListoneProdDataBody←[
NameList, Type]];
RETURN[NEW[CandidateListNodeBody←[position, length, CandidateListoneProdProcs, data]]];
END;
CandidateListmoreProd
CandidateListmoreProdProcs: PUBLIC CandidateListNodeProcs ←
NEW[CandidateListNodeProcsBody ← [CandidateListmoreProdCanonicaliseCandidateList, CandidateListmoreProdEmptyWorkTableOfNames]];
BuildCandidateListmoreProdNode: PUBLIC PROC[position: INT, length: INT, CandidateListvalue: CandidateListNode, CandidateListnext: CandidateListNode]
RETURNS[CandidateListNode] =
BEGIN
data: CandidateListmoreProdData ←
NEW[CandidateListmoreProdDataBody←[
CandidateListvalue, CandidateListnext]];
RETURN[NEW[CandidateListNodeBody←[position, length, CandidateListmoreProdProcs, data]]];
END;
FieldListemptyProd
FieldListemptyProdProcs: PUBLIC FieldListNodeProcs ←
NEW[FieldListNodeProcsBody ← [FieldListemptyProdCanonicaliseFieldList]];
BuildFieldListemptyProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[FieldListNode] =
BEGIN
RETURN[NEW[FieldListNodeBody←[position, length, FieldListemptyProdProcs, NIL]]];
END;
FieldListoneProd
FieldListoneProdProcs: PUBLIC FieldListNodeProcs ←
NEW[FieldListNodeProcsBody ← [FieldListoneProdCanonicaliseFieldList]];
BuildFieldListoneProdNode: PUBLIC PROC[position: INT, length: INT, NameList: NameListNode, Type: TypeNode]
RETURNS[FieldListNode] =
BEGIN
data: FieldListoneProdData ←
NEW[FieldListoneProdDataBody←[
NameList, Type]];
RETURN[NEW[FieldListNodeBody←[position, length, FieldListoneProdProcs, data]]];
END;
FieldListmoreProd
FieldListmoreProdProcs: PUBLIC FieldListNodeProcs ←
NEW[FieldListNodeProcsBody ← [FieldListmoreProdCanonicaliseFieldList]];
BuildFieldListmoreProdNode: PUBLIC PROC[position: INT, length: INT, FieldListvalue: FieldListNode, FieldListrest: FieldListNode]
RETURNS[FieldListNode] =
BEGIN
data: FieldListmoreProdData ←
NEW[FieldListmoreProdDataBody←[
FieldListvalue, FieldListrest]];
RETURN[NEW[FieldListNodeBody←[position, length, FieldListmoreProdProcs, data]]];
END;
ConstantchoiceProd
ConstantchoiceProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantchoiceProdCoerce, ConstantchoiceProdGetCARDINAL, ConstantchoiceProdConstantToRope]];
BuildConstantchoiceProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, Constant: ConstantNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantchoiceProdData ←
NEW[ConstantchoiceProdDataBody←[
identifier, Constant]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantchoiceProdProcs, data]]];
END;
ConstantcomponentlistProd
ConstantcomponentlistProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantcomponentlistProdCoerce, ConstantcomponentlistProdGetCARDINAL, ConstantcomponentlistProdConstantToRope]];
BuildConstantcomponentlistProdNode: PUBLIC PROC[position: INT, length: INT, ComponentList: ComponentListNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantcomponentlistProdData ←
NEW[ConstantcomponentlistProdDataBody←[
ComponentList]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantcomponentlistProdProcs, data]]];
END;
ConstantelementListProd
ConstantelementListProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantelementListProdCoerce, ConstantelementListProdGetCARDINAL, ConstantelementListProdConstantToRope]];
BuildConstantelementListProdNode: PUBLIC PROC[position: INT, length: INT, ElementList: ElementListNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantelementListProdData ←
NEW[ConstantelementListProdDataBody←[
ElementList]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantelementListProdProcs, data]]];
END;
ConstantemptyProd
ConstantemptyProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantemptyProdCoerce, ConstantemptyProdGetCARDINAL, ConstantemptyProdConstantToRope]];
BuildConstantemptyProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[ConstantNode] =
BEGIN
RETURN[NEW[ConstantNodeBody←[position, length, ConstantemptyProdProcs, NIL]]];
END;
ConstantfalseProd
ConstantfalseProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantfalseProdCoerce, ConstantfalseProdGetCARDINAL, ConstantfalseProdConstantToRope]];
BuildConstantfalseProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[ConstantNode] =
BEGIN
RETURN[NEW[ConstantNodeBody←[position, length, ConstantfalseProdProcs, NIL]]];
END;
ConstantidProd
ConstantidProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantidProdCoerce, ConstantidProdGetCARDINAL, ConstantidProdConstantToRope]];
BuildConstantidProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantidProdData ←
NEW[ConstantidProdDataBody←[
identifier]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantidProdProcs, data]]];
END;
ConstantnegativeNumberProd
ConstantnegativeNumberProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantnegativeNumberProdCoerce, ConstantnegativeNumberProdGetCARDINAL, ConstantnegativeNumberProdConstantToRope]];
BuildConstantnegativeNumberProdNode: PUBLIC PROC[position: INT, length: INT, number: numberNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantnegativeNumberProdData ←
NEW[ConstantnegativeNumberProdDataBody←[
number]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantnegativeNumberProdProcs, data]]];
END;
ConstantnumberProd
ConstantnumberProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantnumberProdCoerce, ConstantnumberProdGetCARDINAL, ConstantnumberProdConstantToRope]];
BuildConstantnumberProdNode: PUBLIC PROC[position: INT, length: INT, number: numberNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantnumberProdData ←
NEW[ConstantnumberProdDataBody←[
number]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantnumberProdProcs, data]]];
END;
ConstantremoteReferenceProd
ConstantremoteReferenceProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantremoteReferenceProdCoerce, ConstantremoteReferenceProdGetCARDINAL, ConstantremoteReferenceProdConstantToRope]];
BuildConstantremoteReferenceProdNode: PUBLIC PROC[position: INT, length: INT, identifierleft: identifierNode, identifierright: identifierNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantremoteReferenceProdData ←
NEW[ConstantremoteReferenceProdDataBody←[
identifierleft, identifierright]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantremoteReferenceProdProcs, data]]];
END;
ConstantstringProd
ConstantstringProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantstringProdCoerce, ConstantstringProdGetCARDINAL, ConstantstringProdConstantToRope]];
BuildConstantstringProdNode: PUBLIC PROC[position: INT, length: INT, Rope: RopeNode]
RETURNS[ConstantNode] =
BEGIN
data: ConstantstringProdData ←
NEW[ConstantstringProdDataBody←[
Rope]];
RETURN[NEW[ConstantNodeBody←[position, length, ConstantstringProdProcs, data]]];
END;
ConstanttrueProd
ConstanttrueProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstanttrueProdCoerce, ConstanttrueProdGetCARDINAL, ConstanttrueProdConstantToRope]];
BuildConstanttrueProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[ConstantNode] =
BEGIN
RETURN[NEW[ConstantNodeBody←[position, length, ConstanttrueProdProcs, NIL]]];
END;
ConstantunboundedProd
ConstantunboundedProdProcs: PUBLIC ConstantNodeProcs ←
NEW[ConstantNodeProcsBody ← [ConstantunboundedProdCoerce, ConstantunboundedProdGetCARDINAL, ConstantunboundedProdConstantToRope]];
BuildConstantunboundedProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[ConstantNode] =
BEGIN
RETURN[NEW[ConstantNodeBody←[position, length, ConstantunboundedProdProcs, NIL]]];
END;
ElementListoneProd
ElementListoneProdProcs: PUBLIC ElementListNodeProcs ←
NEW[ElementListNodeProcsBody ← [ElementListoneProdCoerceElementList, ElementListoneProdElementListConstantToRope, ElementListoneProdSize]];
BuildElementListoneProdNode: PUBLIC PROC[position: INT, length: INT, Constant: ConstantNode]
RETURNS[ElementListNode] =
BEGIN
data: ElementListoneProdData ←
NEW[ElementListoneProdDataBody←[
Constant]];
RETURN[NEW[ElementListNodeBody←[position, length, ElementListoneProdProcs, data]]];
END;
ElementListmoreProd
ElementListmoreProdProcs: PUBLIC ElementListNodeProcs ←
NEW[ElementListNodeProcsBody ← [ElementListmoreProdCoerceElementList, ElementListmoreProdElementListConstantToRope, ElementListmoreProdSize]];
BuildElementListmoreProdNode: PUBLIC PROC[position: INT, length: INT, Constant: ConstantNode, ElementList: ElementListNode]
RETURNS[ElementListNode] =
BEGIN
data: ElementListmoreProdData ←
NEW[ElementListmoreProdDataBody←[
Constant, ElementList]];
RETURN[NEW[ElementListNodeBody←[position, length, ElementListmoreProdProcs, data]]];
END;
ComponentListoneProd
ComponentListoneProdProcs: PUBLIC ComponentListNodeProcs ←
NEW[ComponentListNodeProcsBody ← [ComponentListoneProdCoerceComponents, ComponentListoneProdConstantToRope, ComponentListoneProdCheckAllNames]];
BuildComponentListoneProdNode: PUBLIC PROC[position: INT, length: INT, Component: ComponentNode]
RETURNS[ComponentListNode] =
BEGIN
data: ComponentListoneProdData ←
NEW[ComponentListoneProdDataBody←[
Component]];
RETURN[NEW[ComponentListNodeBody←[position, length, ComponentListoneProdProcs, data]]];
END;
ComponentListmoreProd
ComponentListmoreProdProcs: PUBLIC ComponentListNodeProcs ←
NEW[ComponentListNodeProcsBody ← [ComponentListmoreProdCoerceComponents, ComponentListmoreProdConstantToRope, ComponentListmoreProdCheckAllNames]];
BuildComponentListmoreProdNode: PUBLIC PROC[position: INT, length: INT, Component: ComponentNode, ComponentList: ComponentListNode]
RETURNS[ComponentListNode] =
BEGIN
data: ComponentListmoreProdData ←
NEW[ComponentListmoreProdDataBody←[
Component, ComponentList]];
RETURN[NEW[ComponentListNodeBody←[position, length, ComponentListmoreProdProcs, data]]];
END;
ComponentProd
ComponentProdProcs: PUBLIC ComponentNodeProcs ←
NEW[ComponentNodeProcsBody ← [ComponentProdCoerceComponents, ComponentProdConstantToRope, ComponentProdCheckAllNames]];
BuildComponentProdNode: PUBLIC PROC[position: INT, length: INT, NameList: NameListNode, Constant: ConstantNode]
RETURNS[ComponentNode] =
BEGIN
data: ComponentProdData ←
NEW[ComponentProdDataBody←[
NameList, Constant]];
RETURN[NEW[ComponentNodeBody←[position, length, ComponentProdProcs, data]]];
END;
NameListemptyProd
NameListemptyProdProcs: PUBLIC NameListNodeProcs ←
NEW[NameListNodeProcsBody ← [NameListemptyProdCheckIfErrorNames, NameListemptyProdCanonicaliseFieldsFromNameList, NameListemptyProdCoerceComponentNameList, NameListemptyProdNameListToRope, NameListemptyProdEmptyWorkTableOfNames, NameListemptyProdTypeOfNameList]];
BuildNameListemptyProdNode: PUBLIC PROC[position: INT, length: INT]
RETURNS[NameListNode] =
BEGIN
RETURN[NEW[NameListNodeBody←[position, length, NameListemptyProdProcs, NIL]]];
END;
NameListoneProd
NameListoneProdProcs: PUBLIC NameListNodeProcs ←
NEW[NameListNodeProcsBody ← [NameListoneProdCheckIfErrorNames, NameListoneProdCanonicaliseFieldsFromNameList, NameListoneProdCoerceComponentNameList, NameListoneProdNameListToRope, NameListoneProdEmptyWorkTableOfNames, NameListoneProdTypeOfNameList]];
BuildNameListoneProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode]
RETURNS[NameListNode] =
BEGIN
data: NameListoneProdData ←
NEW[NameListoneProdDataBody←[
identifier]];
RETURN[NEW[NameListNodeBody←[position, length, NameListoneProdProcs, data]]];
END;
NameListmoreProd
NameListmoreProdProcs: PUBLIC NameListNodeProcs ←
NEW[NameListNodeProcsBody ← [NameListmoreProdCheckIfErrorNames, NameListmoreProdCanonicaliseFieldsFromNameList, NameListmoreProdCoerceComponentNameList, NameListmoreProdNameListToRope, NameListmoreProdEmptyWorkTableOfNames, NameListmoreProdTypeOfNameList]];
BuildNameListmoreProdNode: PUBLIC PROC[position: INT, length: INT, identifier: identifierNode, NameList: NameListNode]
RETURNS[NameListNode] =
BEGIN
data: NameListmoreProdData ←
NEW[NameListmoreProdDataBody←[
identifier, NameList]];
RETURN[NEW[NameListNodeBody←[position, length, NameListmoreProdProcs, data]]];
END;
numberdecimalProd
numberdecimalProdProcs: PUBLIC numberNodeProcs ←
NEW[numberNodeProcsBody ← [numberdecimalProdGetCARDINAL, numberdecimalProdNumberToCard]];
BuildnumberdecimalProdNode: PUBLIC PROC[position: INT, length: INT, numberD: numberDNode]
RETURNS[numberNode] =
BEGIN
data: numberdecimalProdData ←
NEW[numberdecimalProdDataBody←[
numberD]];
RETURN[NEW[numberNodeBody←[position, length, numberdecimalProdProcs, data]]];
END;
numberhexProd
numberhexProdProcs: PUBLIC numberNodeProcs ←
NEW[numberNodeProcsBody ← [numberhexProdGetCARDINAL, numberhexProdNumberToCard]];
BuildnumberhexProdNode: PUBLIC PROC[position: INT, length: INT, numberH: numberHNode]
RETURNS[numberNode] =
BEGIN
data: numberhexProdData ←
NEW[numberhexProdDataBody←[
numberH]];
RETURN[NEW[numberNodeBody←[position, length, numberhexProdProcs, data]]];
END;
numberoctalProd
numberoctalProdProcs: PUBLIC numberNodeProcs ←
NEW[numberNodeProcsBody ← [numberoctalProdGetCARDINAL, numberoctalProdNumberToCard]];
BuildnumberoctalProdNode: PUBLIC PROC[position: INT, length: INT, numberO: numberONode]
RETURNS[numberNode] =
BEGIN
data: numberoctalProdData ←
NEW[numberoctalProdDataBody←[
numberO]];
RETURN[NEW[numberNodeBody←[position, length, numberoctalProdProcs, data]]];
END;
END..