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, ElementListoneProdConstantToRope, ElementListoneProdSize, ElementListoneProdConstructFunction]];
 
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, ElementListmoreProdConstantToRope, ElementListmoreProdSize, ElementListmoreProdConstructFunction]];
 
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..