DIRECTORY
	ThreeC4CentralDef USING[],
	IO,
	ThreeC4CSyntax1Def,
	ThreeC4BaseDecl1Def,
	OneCasabaParser,
	FS,
	ThreeC4Support,
	ThreeC4CSyntax2Def;

ThreeC4CentralImpl: CEDAR PROGRAM IMPORTS IO, ThreeC4CSyntax1Def, ThreeC4BaseDecl1Def, OneCasabaParser, FS, ThreeC4Support, ThreeC4CSyntax2Def EXPORTS ThreeC4CentralDef= 
BEGIN
OPEN IO, ThreeC4CSyntax1Def, ThreeC4BaseDecl1Def, OneCasabaParser, FS, ThreeC4Support, ThreeC4CSyntax2Def;
ParseTable: OneCasabaParser.ParserTable ← NIL;

ParseOneStream: PUBLIC PROC[from: IO.STREAM, debugFlags: CARDINAL, debuggingTextTo: IO.STREAM] RETURNS[REF ANY] =
BEGIN
RETURN[ThreeC4Support.ParseOneStream[from, ParseTable, SetUpLinks, 90, debugFlags, debuggingTextTo]]
END;

SetUpLinks: PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
ThreeC4CSyntax1LinkProc[prodLinkArray, tknLinkArray];
ThreeC4CSyntax2LinkProc[prodLinkArray, tknLinkArray];
ThreeC4BaseDecl1LinkProc[prodLinkArray, tknLinkArray];
END;


-- obtain parser table

	BEGIN
	tableStream: IO.STREAM ← FS.StreamOpen["ThreeC4Central.kipperedParseTables"];
	ParseTable ← OneCasabaParser.BuildParserTableFromKipperedStream[tableStream];
	IO.Close[tableStream];
	END;

END..