-- ThreeC4RecFcnDecl.ThreeC4
-- Sturgis, May 8, 1986 4:20:37 pm PDT

Include[ThreeC4BaseDecl];

ThreeC4RecFcnDecl: Module =
Begin

FormFileSeq: TreeRecursiveFunction[Tree, Context] Returns[FileSeq]
 DamagedReps[Context];

MakeFileSeq: TreeRecursiveFunction[Tree, LookupContext] Returns[FileSeq];

DefFileCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg]
     Returns[MesaCode, Usage.result]
   DamagedReps[Usage.arg];

ImplFileCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg]
     Returns[MesaCode, Usage.result]
   DamagedReps[Usage.arg];

LinkFileCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg]
     Returns[MesaCode, Usage.result]
   DamagedReps[Usage.arg];

SyntaxFileCodes: TreeRecursiveFunction[Tree, LookupContext] Returns[MesaCode.tkns, MesaCode.prdns];

SpecialSyntaxTokenFileCode: TreeRecursiveFunction[Tree] Returns[MesaCode];

SyntaxRightSideFileCode: TreeRecursiveFunction[Tree] Returns[MesaCode];


CollectValueTypes: TreeRecursiveFunction[Tree, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

CollectFunctionTypes: TreeRecursiveFunction[Tree, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

CollectProductions: TreeRecursiveFunction[Tree, INT.firstProd, Context.arg] Returns[INT.nextProd, Context.result]
 DamagedReps[Context.arg];

CollectModuleValueTypes: TreeRecursiveFunction[Tree, ROPE, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

CollectModuleFunctionTypes: TreeRecursiveFunction[Tree, ROPE, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

RecordCedarTypesFrom: TreeRecursiveFunction[Tree, ROPE, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

RecordCedarTypes: TreeRecursiveFunction[Tree, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

FormTypeList: TreeRecursiveFunction[Tree, LookupContext] Returns[TypeList];

FormTypeListEarly: TreeRecursiveFunction[Tree, Context] Returns[TypeList];

FormTypeEarly: TreeRecursiveFunction[Tree, Context] Returns[Type];

FormTypesCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg] Returns[MesaCode, Usage.result]
 DamagedReps[Usage.arg];

ProcFieldTypeCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg]
  Returns[MesaCode, Usage.result]
 DamagedReps[Usage.arg];

FormNameList: TreeRecursiveFunction[Tree] Returns[NameList];

CollectRightSideSymbols: TreeRecursiveFunction[Tree, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

FormRightSideContext: TreeRecursiveFunction[Tree, LookupContext.arg] Returns[LookupContext.result]
 SharedReps[LookupContext.arg, LookupContext.result];

FormName: TreeRecursiveFunction[Tree] Returns[Name];

FormFirstId: TreeRecursiveFunction[Tree] Returns[Identifier];

FormType: TreeRecursiveFunction[Tree, LookupContext] Returns[Type];

FormValueInfo: TreeRecursiveFunction[Tree, LookupContext] Returns[Type, MesaCode];

FormNodeVarAssignCode: TreeRecursiveFunction[Tree] Returns[MesaCode];

FormExpCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg]
  Returns[MesaCode, Type, Usage.result]
 DamagedReps[Usage.arg];

FormExpListCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg] Returns[MesaCode, TypeList, Usage.result];

TestFormControlFile: TreeRecursiveFunction[Tree] Returns[BOOLEAN];

FormLinkCallCode: TreeRecursiveFunction[Tree, LookupContext, Usage.arg]
 Returns[MesaCode, Usage.result]
 DamagedReps[Usage.arg];

TestLinkPresent: TreeRecursiveFunction[Tree] Returns[BOOLEAN];

FormControlFileList: TreeRecursiveFunction[Tree, INT, MesaCode.syntax, MesaCode.linkCalls, Usage.arg]
 Returns[FileSeq, Usage.result]
 DamagedReps[Usage.arg];

RecordMultipleBaseTypes: TreeRecursiveFunction[Tree, ROPE, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

BaseDeclCode: TreeRecursiveFunction[Tree, LookupContext] Returns[MesaCode];

FormAbstRightSideContext: TreeRecursiveFunction[Tree, Context.arg] Returns[Context.result]
 DamagedReps[Context.arg];

DataBodyFieldTypeCode: TreeRecursiveFunction[Tree, LookupContext] Returns[MesaCode];

ProdDataTypeDefCode: TreeRecursiveFunction[Tree, MesaCode.prodName, LookupContext] Returns[MesaCode.result];

FormProcsNamesCode: TreeRecursiveFunction[Tree, MesaCode.prodName] Returns[MesaCode.result];

FormTypeUse: TreeRecursiveFunction[Tree, Usage.arg, LookupContext] Returns[Usage.result]
 DamagedReps[Usage.arg];

ProdBuildDataRcdCode: TreeRecursiveFunction[Tree, MesaCode.a, MesaCode.b] Returns[MesaCode.r];

FormRecFcnsDeclCode: TreeRecursiveFunction[Tree, MesaCode.prodName, LookupContext, Usage.arg]
 Returns[MesaCode.result, Usage.result]
  DamagedReps[Usage.arg];

FormVarDeclCode: TreeRecursiveFunction[Tree, TypeList] Returns[MesaCode];

FormRecordOfDamageShareAssertion: TreeRecursiveFunction[Tree, FcnDefGraph.arg] Returns[FcnDefGraph.result]
 DamagedReps[FcnDefGraph.arg]



End.