<> <> <> <> <> <> Include [ SaffronBaseDecls, SaffronTreeDecls ]; SaffronAT: Module = Begin <> foo: TreeRecursiveFunction[Tree] Returns[INT]; <> ExpPTreeVal: BaseFunction [ Exp ] Returns [ ExpPTree ]; ScopePTreeVal: BaseFunction [ Scope ] Returns [ ScopePTree ]; ScopeVal: BaseFunction [ ScopePTree ] Returns [ Scope ]; ModulePVal: BaseFunction [ModulePPTree] Returns [ModuleP]; DefBodyPTreeVal: BaseFunction [DefBody] Returns [DefBodyPTree]; DefBodyVal: BaseFunction [DefBodyPTree] Returns [DefBody]; <> <> Top: AbstractType [ DoTop, Explore ]; ModuleP: AbstractType [ MakeEnvironment, Explore ]; Directory: AbstractType [ ProcessDirectoryClause, ExploreDirectoryClause ]; IncludeItem: AbstractType [ ProcessDirectoryClause, ExploreDirectoryClause ]; Using: AbstractType [ MakeInterfaceTGN ]; DefBody: AbstractType [ MakeContextTree, MakeContextTree1 ]; DefHead: AbstractType [ foo ]; Cedar: AbstractType [ foo ]; ProgHead: AbstractType [ foo ]; Class: AbstractType [ foo ]; Interface: AbstractType [ foo ]; ModuleList: AbstractType [ foo ]; ModuleItem: AbstractType [ foo ]; Lambda: AbstractType [ foo ]; Locks: AbstractType [ foo ]; Shares: AbstractType [ foo ]; Entry: AbstractType [ foo ]; Inline: AbstractType [ foo ]; <> OptSize: AbstractType [ GetExpVal ]; OptType: AbstractType [ MakeType ]; BindList: AbstractType [ MakeBindListContextTreeWithScope, MakeBindListContextTreeWithDefBody, UpdateLocalContext]; Uncounted: AbstractType [ GetBooleanVal ]; MachineDependent: AbstractType [ GetBooleanVal ]; Monitored: AbstractType [ GetBooleanVal ]; ElementList: AbstractType [ MakeElementList ]; Element: AbstractType [ ElementInfo ]; RecList: AbstractType [ MakeFieldList ]; PairList: AbstractType [ AddPairsToFieldList ]; PairItem: AbstractType [ AddPairsToFieldList ]; TypeList: AbstractType [ AddToFieldList ]; TypeItem: AbstractType [ AddToFieldList ]; IdentList: AbstractType [ AddNamesToFieldList, PutNewNamesInLocalContext1, RecAddArcsfromLVTGNtoTGN, MakeNameSequence, AddNamesToSequence ]; Tag: AbstractType [ MakeVariantFlavor, MakeTagType, GetSequenceTagInfo ]; TagType: AbstractType [ MakeTagType ]; VariantList: AbstractType [ MakeUnionList, AddVariantsToUnionList, MakeStarTagType, AddVariantNamesToEnumTypeTGN ]; VariantItem: AbstractType [ AddVariantsToUnionList, AddVariantNamesToEnumTypeTGN ]; Packed: AbstractType [ GetBooleanVal ]; Ordered: AbstractType [ GetBooleanVal ]; Base: AbstractType [ GetBooleanVal ]; PointerType: AbstractType [ GetPointerTypeInfo ]; OptInterval: AbstractType [ GetBoundsVal ]; DecList: AbstractType [ UpdateLocalContext, PutNewNamesInLocalContext, FillInLocalContext, HangContextsFromContextTree]; Declaration: AbstractType [ PutNewNamesInLocalContext, FillInLocalContext, HangContextsFromContextTree ]; OptDecList: AbstractType [ UpdateLocalContext, HangContextsFromContextTree ]; DescList: AbstractType [ foo ]; Initialization: AbstractType [ foo ]; InitialValue: AbstractType [ foo ]; Scope: AbstractType [ MakeContextTree, MakeContextTree1 ]; Ident: AbstractType [ AddNamesToFieldList , PutNewNamesInLocalContext1, RecAddArcsfromLVTGNtoTGN, GetIdentInfo, AddNamesToSequence ]; <> OptArgs: AbstractType [ foo ]; BindItem: AbstractType [ UpdateLocalContext ]; KeyList: AbstractType [ foo ]; KeyItem: AbstractType [ foo ]; Relation: AbstractType [ foo ]; Access: AbstractType [ GetAccessVal ]; Bounds: AbstractType [ GetLowerAndUpper ]; Default: AbstractType [ GetDefaultExpVal ]; Position: AbstractType [ GetPositionVal ]; OptBits: AbstractType [ GetBoundsVal ]; <> Relop: AbstractType [ foo ]; RelationTail: AbstractType [ foo ]; ExpList: AbstractType [ foo ]; Exp: AbstractType [ IdVal ]; OptExp: AbstractType [ foo ]; OrderList: AbstractType [ foo ]; MultOp: AbstractType [ foo ]; AddOp: AbstractType [ foo ]; ReadOnly: AbstractType [ GetBooleanVal ]; CatchAny: AbstractType [ foo ]; Interval: AbstractType [ GetBoundsVal ]; SelectExpList: AbstractType [ foo ]; SelectExpItem: AbstractType [ foo ]; TypeId: AbstractType [ MakeType, LookupTypeId ]; TypeApply: AbstractType [ MakeType ]; Range: AbstractType [ foo ]; PrefixOp: AbstractType [ foo ]; New: AbstractType [ foo ]; Free: AbstractType [ foo ]; Cons: AbstractType [ foo ]; ListCons: AbstractType [ foo ]; <> Safe: AbstractType [ GetBooleanVal ]; TransferMode: AbstractType [ MakeTransferMode ]; ExitItem: AbstractType [ foo ]; SelectHead: AbstractType [ foo ]; SelectStmtList: AbstractType [ foo ]; SelectStmtItem: AbstractType [ foo ]; ForClause: AbstractType [ foo ]; ControlId: AbstractType [ foo ]; Decreasing: AbstractType [ foo ]; Transfer: AbstractType [ foo ]; SelectLabel: AbstractType [ foo ]; SelectTestList: AbstractType [ foo ]; Block: AbstractType [ HangContextsFromContextTree ]; Checked: AbstractType [ foo ]; CodeList: AbstractType [ foo ]; Statement: AbstractType [ HangContextsFromContextTree ]; OptStatement: AbstractType [ foo ]; StatementList: AbstractType [ HangContextsFromContextTree ]; DoTest: AbstractType [ foo ]; DoExit: AbstractType [ foo ]; TransferOp: AbstractType [ foo ]; Catch: AbstractType [ foo ]; CatchCase: AbstractType [ foo ]; CatchCaseList: AbstractType [ foo ]; TypeOp: AbstractType [ foo ]; IdList: AbstractType [ AddNamesToUnionList , AddVariantNamesToEnumTypeTGN, AddIdsToInterfaceTGN]; Arguments: AbstractType [ MakeArgumentLists ]; ParameterList: AbstractType [ MakeFieldList ]; TypeExp: AbstractType [ MakeType ]; Num: AbstractType [ foo ]; Qualifier: AbstractType [ foo ]; SignalList: AbstractType [ foo ]; ExitList: AbstractType [ foo ]; <> Junk: AbstractType [ foo ]; Subrange: AbstractType [ MakeType ]; -- ??? End; SaffronAG1: Module = Begin <> <> Junk: AbstractProduction [ ]; <> <> Top.modulep: AbstractProduction [ ModuleP ]; <> <> Exp.sum: AbstractProduction [ Exp.left, AddOp, Exp.right ]; Exp.unarysum: AbstractProduction [ AddOp, Exp ]; Exp.product: AbstractProduction [ Exp.left, MultOp, Exp.right ]; Exp.or: AbstractProduction [ Exp.left, Exp.right ]; Exp.and: AbstractProduction [ Exp.left, Exp.right ]; Exp.not: AbstractProduction [ Exp ]; Exp.relation: AbstractProduction [ Exp, Relation ]; Exp.ifthenelse: AbstractProduction [ Exp.cond, Exp.thenpart, Exp.elsepart ]; Exp.select: AbstractProduction [ SelectHead, SelectExpList, Exp.default ]; Exp.assign: AbstractProduction [ Exp.lhs, Exp.rhs ]; Exp.multiassign: AbstractProduction [ ExpList, Exp ]; Exp.id: AbstractProduction [ Id ]; Exp.num: AbstractProduction [ Num ]; Exp.string: AbstractProduction [ String ]; Exp.flnum: AbstractProduction [ Flnum ]; Exp.char: AbstractProduction [ Char ]; Exp.atom: AbstractProduction [ Atom ]; Exp.narrow: AbstractProduction [ Exp, OptType, Catch ]; Exp.loophole: AbstractProduction [ Exp, OptType ]; Exp.apply: AbstractProduction [ Exp.rator, Exp.rand, Catch ]; Exp.qualifier: AbstractProduction [ Exp, Qualifier ]; Exp.explist: AbstractProduction [ ExpList ]; Exp.prefixop: AbstractProduction [ PrefixOp, OrderList ]; Exp.val: AbstractProduction [ OrderList ]; Exp.all: AbstractProduction [ OrderList ]; Exp.new: AbstractProduction [ New, TypeExp, Initialization, Catch ]; Exp.cons: AbstractProduction [ Cons, ExpList, Catch ]; Exp.listcons: AbstractProduction [ ListCons, ExpList ]; Exp.nil: AbstractProduction [ ]; Exp.typeop: AbstractProduction [ TypeOp, TypeExp ]; Exp.size: AbstractProduction [ TypeExp ]; Exp.size2: AbstractProduction [ TypeExp, Exp ]; Exp.bits: AbstractProduction [ TypeExp ]; Exp.bits2: AbstractProduction [ TypeExp, Exp ]; Exp.bytes: AbstractProduction [ TypeExp ]; Exp.bytes2: AbstractProduction [ TypeExp, Exp ]; Exp.units: AbstractProduction [ TypeExp ]; Exp.units2: AbstractProduction [ TypeExp, Exp ]; Exp.words: AbstractProduction [ TypeExp ]; Exp.words2: AbstractProduction [ TypeExp, Exp ]; Exp.istype: AbstractProduction [ Exp, TypeExp ]; Exp.address: AbstractProduction [ Exp ]; Exp.descriptor: AbstractProduction [ DescList ]; Exp.error: AbstractProduction [ ]; Exp.transfer: AbstractProduction [ TransferOp, Exp ]; <> Num.decimal: AbstractProduction [ Decimalnum ]; Num.octal: AbstractProduction [ Octalnum ]; Num.hex: AbstractProduction [ Hexnum ]; <> AddOp.plus: AbstractProduction [ ]; AddOp.minus: AbstractProduction [ ]; <> MultOp.times: AbstractProduction [ ]; MultOp.divide: AbstractProduction [ ]; MultOp.mod: AbstractProduction [ ] End; SaffronAG2: Module = Begin <> SelectHead.plain: AbstractProduction [ Exp ]; SelectHead.discriminating: AbstractProduction [ BindItem, OptExp ]; <> SelectExpList.empty: AbstractProduction [ ]; SelectExpList.more: AbstractProduction [ SelectExpList, SelectExpItem ]; <> SelectExpItem: AbstractProduction [ SelectLabel, Exp ]; <> SelectLabel.type: AbstractProduction [ Ident, TypeExp ]; SelectLabel.test: AbstractProduction [ SelectTestList ]; <> SelectTestList.one: AbstractProduction [ Relation ]; SelectTestList.more: AbstractProduction [ SelectTestList, Relation ]; <> Relation.negative: AbstractProduction [ RelationTail ]; Relation.positive: AbstractProduction [ RelationTail ]; <> RelationTail.range: AbstractProduction [ Range ]; RelationTail.relop: AbstractProduction [ Relop, Exp ]; <> Relop.eq: AbstractProduction [ ]; Relop.ne: AbstractProduction [ ]; Relop.lt: AbstractProduction [ ]; Relop.le: AbstractProduction [ ]; Relop.gt: AbstractProduction [ ]; Relop.ge: AbstractProduction [ ]; <> Range.typeid: AbstractProduction [ TypeId ]; Range.subrange: AbstractProduction [ Subrange ]; <> Catch: AbstractProduction [ CatchCaseList, CatchAny ]; <> CatchAny.absent: AbstractProduction [ ]; CatchAny.present: AbstractProduction [ Statement ]; <> CatchCaseList.empty: AbstractProduction [ ]; CatchCaseList.more: AbstractProduction [ CatchCaseList, CatchCase ]; <> CatchCase: AbstractProduction [ SignalList, Statement ]; <> SignalList.one: AbstractProduction [ Exp ]; SignalList.more: AbstractProduction [ SignalList, Exp ]; <> ExpList.keylist: AbstractProduction [ KeyList ]; ExpList.orderlist: AbstractProduction [ OrderList ]; <> KeyList.one: AbstractProduction [ KeyItem ]; KeyList.more: AbstractProduction [ KeyList, KeyItem ]; <> KeyItem: AbstractProduction [ Id, OptExp ]; <> OrderList.one: AbstractProduction [ OptExp ]; OrderList.more: AbstractProduction [ OrderList, OptExp ]; <> OptExp.empty: AbstractProduction [ ]; OptExp.trash: AbstractProduction [ ]; OptExp.exp: AbstractProduction [ Exp ]; <> OptType.absent: AbstractProduction [ ]; OptType.present: AbstractProduction [ TypeExp ] End; SaffronAG3: Module = Begin <> Qualifier.prefixop: AbstractProduction [ PrefixOp ]; Qualifier.typeop: AbstractProduction [ TypeOp ]; Qualifier.size: AbstractProduction [ ]; Qualifier.bits: AbstractProduction [ ]; Qualifier.bytes: AbstractProduction [ ]; Qualifier.units: AbstractProduction [ ]; Qualifier.words: AbstractProduction [ ]; Qualifier.apply: AbstractProduction [ ExpList, Catch ]; Qualifier.select: AbstractProduction [ Id ]; Qualifier.indirect: AbstractProduction [ ]; <> PrefixOp.long : AbstractProduction [ ]; PrefixOp.abs : AbstractProduction [ ]; PrefixOp.pred : AbstractProduction [ ]; PrefixOp.succ : AbstractProduction [ ]; PrefixOp.ord : AbstractProduction [ ]; PrefixOp.min : AbstractProduction [ ]; PrefixOp.max : AbstractProduction [ ]; PrefixOp.base : AbstractProduction [ ]; PrefixOp.length : AbstractProduction [ ]; <> TypeOp.code: AbstractProduction [ ]; TypeOp.first: AbstractProduction [ ]; TypeOp.last: AbstractProduction [ ]; TypeOp.nil: AbstractProduction [ ]; <> New.plain: AbstractProduction [ ]; New.zoned: AbstractProduction [ Exp ]; <> Cons.plain: AbstractProduction [ ]; Cons.zoned: AbstractProduction [ Exp ]; <> ListCons.plain: AbstractProduction [ ]; ListCons.zoned: AbstractProduction [ Exp ]; <> DescList.explicitlength: AbstractProduction [ Exp.base, Exp.length, OptType ]; DescList.defaultlength: AbstractProduction [ Exp ]; <> Initialization.empty: AbstractProduction [ ]; Initialization.binding: AbstractProduction [ InitialValue ]; Initialization.assignment: AbstractProduction [ InitialValue ]; <> InitialValue.trash: AbstractProduction [ ]; InitialValue.code: AbstractProduction [ ]; InitialValue.exp: AbstractProduction [ Exp ]; InitialValue.block: AbstractProduction [ Checked, Inline, Block ]; InitialValue.machinecode: AbstractProduction [ Checked, CodeList ]; <> Checked.empty: AbstractProduction [ ]; Checked.checked: AbstractProduction [ ]; Checked.trusted: AbstractProduction [ ]; Checked.unchecked: AbstractProduction [ ]; <> Inline.yes: AbstractProduction [ ]; Inline.no: AbstractProduction [ ]; <> CodeList.one: AbstractProduction [ OrderList ]; CodeList.more: AbstractProduction [ CodeList, OrderList ]; <> TransferOp.signal: AbstractProduction [ ]; TransferOp.error: AbstractProduction [ ]; TransferOp.start: AbstractProduction [ ]; TransferOp.join: AbstractProduction [ ]; TransferOp.new: AbstractProduction [ ]; TransferOp.fork: AbstractProduction [ ]; End; SaffronAG4: Module = Begin <> <> Statement.ifthen: AbstractProduction [ Exp, Statement ]; Statement.ifthenelse: AbstractProduction [ Exp, Statement.thenpart, Statement.elsepart ]; Statement.select: AbstractProduction [ SelectHead, SelectStmtList, OptStatement ]; Statement.exp: AbstractProduction [ Exp ]; Statement.assign: AbstractProduction [ Exp.lhs, Exp.rhs ]; Statement.multiassign: AbstractProduction [ ExpList, Exp ]; Statement.block: AbstractProduction [ Checked, Block ]; Statement.loopcontrol: AbstractProduction [ ForClause, DoTest, Scope, DoExit ]; Statement.exit: AbstractProduction [ ]; Statement.loop: AbstractProduction [ ]; Statement.goto: AbstractProduction [ Id ]; Statement.return: AbstractProduction [ OptArgs ]; Statement.transfer: AbstractProduction [ Transfer, Exp ]; Statement.free: AbstractProduction [ Free, Exp, Catch ]; Statement.wait: AbstractProduction [ Exp ]; Statement.error: AbstractProduction [ ]; Statement.stop: AbstractProduction [ ]; Statement.null: AbstractProduction [ ]; Statement.resume: AbstractProduction [ OptArgs ]; Statement.reject: AbstractProduction [ ]; Statement.continue: AbstractProduction [ ]; Statement.retry: AbstractProduction [ ]; Statement.getstate: AbstractProduction [ Exp ]; Statement.setstate: AbstractProduction [ Exp ]; <> OptStatement.absent: AbstractProduction [ ]; OptStatement.present: AbstractProduction [ Statement ]; <> SelectStmtList.empty: AbstractProduction [ ]; SelectStmtList.more: AbstractProduction [ SelectStmtList, SelectStmtItem ]; <> SelectStmtItem: AbstractProduction [ SelectLabel, Statement ]; <> Block: AbstractProduction [ Scope, ExitList ]; <> Scope: AbstractProduction [ BindList, Catch, OptDecList, StatementList ]; <> OptDecList.absent: AbstractProduction [ ]; OptDecList.present: AbstractProduction [ DecList ]; <> StatementList.empty: AbstractProduction [ ]; StatementList.more: AbstractProduction [ StatementList, Statement ] End; SaffronAG5: Module = Begin <> DecList.one: AbstractProduction [ Declaration ]; DecList.many: AbstractProduction [ DecList.head, DecList.tail ]; <> Declaration.value: AbstractProduction [ IdentList, Access, Entry, ReadOnly, TypeExp, Initialization ]; Declaration.type: AbstractProduction [ IdentList, Access.id, Access.type, TypeExp, Default ]; Declaration.opaquetype: AbstractProduction [ IdentList, Access, OptSize ]; <> OptSize.absent: AbstractProduction [ ]; OptSize.present: AbstractProduction [ Exp ]; <> Entry.entry: AbstractProduction [ ]; Entry.internal: AbstractProduction [ ]; Entry.empty: AbstractProduction [ ]; <> ExitList.empty: AbstractProduction [ ]; ExitList.more: AbstractProduction [ ExitList, ExitItem ]; <> ExitItem: AbstractProduction [ IdList, Statement ]; <> BindList.empty: AbstractProduction [ ]; BindList.more: AbstractProduction [ BindList, BindItem ]; <> BindItem.named: AbstractProduction [ Id, Exp ]; BindItem.unnamed: AbstractProduction [ Exp ]; <> ForClause.assignation: AbstractProduction [ ControlId, Exp.initial, Exp.next ]; ForClause.iteration: AbstractProduction [ ControlId, Decreasing, Range ]; ForClause.repetition: AbstractProduction [ Range ]; ForClause.empty: AbstractProduction [ ]; <> ControlId.new: AbstractProduction [ Ident, TypeExp ]; ControlId.old: AbstractProduction [ Id ]; <> Decreasing.yes: AbstractProduction [ ]; Decreasing.no: AbstractProduction [ ]; <> DoTest.until: AbstractProduction [ Exp ]; DoTest.while: AbstractProduction [ Exp ]; DoTest.empty: AbstractProduction [ ]; <> DoExit: AbstractProduction [ ExitList, OptStatement ]; <> OptArgs.explist: AbstractProduction [ ExpList ]; OptArgs.exp: AbstractProduction [ Exp ]; OptArgs.empty: AbstractProduction [ ]; <> Transfer.signal: AbstractProduction [ ]; Transfer.error: AbstractProduction [ ]; Transfer.returnwitherror: AbstractProduction [ ]; Transfer.start: AbstractProduction [ ]; Transfer.restart: AbstractProduction [ ]; Transfer.join: AbstractProduction [ ]; Transfer.notify: AbstractProduction [ ]; Transfer.broadcast: AbstractProduction [ ]; Transfer.transferwith: AbstractProduction [ ]; Transfer.returnwith: AbstractProduction [ ]; <> Free.plain: AbstractProduction [ ]; Free.zoned: AbstractProduction [ Exp ] End; SaffronAG6: Module = Begin <> <> TypeExp.typeid: AbstractProduction [ TypeId ]; TypeExp.subrange: AbstractProduction [ Subrange ]; TypeExp.enum: AbstractProduction [ MachineDependent, ElementList ]; TypeExp.record: AbstractProduction [ MachineDependent, Monitored, RecList ]; TypeExp.pointer: AbstractProduction [ Ordered, Base, PointerType ]; TypeExp.var: AbstractProduction [ TypeExp ]; TypeExp.ref: AbstractProduction [ ReadOnly, TypeExp ]; TypeExp.refany: AbstractProduction [ ReadOnly ]; TypeExp.refunspecified: AbstractProduction [ ]; TypeExp.list: AbstractProduction [ ReadOnly, TypeExp ]; TypeExp.array: AbstractProduction [ Packed, OptType, TypeExp ]; TypeExp.descriptor: AbstractProduction [ ReadOnly, TypeExp ]; TypeExp.transfer: AbstractProduction [ Safe, TransferMode, Arguments ]; TypeExp.relative: AbstractProduction [ TypeId, TypeExp ]; TypeExp.zone: AbstractProduction [ Uncounted ]; TypeExp.long: AbstractProduction [ TypeExp ]; TypeExp.frame: AbstractProduction [ Id ]; TypeExp.painted: AbstractProduction [ TypeId, TypeExp ]; TypeExp.typeapply: AbstractProduction [ TypeApply ]; TypeExp.union: AbstractProduction [ Tag, VariantList ]; TypeExp.sequence: AbstractProduction [ Packed, Tag, TypeExp ]; <> TypeId.id: AbstractProduction [ Id ]; TypeId.qualifier: AbstractProduction [ TypeId, Id ]; <> Subrange.named: AbstractProduction [ TypeId, Interval ]; Subrange.unnamed: AbstractProduction [ Interval ]; <> Interval.cc: AbstractProduction [ Bounds ]; Interval.co: AbstractProduction [ Bounds ]; Interval.oc: AbstractProduction [ Bounds ]; Interval.oo: AbstractProduction [ Bounds ]; <> Bounds: AbstractProduction [ Exp.lower, Exp.upper ]; <> MachineDependent.yes: AbstractProduction [ ]; MachineDependent.no: AbstractProduction [ ]; <> Monitored.yes: AbstractProduction [ ]; Monitored.no: AbstractProduction [ ]; <> ElementList.empty: AbstractProduction [ ]; ElementList.more: AbstractProduction [ ElementList, Element ]; <> Element.id: AbstractProduction [ Id ]; Element.idwithrep: AbstractProduction [ Id, Exp ]; Element.anonymousrep: AbstractProduction [ Exp ]; <> RecList.empty: AbstractProduction [ ]; RecList.pairlist: AbstractProduction [ PairList ]; RecList.typelist: AbstractProduction [ TypeList ]; <> PairList.one: AbstractProduction [ PairItem ]; PairList.many: AbstractProduction [ PairList.head, PairList.tail ]; <> PairItem: AbstractProduction [ IdentList, Access, TypeExp, Default ]; <> TypeList.one: AbstractProduction [ TypeItem ]; TypeList.many: AbstractProduction [ TypeList.head, TypeList.tail ]; <> TypeItem: AbstractProduction [ TypeExp, Default ] End; SaffronAG7: Module = Begin <> Access.empty: AbstractProduction [ ]; Access.public: AbstractProduction [ ]; Access.private: AbstractProduction [ ]; <> Default.empty: AbstractProduction [ ]; Default.gets: AbstractProduction [ ]; Default.getsexp: AbstractProduction [ Exp ]; Default.getstrash: AbstractProduction [ ]; Default.getsexportrash: AbstractProduction [ Exp ]; <> Ident.id: AbstractProduction [ Id ]; Ident.idposition: AbstractProduction [ Id, Position ]; <> Position: AbstractProduction [ Exp, OptBits ]; <> OptBits.absent: AbstractProduction [ ]; OptBits.present: AbstractProduction [ Bounds ]; <> IdentList.one: AbstractProduction [ Ident ]; IdentList.many: AbstractProduction [ IdentList.head, IdentList.tail ]; <> Tag.ident: AbstractProduction [ Ident, Access, TagType ]; Tag.computed: AbstractProduction [ TagType ]; Tag.overlaid: AbstractProduction [ TagType ]; <> TagType.star: AbstractProduction [ ]; TagType.typeexp: AbstractProduction [ TypeExp ]; <> VariantList.one: AbstractProduction [ VariantItem ]; VariantList.more: AbstractProduction [ VariantList, VariantItem ]; <> VariantItem: AbstractProduction [ IdList, RecList ]; <> Packed.yes: AbstractProduction [ ]; Packed.no: AbstractProduction [ ] End; SaffronAG8: Module = Begin <> IdList.one: AbstractProduction [ Id ]; IdList.more: AbstractProduction [ Id, IdList ]; <> Ordered.yes: AbstractProduction [ ]; Ordered.no: AbstractProduction [ ]; <> Base.yes: AbstractProduction [ ]; Base.no: AbstractProduction [ ]; <> PointerType.unspecified: AbstractProduction [ OptInterval ]; PointerType.specified: AbstractProduction [ OptInterval, ReadOnly, TypeExp ]; <> OptInterval.absent: AbstractProduction [ ]; OptInterval.present: AbstractProduction [ Interval ]; <> ReadOnly.yes: AbstractProduction [ ]; ReadOnly.no: AbstractProduction [ ]; <> Safe.empty: AbstractProduction [ ]; Safe.yes: AbstractProduction [ ]; Safe.no: AbstractProduction [ ]; <> TransferMode.proc: AbstractProduction [ ]; TransferMode.port: AbstractProduction [ ]; TransferMode.signal: AbstractProduction [ ]; TransferMode.error: AbstractProduction [ ]; TransferMode.process: AbstractProduction [ ]; TransferMode.program: AbstractProduction [ ]; <> Arguments: AbstractProduction [ ParameterList.input, ParameterList.output ]; <> ParameterList.empty: AbstractProduction [ ]; ParameterList.any: AbstractProduction [ ]; ParameterList.pairlist: AbstractProduction [ PairList ]; ParameterList.typelist: AbstractProduction [ TypeList ]; <> Uncounted.yes: AbstractProduction [ ]; Uncounted.no: AbstractProduction [ ]; <> TypeApply.one: AbstractProduction [ TypeId, Exp ]; TypeApply.morelengths: AbstractProduction [ TypeApply, Exp ]; TypeApply.moreids: AbstractProduction [ TypeApply, Id ] End; SaffronAG9: Module = Begin <> <> ModuleP.impl: AbstractProduction [ Directory, IdentList, Cedar, ProgHead, Checked, Block ]; ModuleP.def: AbstractProduction [ Directory, IdentList, Cedar, DefHead, DefBody ]; <> Directory.empty: AbstractProduction [ ]; Directory.more: AbstractProduction [ Directory, IncludeItem ]; <> IncludeItem.fromp: AbstractProduction [ Id, String, Using ]; IncludeItem.type: AbstractProduction [ Id, Using ]; IncludeItem.plain: AbstractProduction [ Id, Using ]; IncludeItem.typeandid: AbstractProduction [ Id.local, Id.global, Using ]; <> Using.restricted: AbstractProduction [ IdList ]; Using.nothing: AbstractProduction [ ]; Using.unrestricted: AbstractProduction [ ]; <> DefBody: AbstractProduction [ BindList, DecList ]; <> DefHead: AbstractProduction [ Locks, ModuleList, Shares, Access ]; <> Cedar.yes: AbstractProduction [ ]; Cedar.no: AbstractProduction [ ]; <> ProgHead: AbstractProduction [ Safe, Class, Arguments, Locks, Interface, Access ]; <> Class.program: AbstractProduction [ ]; Class.monitor: AbstractProduction [ ]; <> Interface: AbstractProduction [ ModuleList.imports, ModuleList.exports, Shares ]; <> ModuleList.empty: AbstractProduction [ ]; ModuleList.more: AbstractProduction [ ModuleList, ModuleItem ]; <> ModuleItem.one: AbstractProduction [ Id ]; ModuleItem.two: AbstractProduction [ Id.record, Id.type ]; <> Shares.absent: AbstractProduction [ ]; Shares.present: AbstractProduction [ IdList ]; <> Locks.absent: AbstractProduction [ ]; Locks.present: AbstractProduction [ Exp, Lambda ]; <> Lambda.absent: AbstractProduction [ ]; Lambda.present: AbstractProduction [ Ident, TypeExp ] End. <> <<>>