-- 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.