Include [ MyBaseDecls, MyTreeDecls ]; SaffronAT: Module = Begin Top: AbstractType [ foo, DoTop ]; ModuleP: AbstractType [ foo ]; Directory: AbstractType [ foo ]; IncludeItem: AbstractType [ foo ]; Using: AbstractType [ foo ]; DefBody: AbstractType [ foo ]; 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 [ foo ]; OptType: AbstractType [ foo ]; BindList: AbstractType [ foo ]; Uncounted: AbstractType [ foo ]; MachineDependent: AbstractType [ foo ]; Monitored: AbstractType [ foo ]; ElementList: AbstractType [ foo, MakeElementList ]; Element: AbstractType [ foo, ElementName ]; RecList: AbstractType [ foo, MakeFieldList ]; PairList: AbstractType [ foo, AddPairsToFieldList ]; PairItem: AbstractType [ foo, AddPairsToFieldList ]; TypeList: AbstractType [ foo, AddToFieldList ]; TypeItem: AbstractType [ foo, AddToFieldList ]; IdentList: AbstractType [ foo, AddNamesToFieldList ]; Tag: AbstractType [ foo ]; TagType: AbstractType [ foo ]; VariantList: AbstractType [ foo ]; VariantItem: AbstractType [ foo ]; Packed: AbstractType [ foo ]; Ordered: AbstractType [ foo ]; Base: AbstractType [ foo ]; PointerType: AbstractType [ foo ]; OptInterval: AbstractType [ foo ]; DecList: AbstractType [ foo ]; Declaration: AbstractType [ foo ]; OptDecList: AbstractType [ foo ]; DescList: AbstractType [ foo ]; Initialization: AbstractType [ foo ]; InitialValue: AbstractType [ foo ]; Scope: AbstractType [ foo ]; Ident: AbstractType [ foo, AddNamesToFieldList ]; OptArgs: AbstractType [ foo ]; BindItem: AbstractType [ foo ]; KeyList: AbstractType [ foo ]; KeyItem: AbstractType [ foo ]; Relation: AbstractType [ foo ]; Access: AbstractType [ foo ]; Bounds: AbstractType [ foo ]; Default: AbstractType [ foo ]; Position: AbstractType [ foo ]; OptBits: AbstractType [ foo ]; Relop: AbstractType [ foo ]; RelationTail: AbstractType [ foo ]; ExpList: AbstractType [ foo ]; Exp: AbstractType [ foo ]; OptExp: AbstractType [ foo ]; OrderList: AbstractType [ foo ]; MultOp: AbstractType [ foo ]; AddOp: AbstractType [ foo ]; ReadOnly: AbstractType [ foo ]; CatchAny: AbstractType [ foo ]; Interval: AbstractType [ foo ]; SelectExpList: AbstractType [ foo ]; SelectExpItem: AbstractType [ foo ]; TypeId: AbstractType [ foo ]; TypeApply: AbstractType [ foo ]; Range: AbstractType [ foo ]; PrefixOp: AbstractType [ foo ]; New: AbstractType [ foo ]; Free: AbstractType [ foo ]; Cons: AbstractType [ foo ]; ListCons: AbstractType [ foo ]; Safe: AbstractType [ foo ]; TransferMode: AbstractType [ foo ]; 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 [ foo ]; Checked: AbstractType [ foo ]; CodeList: AbstractType [ foo ]; Statement: AbstractType [ foo ]; OptStatement: AbstractType [ foo ]; StatementList: AbstractType [ foo ]; DoTest: AbstractType [ foo ]; DoExit: AbstractType [ foo ]; TransferOp: AbstractType [ foo ]; Catch: AbstractType [ foo ]; CatchCase: AbstractType [ foo ]; CatchCaseList: AbstractType [ foo ]; TypeOp: AbstractType [ foo ]; IdList: AbstractType [ foo ]; Arguments: AbstractType [ foo ]; ParameterList: AbstractType [ foo ]; TypeExp: AbstractType [ foo, MakeType ]; Num: AbstractType [ foo ]; Qualifier: AbstractType [ foo ]; SignalList: AbstractType [ foo ]; ExitList: AbstractType [ foo ]; Bound: AbstractType [ foo ]; -- ??? Junk: AbstractType [ foo ]; Subrange: AbstractType [ foo ]; -- ??? End; SaffronAG1: Module = Begin Junk: AbstractProduction [ ]; Top.modulep: AbstractProduction [ ModuleP ]; Top.scope: AbstractProduction [ Scope ]; Top.tc: AbstractProduction [ TypeExp ]; 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.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 [ ]; 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 ] End; SaffronAG2: Module = Begin 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 ]; Qualifier.prefixop: AbstractProduction [ PrefixOp ]; Qualifier.typeop: AbstractProduction [ TypeOp ]; Qualifier.size: 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 [ ] End; SaffronAG3: Module = Begin 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 [ Bound.lower, Bound.upper ]; Bound: AbstractProduction [ Exp ]; 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. ϊSaffronAG.ThreeC4 Copyright Σ 1986, 1987 by Xerox Corporation. All rights reserved. Shoup, August 8, 1986 5:49:55 pm PDT Bill Jackson (bj) April 27, 1987 10:46:16 pm PDT Lucy Hederman July 17, 1987 4:35:45 pm PDT AbstractType Modularity Declarations ???Binding??? Expressions Control Structure Junk abstract types and productions: junk, needed to handle nonterminals that don't build anything useful Junk: AbstractType [ foo ]; Top: AbstractType [ foo, DoTop ]; Top is used to skip down to an interseting subtree abstract types and productions: expressions Exp: AbstractType [ foo, MakeValue ]; Num: AbstractType [ foo ]; AddOp: AbstractType [ foo ]; MultOp: AbstractType [ foo ]; SelectHead: AbstractType [ foo ]; SelectExpList: AbstractType [ foo ]; SelectExpItem: AbstractType [ foo ]; SelectLabel: AbstractType [ foo ]; SelectTestList: AbstractType [ foo ]; Relation: AbstractType [ foo ]; RelationTail: AbstractType [ foo ]; Relop: AbstractType [ foo ]; Range: AbstractType [ foo ]; Catch: AbstractType [ foo ]; CatchAny: AbstractType [ foo ]; CatchCaseList: AbstractType [ foo ]; CatchCase: AbstractType [ foo ]; SignalList: AbstractType [ foo ]; ExpList: AbstractType [ foo ]; KeyList: AbstractType [ foo ]; KeyItem: AbstractType [ foo ]; OrderList: AbstractType [ foo ]; OptExp: AbstractType [ foo ]; OptType: AbstractType [ foo ]; Qualifier: AbstractType [ foo ]; PrefixOp: AbstractType [ foo ]; TypeOp: AbstractType [ foo ]; New: AbstractType [ foo ]; Cons: AbstractType [ foo ]; ListCons: AbstractType [ foo ]; DescList: AbstractType [ foo ]; Initialization: AbstractType [ foo, MakeValue ]; InitialValue: AbstractType [ foo, MakeValue ]; Checked: AbstractType [ foo ]; Inline: AbstractType [ foo ]; CodeList: AbstractType [ foo ]; TransferOp: AbstractType [ foo ]; abstract types and expressions: statements Statement: AbstractType [ foo ]; OptStatement: AbstractType [ foo ]; SelectStmtList: AbstractType [ foo ]; SelectStmtItem: AbstractType [ foo ]; Block: AbstractType [ foo ]; Scope: AbstractType [ foo, NewScope ]; OptDecList: AbstractType [ foo, PreprocessDecls, ProcessDecls ]; StatementList: AbstractType [ foo ]; DecList: AbstractType [ foo, PreprocessDecls, ProcessDecls ]; Declaration: AbstractType [ foo, PreprocessDecls, ProcessDecls, ProcessOneDecl ]; OptSize: AbstractType [ foo ]; Entry: AbstractType [ foo ]; ExitList: AbstractType [ foo ]; ExitItem: AbstractType [ foo ]; BindList: AbstractType [ foo ]; BindItem: AbstractType [ foo ]; ForClause: AbstractType [ foo ]; ControlId: AbstractType [ foo ]; Decreasing: AbstractType [ foo ]; DoTest: AbstractType [ foo ]; DoExit: AbstractType [ foo ]; OptArgs: AbstractType [ foo ]; Transfer: AbstractType [ foo ]; Free: AbstractType [ foo ]; abstract types and productions: type expressions TypeExp: AbstractType [ foo, MakeType ]; TypeId: AbstractType [ foo, MakeType ]; Subrange: AbstractType [ foo, MakeType ]; Interval: AbstractType [ foo, MakeTypeInterval ]; Bounds: AbstractType [ foo, MakeTypeBounds ]; Bound: AbstractType [ foo, MakeTypeBound ]; MachineDependent: AbstractType [ foo ]; Monitored: AbstractType [ foo ]; ElementList: AbstractType [ foo, MakeEltList ]; Element: AbstractType [ foo, InsertElement ]; RecList: AbstractType [ foo, MakeFieldList ]; PairList: AbstractType [ foo, MakeNamedFieldList ]; PairItem: AbstractType [ foo, MakeNamedFieldList ]; TypeList: AbstractType [ foo, MakeUnnamedFieldList ]; TypeItem: AbstractType [ foo, MakeUnnamedFieldList ]; Access: AbstractType [ foo ]; Default: AbstractType [ foo ]; Ident: AbstractType [ foo, InsertDescriptor, ReplaceDescriptor, AddToNamedFieldList, ProcessDecls ]; Position: AbstractType [ foo ]; OptBits: AbstractType [ foo ]; IdentList: AbstractType [ foo, ProcessDecls, InsertDescriptor, ReplaceDescriptor, AddToNamedFieldList ]; Tag: AbstractType [ foo ]; TagType: AbstractType [ foo ]; VariantList: AbstractType [ foo ]; VariantItem: AbstractType [ foo ]; Packed: AbstractType [ foo ]; IdList: AbstractType [ foo ]; Ordered: AbstractType [ foo ]; Base: AbstractType [ foo ]; PointerType: AbstractType [ foo ]; OptInterval: AbstractType [ foo ]; ReadOnly: AbstractType [ foo ]; Safe: AbstractType [ foo ]; TransferMode: AbstractType [ foo ]; Arguments: AbstractType [ foo ]; ParameterList: AbstractType [ foo ]; Uncounted: AbstractType [ foo ]; TypeApply: AbstractType [ foo ]; abstract types and productions: modules ModuleP: AbstractType [ foo ]; Directory: AbstractType [ foo ]; IncludeItem: AbstractType [ foo ]; Using: AbstractType [ foo ]; DefBody: AbstractType [ foo ]; DefHead: AbstractType [ foo ]; Cedar: AbstractType [ foo ]; ProgHead: AbstractType [ foo ]; Class: AbstractType [ foo ]; Interface: AbstractType [ foo ]; ModuleList: AbstractType [ foo ]; ModuleItem: AbstractType [ foo ]; Shares: AbstractType [ foo ]; Locks: AbstractType [ foo ]; Lambda: AbstractType [ foo ]; eof... Κ L•StyleDef€BeginStyle (cedar) AttachStyle (codetab) (set up the fancy tabs) {code clearTabStops 35 sp flushLeft tabStop} StyleRule EndStyle˜codešœ™KšœA™AKšœ!Οk™$Kšœ0™0K™*—K˜Kšœ%˜%K˜šΟn œ˜headšΟz ™ šŸ ™ IcodetabšžœΠiz œΠbiœ ˜!Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜"Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜!Mšž œ  œ‘œ˜!Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜—šŸ ™ Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšžœ  œ‘œ˜'Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜3Mšžœ  œ‘œ˜+Mšžœ  œ‘œ˜-Mšžœ  œ‘œ˜4Mšžœ  œ‘œ˜4Mšžœ  œ‘œ˜/Mšžœ  œ‘œ˜/Mšž œ  œ‘œ˜5Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜"Mšž œ  œ‘œ˜"Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜"Mšž œ  œ‘œ˜"Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜"Mšž œ  œ‘œ˜!Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜&Mšž œ  œ‘œ˜$Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜1—šŸ ™ Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜—šŸ ™ Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜#Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜ Mšž œ  œ‘œ˜$Mšž œ  œ‘œ˜$Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜—šŸ™Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜#Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜!Mšžœ  œ‘œ˜%Mšžœ  œ‘œ˜%Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜!Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜"Mšžœ  œ‘œ˜%Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜#Mšž œ  œ‘œ˜$Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜!Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜$Mšžœ  œ‘œ˜Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜$Mšžœ  œ‘œ ˜(Mšžœ  œ‘œ˜Mšž œ  œ‘œ˜ Mšž œ  œ‘œ˜!Mšžœ  œ‘œ˜—šŸ™Mšžœ  œ‘œΟc˜$Mšžœ  œ‘œ˜Mšžœ  œ‘œ’˜'K˜——K˜K˜—šž œ˜K˜Kšœd™dšΠnzŸ™Mšžœ œ˜—š£Ÿ™!Kšœ2™2K˜MšΟb œ œ ˜,Mš€ œ œ ˜(Mš€œ œ ˜'M˜—K˜Kšœ+™+šŸ%™%Mš€œ œ ˜;Mš€ œ œ˜0Mš€ œ œ!˜@Mš€œ œ˜3Mš€œ œ˜4Mš€œ œ ˜$Mš€ œ œ˜3Mš€œ œ*˜LMš€ œ œ,˜JMš€ œ œ˜4Mš€œ œ˜5Mš€œ œ˜"Mš€œ œ ˜$Mš€ œ œ ˜*Mš€ œ œ ˜(Mš€œ œ ˜&Mš€œ œ ˜&Mš€ œ œ˜7Mš€ œ œ˜2Mš€ œ œ!˜>Mš€ œ œ˜5Mš€ œ œ ˜,Mš€ œ œ˜9Mš€œ œ˜*Mš€œ œ˜*Mš€œ œ)˜DMš€œ œ˜6Mš€ œ œ˜7Mš€œ œ˜ Mš€ œ œ˜3Mš€œ œ ˜)Mš€ œ œ˜/Mš€ œ œ˜0Mš€ œ œ ˜(Mš€œ œ˜0Mš€ œ œ˜"Mš€ œ œ˜5—šŸ™Mš€ œ œ˜/Mš€ œ œ˜+Mš€œ œ ˜'—šŸ™Mš€ œ œ˜#Mš€ œ œ˜$—šŸ™Mš€ œ œ˜%Mš€ œ œ˜&Mš€ œ œ˜#—šŸ!™!Mš€œ œ ˜-Mš€œ œ˜C—š£ Ÿ™$Mš€œ œ˜,Mš€œ œ"˜H—š£ Ÿ™$Mšž œ œ˜7—š£ Ÿ™"Mš€œ œ˜8Mš€œ œ˜8—š£Ÿ™%Mš€œ œ˜4Mš€œ œ˜E—š£Ÿ™Mš€œ œ˜7Mš€œ œ˜7—š£ Ÿ™#Mš€œ œ ˜1Mš€œ œ˜5—K˜K˜K˜—šž œ˜š£Ÿ™Mš€œ œ˜!Mš€œ œ˜!Mš€œ œ˜!Mš€œ œ˜!Mš€œ œ˜!Mš€œ œ˜!—š£Ÿ™Mš€ œ œ ˜,Mš€œ œ˜0—š£Ÿ™Mšžœ œ˜6—š£Ÿ™Mš€œ œ˜(Mš€œ œ˜3—š£ Ÿ™$Mš€œ œ˜,Mš€œ œ˜D—š£ Ÿ™ Mšž œ œ˜8—š£ Ÿ™!Mš€œ œ ˜+Mš€œ œ˜8—š£Ÿ™Mš€œ œ ˜0Mš€œ œ˜4—š£Ÿ™Mš€ œ œ ˜,Mš€ œ œ˜6—š£Ÿ™Mšžœ œ˜+—š£ Ÿ™ Mš€ œ œ ˜-Mš€œ œ˜9—š£Ÿ™Mš€ œ œ˜%Mš€ œ œ˜%Mš€ œ œ ˜'—š£Ÿ™Mš€œ œ˜'Mš€œ œ ˜0—š£ Ÿ™ Mš€œ œ˜4Mš€œ œ ˜0Mš€œ œ˜'Mš€œ œ˜7Mš€œ œ˜,Mš€œ œ˜+—š£Ÿ™Mš€ œ œ˜'Mš€ œ œ˜&Mš€ œ œ˜'Mš€ œ œ˜'Mš€ œ œ˜&Mš€ œ œ˜&Mš€ œ œ˜&Mš€ œ œ˜'Mš€œ œ˜)—š£Ÿ™Mš€ œ œ˜$Mš€ œ œ˜%Mš€ œ œ˜$Mš€ œ œ˜"—K˜K˜K˜—šž œ˜š£Ÿ™Mš€ œ œ˜"Mš€ œ œ ˜&—š£Ÿ™Mš€ œ œ˜#Mš€ œ œ ˜'—š£Ÿ™Mš€œ œ˜'Mš€œ œ ˜+—š£Ÿ™Mš€œ œ#˜NMš€œ œ ˜3—šŸ0™0Mš€œ œ˜-Mš€œ œ˜—š£Ÿ™Mšžœ œ˜.—š£Ÿ!™&Mšžœ œ0˜I—š£ Ÿ6™@Mš€œ œ˜*Mš€œ œ ˜3—š£ Ÿ™$Mš€œ œ˜,Mš€œ œ˜C—K˜K˜K˜—šž œ˜š£Ÿ6™=Mš€ œ œ˜0Mš€ œ œ ˜@—š£ ŸF™QMš€œ œA˜fMš€œ œ9˜]Mš€œ œ ˜J—š£Ÿ™Mš€œ œ˜'Mš€œ œ ˜,—š£Ÿ™Mš€ œ œ˜$Mš€œ œ˜'Mš€ œ œ˜$—š£Ÿ™Mš€œ œ˜'Mš€ œ œ˜9—š£Ÿ™Mšžœ œ˜3—š£Ÿ™Mš€œ œ˜'Mš€ œ œ˜9—š£Ÿ™Mš€œ œ ˜/Mš€œ œ ˜-—š£ Ÿ™ Mš€œ œ&˜OMš€œ œ"˜IMš€œ œ ˜3Mš€œ œ˜(—š£ Ÿ™ Mš€ œ œ˜5Mš€ œ œ˜)—š£ Ÿ™!Mš€œ œ˜'Mš€ œ œ˜&—š£Ÿ™Mš€ œ œ ˜)Mš€ œ œ ˜)Mš€ œ œ˜%—š£Ÿ™Mšžœ œ˜6—š£Ÿ™Mš€œ œ ˜0Mš€ œ œ ˜(Mš€ œ œ˜&—š£Ÿ™Mš€œ œ˜(Mš€œ œ˜'Mš€œ œ˜1Mš€œ œ˜'Mš€œ œ˜)Mš€ œ œ˜&Mš€œ œ˜(Mš€œ œ˜+Mš€œ œ˜.Mš€œ œ˜,—š£Ÿ™Mš€ œ œ˜#Mš€ œ œ˜&—K˜K˜K˜—šž œ˜K˜Kšœ0™0š£Ÿ!™(Mš€œ œ ˜.Mš€œ œ˜2Mš€ œ œ#˜CMš€œ œ*˜LMš€œ œ ˜CMš€ œ œ ˜,Mš€ œ œ˜6Mš€œ œ˜0Mš€œ œ˜/Mš€ œ œ˜7Mš€ œ œ˜?Mš€œ œ˜=Mš€œ œ#˜GMš€œ œ˜9Mš€ œ œ˜/Mš€ œ œ ˜-Mš€ œ œ˜)Mš€œ œ˜8Mš€œ œ˜4Mš€ œ œ˜7Mš€œ œ˜>—š£Ÿ!™'Mš€ œ œ˜%Mš€œ œ˜4—š£Ÿ!™)Mš€œ œ˜8Mš€œ œ˜2—š£Ÿ)™1Mš€ œ œ ˜+Mš€ œ œ ˜+Mš€ œ œ ˜+Mš€ œ œ ˜+—š£Ÿ'™-Mšžœ œ˜8—š£Ÿ&™+Mšžœ œ ˜"—š£Ÿ™'Mš€œ œ˜-Mš€œ œ˜,—š£ Ÿ™ Mš€ œ œ˜&Mš€ œ œ˜%—š£ Ÿ$™/Mš€œ œ˜*Mš€œ œ˜>—š£Ÿ&™-Mš€ œ œ˜&Mš€œ œ ˜2Mš€œ œ ˜1—š£Ÿ&™-Mš€ œ œ˜&Mš€œ œ˜2Mš€œ œ˜2—š£Ÿ+™3Mš€ œ œ˜.Mš€ œ œ"˜C—š£Ÿ+™3Mšžœ œ)˜E—š£Ÿ-™5Mš€ œ œ˜.Mš€ œ œ"˜C—š£Ÿ-™5Mšžœ œ˜1—K˜K˜K˜—šž œ˜š£Ÿ™Mš€ œ œ˜%Mš€ œ œ˜&Mš€œ œ˜'—š£Ÿ™Mš€ œ œ˜&Mš€ œ œ˜%Mš€œ œ ˜,Mš€œ œ˜*Mš€œ œ ˜3—š£Ÿ_™dMš€œ œ˜$Mš€œ œ˜6—š£Ÿ™Mšžœ œ˜.—š£Ÿ™Mš€œ œ˜'Mš€œ œ ˜/—š£ Ÿ_™hMš€ œ œ ˜,Mš€œ œ$˜F—š£Ÿ™Mš€ œ œ˜9Mš€ œ œ ˜-Mš€ œ œ ˜-—š£Ÿ™Mš€ œ œ˜%Mš€œ œ ˜0—š£ Ÿ™"Mš€œ œ˜4Mš€œ œ˜B—š£ Ÿ™"Mšž œ œ˜4—š£Ÿ™Mš€ œ œ˜#Mš€ œ œ˜!—K˜K˜K˜—šž œ˜š£Ÿ™Mš€ œ œ˜&Mš€ œ œ˜/—š£Ÿ™Mš€ œ œ˜$Mš€ œ œ˜#—š£Ÿ™Mš€œ œ˜!Mš€œ œ˜ —š£ Ÿ™"Mš€œ œ˜—š£ Ÿ™"Mš€œ œ˜