DIRECTORY IO USING [STREAM], NPGSTypes, Rope USING [ROPE], TimeStamp: TYPE USING [Stamp]; NPGSConDefs: CEDAR DEFINITIONS = { cpw: NAT = BYTES[WORD]; wordLength: NAT = BITS[WORD]; maxSymbolIndex: NAT = 255; outbufLim: NAT = 90; alternateLim: CARDINAL = NPGSTypes.alternateLim; maxProd: CARDINAL = NPGSTypes.maxProd; maxRhsSymbols: CARDINAL = NPGSTypes.maxRhsSymbols; maxRule: CARDINAL = NPGSTypes.maxRule; pssLim: CARDINAL = NPGSTypes.pssLim; rhsLim: CARDINAL = NPGSTypes.rhsLim; symTabSize: CARDINAL = NPGSTypes.symTabSize; tokenSize: CARDINAL = NPGSTypes.tokenSize; wordsForToken: CARDINAL = (NPGSTypes.tokenSize+cpw-1)/cpw; query: CHAR = '?; -- marker character in NPGSformat maxStateNum: CARDINAL = 400; stateExt: CARDINAL = 100; maxTabEntries: CARDINAL = 7000; tabExt: CARDINAL = 1000; maxContexts: CARDINAL = 960; defaultMarker: CARDINAL = 0; sourceVersion: VAR TimeStamp.Stamp; sourceName: VAR Rope.ROPE; warningsLogged: VAR BOOL; eofMark: VAR CARDINAL; -- last terminal totalTokens: VAR CARDINAL; -- size of grammar vocabulary numProd: VAR CARDINAL; -- number of productions numRules: VAR CARDINAL; -- number of rules nextAlias: VAR CARDINAL; -- number of aliased terminal symbols flags: VAR ARRAY NPGSTypes.Options OF BOOL; symTab: VAR NPGSTypes.SymTab; symInfo: VAR NPGSTypes.SymInfo; aliases: VAR NPGSTypes.Aliases; tokenInfo: VAR NPGSTypes.TokenInfo; prodInfo: VAR NPGSTypes.ProdInfo; rhsChar: VAR NPGSTypes.RhsChar; sLim, tEntries, ntEntries: VAR CARDINAL; bitstrSize: VAR CARDINAL; MakeSymTab: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.SymTab]; MakeSymInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.SymInfo]; MakeAliases: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.Aliases]; MakeTokenInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.TokenInfo]; MakeProdInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.ProdInfo]; MakeRhsChar: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.RhsChar]; MakeStateInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.StateInfo]; MakeTable: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.Table]; MakeBackChain: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.BackChain]; MakeStack: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.Stack]; MakeBitsInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.BitsInfo]; MakeBitString: PROC[length, width: CARDINAL] RETURNS[new: NPGSTypes.BitString]; MakeAttrVec: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.AttrVec]; MakeHashTab: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.HashTab]; MakeTab: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.Tab]; MakeColumn: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.Column]; MakeStateData: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.StateData]; MakeNTDefaults: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.NTDefaults]; MakeRenumber: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.Renumber]; MakeVocabIndex: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.VocabIndex]; MakeSInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.SInfo]; MakePInfo: PROC[length: CARDINAL] RETURNS[new: NPGSTypes.PInfo]; MakeTokenSeq: PROC [length: CARDINAL] RETURNS [new: NPGSTypes.TokensUsed]; MakeErrSeq: PROC [length: CARDINAL] RETURNS [new: NPGSTypes.ErrorMsg]; ExpandSymTab: PROC[old: NPGSTypes.SymTab, ext: CARDINAL] RETURNS[new: NPGSTypes.SymTab]; ExpandSymInfo: PROC[old: NPGSTypes.SymInfo, ext: CARDINAL] RETURNS[new: NPGSTypes.SymInfo]; ExpandAliases: PROC[old: NPGSTypes.Aliases, ext: CARDINAL] RETURNS[new: NPGSTypes.Aliases]; ExpandProdInfo: PROC[old: NPGSTypes.ProdInfo, ext: CARDINAL] RETURNS[new: NPGSTypes.ProdInfo]; ExpandRhsChar: PROC[old: NPGSTypes.RhsChar, ext: CARDINAL] RETURNS[new: NPGSTypes.RhsChar]; ExpandStateInfo: PROC[old: NPGSTypes.StateInfo, ext: CARDINAL] RETURNS[new: NPGSTypes.StateInfo]; ExpandStack: PROC[old: NPGSTypes.Stack, ext: CARDINAL] RETURNS[new: NPGSTypes.Stack]; ExpandBitsInfo: PROC[old: NPGSTypes.BitsInfo, ext: CARDINAL] RETURNS[new: NPGSTypes.BitsInfo]; ExpandBitString: PROC[old: NPGSTypes.BitString, ext: CARDINAL] RETURNS[new: NPGSTypes.BitString]; ExpandSInfo: PROC[old: NPGSTypes.SInfo, ext: CARDINAL] RETURNS[new: NPGSTypes.SInfo]; ExpandPInfo: PROC[old: NPGSTypes.PInfo, ext: CARDINAL] RETURNS[new: NPGSTypes.PInfo]; seterrstream: PROC; setoutstream: PROC[dotstring: Rope.ROPE]; resetoutstream: PROC; closeoutstream: PROC; cleanupstreams: PROC; inchar: PROC RETURNS[c: CHAR, end: BOOL]; getindex: PROC RETURNS[CARDINAL]; setindex: PROC[index: CARDINAL]; outchar: PROC[c: CHAR, n: INTEGER]; outeol: PROC[n: INTEGER]; outnum: PROC[val: INTEGER, cols: NAT, signChar: CHAR_'-]; outstring: PROC[string: Rope.ROPE]; outtab: PROC; outtime: PROC; openwordstream: PROC[scratch: BOOL _ TRUE]; closewordstream: PROC; inword: PROC RETURNS[CARDINAL]; outword: PROC[n: CARDINAL]; sourceStream: IO.STREAM; errStream: IO.STREAM; tabStream: IO.STREAM; defsRoot: Rope.ROPE; implRoot: Rope.ROPE; typeName: Rope.ROPE; modName: Rope.ROPE; BitsPtr: PRIVATE TYPE ~ LONG POINTER TO RawBits; RawBits: PRIVATE TYPE = RECORD [PACKED SEQUENCE COMPUTED CARDINAL OF BOOL]; FindBit: PROC [source: NPGSTypes.BitString, index, bit: CARDINAL] RETURNS [BOOL] ~ TRUSTED INLINE { RETURN[LOOPHOLE[@source[index*source.width], BitsPtr][bit]]; }; InsertBit: PROC [sink: NPGSTypes.BitString, index, bit: CARDINAL] ~ TRUSTED INLINE { LOOPHOLE[@sink[index*sink.width], BitsPtr][bit] _ TRUE; }; orCount: VAR CARDINAL; OrBits: PROC [source: NPGSTypes.BitString, sourceI: CARDINAL, sink: NPGSTypes.BitString, sinkI: CARDINAL]; NPGSFail: ERROR; OutToken: PROC [symbol: CARDINAL] RETURNS [CARDINAL]; CheckOut: PROC; LALRGen: PROC [cusp: BOOL] RETURNS[BOOL]; TabGen: PROC [cedar: BOOL, cusp: BOOL] RETURNS[BOOL]; OutModule: PROC [cedar: BOOL, cusp: BOOL]; Format: PROC RETURNS [table, type, export: Rope.ROPE]; PrintGrammar: PROC; CuspPreSetPriorityTokenArray: PROC [hashChain: NPGSTypes.HashChain]; CuspPreClearTokensUsedArray: PROC; CuspPreSetNextTokenUsed: PROC [token: CARDINAL]; CuspPreSetHeaderUsed: PROC [token: CARDINAL]; CuspPreSetNextErrorMsgElement: PROC [state: CARDINAL]; CuspPreRenumber: PROC [lastntstate: CARDINAL, renumber: NPGSTypes.Renumber]; CuspPreClearErrorMsgArray: PROC; CuspPreGetErrorMsg: PROC [i: CARDINAL] RETURNS [NPGSTypes.ErrorType]; }.  NPGSConDefs.mesa Copyright Ó 1985, 1988 by Xerox Corporation. All rights reserved. Ed Satterthwaite, October 16, 1985 5:32:10 pm PDT John Maxwell, August 8, 1983 11:17 am Doug Wyatt, March 29, 1984 2:10:29 pm PST Russ Atkinson (RRA) March 25, 1988 7:43:06 pm PST JKF February 6, 1989 3:48:50 pm PST machine parameters common compile time constants NPGSScan compile time constants NPGSLALR constants NPGSTab constants structures built and exported by NPGSControl, used by NPGSFormat and NPGSBcd structures built by NPGSScan, exported by NPGSControl, used by NPGSLALR and NPGSTab structures built by NPGSLALR, exported by NPGSControl, used by NPGSTab structures built by NPGSLALR, exported by NPGSControl, used by NPGSControl and NPGSLALR procedures storage management, exported by NPGSControl stream input/output, exported by NPGSControl bit manipulation, exported by NPGSControl errors, exported by NPGSControl implemented by NPGSScan implemented by NPGSLALR implemented by NPGSTab implemented by NPGSFormat implemented by NPGSCuspPre Ê É•NewlineDelimiter ™Jšœ™JšœB™BJšœ1™1Jšœ%™%Jšœ)™)Jšœ1™1Jšœ#™#šÏk ˜ Jšœœœ˜Jšœ ˜ Jšœœœ˜Jšœ œœ ˜—J˜šÏn œœ œ˜"J˜Jšœ™Jšœœœœ˜Jšœ œœœ˜Jšœœ˜J˜Jšœ™Jšœ œ˜J˜Jšœ™Jšœœ˜0Jšœ œ˜&Jšœœ˜2Jšœ œ˜&Jšœœ˜$Jšœœ˜$Jšœ œ˜,Jšœ œ˜*J˜Jšœœ#˜:JšœœÏc!˜3J˜Jšœ™J˜Jšœ œ˜Jšœ œ˜Jšœœ˜Jšœœ˜Jšœ œ˜J˜Jšœ™J˜Jšœœ˜J˜JšœL™LJ˜Jšœœ˜#Jšœ œœ˜J˜JšœS™SJ˜Jšœœœ˜Jšœ œœŸ˜(Jšœ œœŸ˜9Jšœ œœŸ˜0Jšœ œœŸ˜+Jšœ œœŸ%˜?Jš œœœœœ˜+Jšœœ˜Jšœ œ˜Jšœ œ˜Jšœ œ˜#Jšœ œ˜!Jšœ œ˜J˜JšœF™FJšœœœ˜(J˜JšœW™WJšœ œœ˜J˜Jšœ ™ Jšœ+™+J™Jšž œœ œœ˜BJšž œœ œœ˜DJšž œœ œœ˜DJšž œœ œœ˜HJšž œœ œœ˜FJšž œœ œœ˜DJšž œœ œœ˜HJšž œœ œœ˜@Jšž œœ œœ˜HJšž œœ œœ˜@Jšž œœ œœ˜FJšž œœœœ˜OJšž œœ œœ˜DJšž œœ œœ˜DJšžœœ œœ˜