-- ThreeC4ModItemAbGram.ThreeC4
-- Sturgis, May 6, 1986 3:57:17 pm PDT

Include[ThreeC4BaseDecl, ThreeC4RecFcnDecl, ThreeC4BasicAbTypes];

ThreeC4ModItemAbGram: Module =
Begin

-- ModuleItem is declared in BasicAbTypes
 -- module items come in several flavors

 ModuleItem.cedarItems: AbstractProduction[CedarItems];
 ModuleItem.baseItems: AbstractProduction[BaseItems];
 ModuleItem.abGramItems: AbstractProduction[AbGramItems];
 ModuleItem.cGramItems: AbstractProduction[CGramItems];

 -- generic tokens are not in any of the above flavors, because they have a combined action
 -- requiring functions that apply to several of the flavors

 ModuleItem.genTkn: AbstractProduction[Identifier, Rope.tknName];



-- some of the flavors follow, others are in other files


-- CedarItems is declared in BasicAbTypes
  -- CedarItems have the property that they generate no def file code

 CedarItems.cedarTypes: AbstractProduction[IdList];
 CedarItems.cedarTypesFrom: AbstractProduction[IdList, Identifier];
 CedarItems.cedarEnumTypeFrom:
   AbstractProduction[Identifier.typeName, IdList.values, Identifier.fileName];
 CedarItems.cedarFunctionFrom:
   AbstractProduction[Identifier.funName, ModIdList.args, ModIdList.results, Identifier.fileName, DamageShareAssertions];



-- CGramItems is declared in BasicAbTypes
 -- (CGramItems = concrete grammar items)

 CGramItems.simpleTokens: AbstractProduction[RopeList];
 CGramItems.nonTerminal: AbstractProduction[Identifier.name, Identifier.builds];
 CGramItems.concreteProduction: AbstractProduction[ConcreteProduction]


End.