DIRECTORY
  SymbolTableDefs USING [SymbolType],
  TreesDefs USING [TreeNode];
  
PrintDclsDefs: DEFINITIONS = {

  -- prints a function head
  PrintFunctionHead: PROCEDURE [name: LONG STRING,
  	functionAttributes: LONG POINTER TO TreesDefs.TreeNode, pointerTo: BOOLEAN,
	nameList: LONG POINTER TO TreesDefs.TreeNode, argList: LONG POINTER TO TreesDefs.TreeNode];

  -- prints a declarations parse tree	
  PrintDeclarations: PROCEDURE [node: LONG POINTER TO TreesDefs.TreeNode,
      indent: CARDINAL, separator: LONG STRING, terminateWithSeparator: BOOLEAN];
      
  GetAttributes: PROCEDURE [node: LONG POINTER TO TreesDefs.TreeNode, indent: CARDINAL]
      RETURNS [symType: SymbolTableDefs.SymbolType, typeString: LONG STRING];
   
  MergeAttributes: PROCEDURE [n1: LONG POINTER TO TreesDefs.TreeNode,
        n2: LONG POINTER TO TreesDefs.TreeNode]
	RETURNS [result: LONG POINTER TO TreesDefs.TreeNode];
  }.