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..