Begin { "Include" "Module" "Control" "Begin" "End" }: SimpleTokens; { ":" "=" "[" "]" "," "_" "." "{" "}" ";" }: SimpleTokens; { "CedarType" "CedarFunction" "AbstractType" "From" }: SimpleTokens; { "BaseType" "EnumeratedBaseType" "BaseFunction" }: SimpleTokens; { "AbstractProduction" "TreeRecursiveFunction" }: SimpleTokens; { "Returns" "CedarEnumType" "GenericToken" "SimpleTokens" "NonTerminal" }: SimpleTokens; { "Builds" "Build" }: SimpleTokens; { "for" "let" "if" "then" "else" "where" "(" ")" "<" ">" }: SimpleTokens; { "SourcePosition" "SourceLength" }: SimpleTokens; { "DamagedReps" "SharedReps" }: SimpleTokens; MainGoal: NonTerminal; WholeFile: NonTerminal; OptionalIncludeClause: NonTerminal; ModuleList: NonTerminal; ModuleBody: NonTerminal; ModuleItemList: NonTerminal; ModuleItem: NonTerminal; CedarItems: NonTerminal; CGramItems: NonTerminal; BaseItems: NonTerminal; OptionalArgModIdList: NonTerminal; AbGramItems: NonTerminal; AbProductionFcnImpl: NonTerminal; RecFcnImplList: NonTerminal; RecExpression: NonTerminal; RecExp1: NonTerminal; OptionalRecExpSeq: NonTerminal; RecExpSeq: NonTerminal; WhereExpSeq: NonTerminal; WhereExp: NonTerminal; OptionalConcreteRightSideList: NonTerminal; ConcreteRightSideList: NonTerminal; ConcreteRightSideItem: NonTerminal; BuildExp: NonTerminal; IntervalExp: NonTerminal; BuildExpList: NonTerminal; ModId: NonTerminal; IdList: NonTerminal; OptionalModIdList: NonTerminal; ModIdList: NonTerminal; RopeList: NonTerminal; DamageShareAssertionList: NonTerminal; DamageShareAssertion: NonTerminal; Identifier: GenericToken = "tokenID" ; Rope: GenericToken = "tokenROPE" ; NonNegInteger: GenericToken = "tokenDECIMAL" ; MainGoal _ WholeFile ; WholeFile _ OptionalIncludeClause ModuleList "." ; OptionalIncludeClause.empty _ ; OptionalIncludeClause.nonEmpty _ "Include" "[" IdList "]" ";" ; ModuleList.one _ ModuleBody ; ModuleList.many _ ModuleList ";" ModuleBody ; ModuleBody.control _ Identifier ":" "Control" "Module" ; ModuleBody.normal _ Identifier ":" "Module" "=" "Begin" ModuleItemList "End" ; ModuleItemList.one _ ModuleItem ; ModuleItemList.many _ ModuleItemList ";" ModuleItem ; ModuleItem.cedarItems _ CedarItems ; ModuleItem.baseItems _ BaseItems ; ModuleItem.abGramItems _ AbGramItems ; ModuleItem.cGramItems _ CGramItems ; ModuleItem.genTkn _ Identifier ":" "GenericToken" "=" Rope ; CedarItems.cedarTypesFromOne _ Identifier ":" "CedarType" "From" Identifier ; CedarItems.cedarTypesFromMany _ Identifier "," IdList ":" "CedarType" "From" Identifier ; CedarItems.cedarTypesOne _ Identifier ":" "CedarType" ; CedarItems.cedarTypesMany _ Identifier "," IdList ":" "CedarType" ; CedarItems.cedarEnumTypeFrom _ Identifier ":" "CedarEnumType" "=" "{" IdList "}" "From" Identifier ; CedarItems.cedarFnFrom _ Identifier ":" "CedarFunction" OptionalArgModIdList "Returns" "[" ModIdList "]" "From" Identifier DamageShareAssertionList ; CGramItems.simpleTokens _ "{" RopeList "}" ":" "SimpleTokens" ; CGramItems.nonTerminal _ Identifier ":" "NonTerminal" "Builds" Identifier ; CGramItems.concreteProduction _ "for" ModId "_" OptionalConcreteRightSideList "Build" BuildExp ; BaseItems.oneBaseType _ Identifier ":" "BaseType" ; BaseItems.manyBaseTypes _ Identifier "," IdList ":" "BaseType" ; BaseItems.enumBaseType _ Identifier ":" "EnumeratedBaseType" "=" "{" IdList "}" ; BaseItems.baseFcn _ Identifier ":" "BaseFunction" OptionalArgModIdList "Returns" "[" ModIdList "]" DamageShareAssertionList ; BaseItems.treeRecFcn _ Identifier ":" "TreeRecursiveFunction" "[" ModIdList "]" "Returns" "[" ModIdList "]" DamageShareAssertionList ; OptionalArgModIdList.empty _ ; OptionalArgModIdList.present _ "[" ModIdList "]" ; AbGramItems.abType _ Identifier ":" "AbstractType" "[" IdList "]" ; AbGramItems.abProdTwoIds _ Identifier "." Identifier ":" "AbstractProduction" "[" OptionalModIdList "]" ; AbGramItems.abProdOneId _ Identifier ":" "AbstractProduction" "[" OptionalModIdList "]" ; AbGramItems.abProdFcnImpl _ AbProductionFcnImpl ; AbProductionFcnImpl.oneId _ "for" Identifier ":" "AbstractProduction" "[" OptionalModIdList "]" RecFcnImplList ; AbProductionFcnImpl.twoIds _ "for" Identifier "." Identifier ":" "AbstractProduction" "[" OptionalModIdList "]" RecFcnImplList ; RecFcnImplList.one _ "let" Identifier "[" IdList "]" "_" RecExpression ; RecFcnImplList.many _ RecFcnImplList "let" Identifier "[" IdList "]" "_" RecExpression ; RecExpression.RecExp1 _ RecExp1 ; RecExpression.withWhereList _ RecExp1 WhereExpSeq ; RecExp1.cond _ "if" RecExp1 "then" RecExp1 "else" RecExp1 ; RecExp1.paranthesis _ "(" RecExpression ")" ; RecExp1.call _ Identifier "[" OptionalRecExpSeq "]" ; RecExp1.seq _ "<" RecExpSeq ">" ; RecExp1.id _ Identifier ; RecExp1.modId _ Identifier "." Identifier ; RecExp1.rope _ Rope ; RecExp1.numb _ NonNegInteger ; RecExp1.sourcePosition _ "SourcePosition" "[" ModId "]" ; RecExp1.sourceLength _ "SourceLength" "[" ModId "]" ; OptionalRecExpSeq.empty _ ; OptionalRecExpSeq.nonEmpty _ RecExpSeq ; RecExpSeq.one _ RecExpression ; RecExpSeq.many _ RecExpSeq "," RecExpression ; WhereExpSeq.one _ WhereExp ; WhereExpSeq.many _ WhereExpSeq WhereExp ; WhereExp.oneId _ "where" Identifier "_" RecExp1 ; WhereExp.manyIds _ "where" "<" IdList ">" "_" RecExp1 ; OptionalConcreteRightSideList.empty _ ; OptionalConcreteRightSideList.nonEmpty _ ConcreteRightSideList ; ConcreteRightSideList.one _ ConcreteRightSideItem ; ConcreteRightSideList.many _ ConcreteRightSideList ConcreteRightSideItem ; ConcreteRightSideItem.rope _ Rope ; ConcreteRightSideItem.modId _ ModId ; BuildExp.modId _ ModId ; BuildExp.buildNodeBoth _ ModId "[" IntervalExp "," BuildExpList "]" ; BuildExp.buildNodeListOnly _ ModId "[" BuildExpList "]" ; BuildExp.buildNodeIntervalOnly _ ModId "[" IntervalExp "]" ; BuildExp.buildNodeNeither _ ModId "[" "]" ; IntervalExp.closed _ "[" ModId "," ModId "]" ; IntervalExp.leftOpen _ "(" ModId "," ModId "]" ; IntervalExp.rightOpen _ "[" ModId "," ModId ")" ; IntervalExp.fullOpen _ "(" ModId "," ModId ")" ; BuildExpList.one _ BuildExp ; BuildExpList.many _ BuildExpList "," BuildExp ; ModId.oneId _ Identifier ; ModId.twoIds _ Identifier "." Identifier ; IdList.one _ Identifier ; IdList.many _ Identifier "," IdList ; OptionalModIdList.empty _ ; OptionalModIdList.nonEmpty _ ModIdList ; ModIdList.one _ ModId ; ModIdList.many _ ModIdList "," ModId ; RopeList.one _ Rope ; RopeList.many _ RopeList Rope ; DamageShareAssertionList.empty _ ; DamageShareAssertionList.nonEmpty _ DamageShareAssertionList DamageShareAssertion ; DamageShareAssertion.damageAssertion _ "DamagedReps" "[" ModIdList "]" ; DamageShareAssertion.shareAssertion _ "SharedReps" "[" ModIdList "]" ; End.