Include [ SaffronBaseDecls, SaffronTreeDecls, SaffronTreeBucket ]; SaffronBaseExtra: Module = Begin NarrowToDeclaration: CedarFunction [ Tree ] Returns [ Declaration ] From CedarBaseNarrow; End; 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, 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 ]; IdentList: AbstractType [ foo, ProcessDecls, InsertDescriptor, ReplaceDescriptor, AddToNamedFieldList ]; 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, PreprocessDecls, ProcessDecls ]; Declaration: AbstractType [ foo, PreprocessDecls, ProcessDecls, ProcessOneDecl ]; OptDecList: AbstractType [ foo, PreprocessDecls, ProcessDecls ]; DescList: AbstractType [ foo ]; Initialization: AbstractType [ foo, MakeValue ]; InitialValue: AbstractType [ foo, MakeValue ]; Scope: AbstractType [ foo, NewScope ]; Ident: AbstractType [ foo, InsertDescriptor, ReplaceDescriptor, AddToNamedFieldList, ProcessDecls ]; OptArgs: AbstractType [ foo ]; BindItem: AbstractType [ foo ]; KeyList: AbstractType [ foo ]; KeyItem: AbstractType [ foo ]; Relation: AbstractType [ foo ]; Access: AbstractType [ foo ]; Bounds: AbstractType [ foo, MakeTypeBounds ]; Default: AbstractType [ foo ]; Position: AbstractType [ foo ]; OptBits: AbstractType [ foo ]; Relop: AbstractType [ foo ]; RelationTail: AbstractType [ foo ]; ExpList: AbstractType [ foo ]; Exp: AbstractType [ foo, MakeValue ]; OptExp: AbstractType [ foo ]; OrderList: AbstractType [ foo ]; MultOp: AbstractType [ foo ]; AddOp: AbstractType [ foo ]; ReadOnly: AbstractType [ foo ]; CatchAny: AbstractType [ foo ]; Interval: AbstractType [ foo, MakeTypeInterval ]; SelectExpList: AbstractType [ foo ]; SelectExpItem: AbstractType [ foo ]; TypeId: AbstractType [ foo, MakeType ]; 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, MakeTypeBound ]; -- ??? Junk: AbstractType [ foo ]; Subrange: AbstractType [ foo, MakeType ]; -- ??? End; SaffronAG1: Module = Begin Junk: AbstractProduction [ ]; Top.modulep: AbstractProduction [ ModuleP ]; Top.scope: AbstractProduction [ Scope ]; 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 CedarBaseNarrow 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... Κ y•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™0—K˜KšœB˜BK˜šΟnœ˜ headšΟz™šΟbœ˜JšΠiz œ ˜Jš‘œ˜Jš‘œ˜—J˜—K˜K˜—šž œ˜šŸ ™ šŸ ™ Icodetabšžœ‘ œΠ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šž œ‘ œ’œ˜/Mšžœ‘ œ’œ˜-Mšžœ‘ œ’œ˜-Mšžœ‘ œ’œ˜3Mšžœ‘ œ’œ˜3Mšžœ‘ œ’œ˜5Mšžœ‘ œ’œ˜5Mšž œ‘ œ’œK˜hMšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšž œ‘ œ’œ˜"Mšž œ‘ œ’œ˜"Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšž œ‘ œ’œ˜"Mšž œ‘ œ’œ˜"Mšžœ‘ œ’œ"˜=Mšž œ‘ œ’œ2˜QMšž œ‘ œ’œ"˜@Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜0Mšž œ‘ œ’œ˜.Mšžœ‘ œ’œ ˜&Mšžœ‘ œ’œK˜d—šŸ ™ Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜-Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜—šŸ ™ Mšžœ‘ œ’œ˜Mšž œ‘ œ’œ˜#Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜%Mšžœ‘ œ’œ˜Mšž œ‘ œ’œ˜ Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ˜1Mšž œ‘ œ’œ˜$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˜2Mšžœ‘ œ’œ˜Mšžœ‘ œ’œ£˜0K˜——K˜K˜—šž œ˜K˜Kšœd™dšΠnzŸ™Mšžœ‘œ˜—š€Ÿ™!Kšœ2™2K˜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š œ‘œ˜