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, 1992 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 Κ θ–"cedarcode" style•NewlineDelimiter ™šœ™Jšœ Οeœ=™HJšœ1™1Jšœ%™%Jšœ)™)Jšœ1™1Jšœ#™#—codešΟk ˜ Kšžœžœžœ˜Kšœ ˜ Kšœžœžœ˜Kšœ žœžœ ˜—K˜šΟn œžœž œ˜"K˜Jšœ™Kšœžœžœžœ˜Kšœ žœžœžœ˜Kšœžœ˜K˜Jšœ™Kšœ žœ˜K˜Jšœ™Kšœžœ˜0Kšœ žœ˜&Kšœžœ˜2Kšœ žœ˜&Kšœžœ˜$Kšœžœ˜$Kšœ žœ˜,Kšœ žœ˜*K˜Kšœžœ#˜:KšœžœΟc!˜3K˜Jšœ™K˜Kšœ žœ˜Kšœ žœ˜Kšœžœ˜Kšœžœ˜Kšœ žœ˜K˜Jšœ™K˜Kšœžœ˜K˜JšœL™LK˜Kšœžœ˜#Kšœ žœžœ˜K˜JšœS™SK˜Kšœžœžœ˜Kšœ žœžœ ˜(Kšœ žœžœ ˜9Kšœ žœžœ ˜0Kšœ žœžœ ˜+Kšœ žœžœ %˜?Kš œžœžœžœžœ˜+Kšœžœ˜Kšœ žœ˜Kšœ žœ˜Kšœ žœ˜#Kšœ žœ˜!Kšœ žœ˜K˜JšœF™FKšœžœžœ˜(K˜JšœW™WKšœ žœžœ˜K˜Jšœ ™ Jšœ+™+J™KšŸ œžœ žœžœ˜BKšŸ œžœ žœžœ˜DKšŸ œžœ žœžœ˜DKšŸ œžœ žœžœ˜HKšŸ œžœ žœžœ˜FKšŸ œžœ žœžœ˜DKšŸ œžœ žœžœ˜HKšŸ œžœ žœžœ˜@KšŸ œžœ žœžœ˜HKšŸ œžœ žœžœ˜@KšŸ œžœ žœžœ˜FKšŸ œžœžœžœ˜OKšŸ œžœ žœžœ˜DKšŸ œžœ žœžœ˜DKšŸœžœ žœžœ˜