DIRECTORY IO: TYPE USING [STREAM], PGSTypes: TYPE USING [ Aliases, LongDes, LongPointer, Options, ProdInfo, RhsChar, SymTab, SymInfo, TokenInfo, alternateLim, maxProd, maxRhsSymbols, maxRule, pssLim, rhsLim, symTabSize, tokenSize, GetBit, SetBit], PrincOps: TYPE USING [bitsPerWord, charsPerWord, wordsPerPage], Rope: TYPE USING [ROPE], TimeStamp: TYPE USING [Stamp]; PGSConDefs: DEFINITIONS IMPORTS PGSTypes = { cpw: NAT = PrincOps.charsPerWord; pageSize: NAT = PrincOps.wordsPerPage; wordLength: NAT = PrincOps.bitsPerWord; maxCharCode: NAT = CHAR.LAST.ORD; outbufLim: NAT = 90; alternateLim: CARDINAL = PGSTypes.alternateLim; maxProd: CARDINAL = PGSTypes.maxProd; maxRhsSymbols: CARDINAL = PGSTypes.maxRhsSymbols; maxRule: CARDINAL = PGSTypes.maxRule; pssLim: CARDINAL = PGSTypes.pssLim; rhsLim: CARDINAL = PGSTypes.rhsLim; symTabSize: CARDINAL = PGSTypes.symTabSize; tokenSize: CARDINAL = PGSTypes.tokenSize; wordsForToken: CARDINAL = (tokenSize+cpw-1)/cpw; query: CHAR = '?; -- marker character in PGSformat maxStateNum: CARDINAL = 400; stateExt: CARDINAL = 100; maxTabEntries: CARDINAL = 7000; tabExt: CARDINAL = 1000; maxContexts: CARDINAL = 960; defaultMarker: CARDINAL = 0; pgsVersion: VAR TimeStamp.Stamp; sourceVersion: VAR TimeStamp.Stamp; sourceName: VAR Rope.ROPE; objectVersion: VAR TimeStamp.Stamp; 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 PGSTypes.Options OF BOOL; symTab: VAR PGSTypes.SymTab; symInfo: VAR PGSTypes.SymInfo; aliases: VAR PGSTypes.Aliases; tokenInfo: VAR PGSTypes.TokenInfo; prodInfo: VAR PGSTypes.ProdInfo; rhsChar: VAR PGSTypes.RhsChar; sLim, tEntries, ntEntries: VAR CARDINAL; bitstrSize: VAR CARDINAL; LongPointer: TYPE = PGSTypes.LongPointer; LongDes: TYPE = PGSTypes.LongDes; zone: VAR UNCOUNTED ZONE; MakeArray: PROC [length, width: CARDINAL] RETURNS [LongDes]; Expand: PROC [des: LongDes, width, ext: CARDINAL] RETURNS [LongDes]; FreeArray: PROC [des: LongDes]; 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]; outblock: PROC [address: LongPointer, words: CARDINAL]; FindBit: PROC [num: CARDINAL, source: LongPointer] RETURNS [BOOL] = INLINE {RETURN [PGSTypes.GetBit[source+num/wordLength, num MOD wordLength] # 0]}; InsertBit: PROC [num: CARDINAL, sink: LongPointer] = INLINE {PGSTypes.SetBit[1, sink + num/wordLength, num MOD wordLength]}; orCount: VAR CARDINAL; OrBits: PROC [source, sink: LongPointer]; PGSFail: ERROR; OutToken: PROC [symbol: CARDINAL] RETURNS [CARDINAL]; CheckOut: PROC; LALRGen: PROC RETURNS [BOOL]; TabGen: PROC [prefix, suffix: PROC] RETURNS [BOOL]; OutModule: PROC [typename, modfname: Rope.ROPE, long: BOOL _ FALSE]; Format: PROC [table, type, export: Rope.ROPE]; PrintGrammar: PROC; WriteBcdHeader: PROC [ outStream: IO.STREAM, tableId, binaryId: Rope.ROPE, -- file being written interfaceId, fileId: Rope.ROPE, -- interface being exported altoCode: BOOL _ FALSE]; FixupBcdHeader: PROC; WriteSymbols: PROC [s: IO.STREAM, moduleId: Rope.ROPE]; }. rfile PGSConDefs.mesa last modified by Satterthwaite, January 10, 1983 4:22 pm Last Edited by: Maxwell, August 8, 1983 11:17 am machine parameters common compile time constants PGSScan compile time constants PGSLALR constants PGSTab constants structures built and exported by PGSControl, used by PGSFormat and PGSBcd structures built by PGSScan, exported by PGSControl, used by PGSLALR and PGSTab structures built by PGSLALR, exported by PGSControl, used by PGSTab structures built by PGSLALR, exported by PGSControl, used by PGSControl and PGSLALR procedures storage management, exported by PGSInterface and PGSControl stream input/output, exported by PGSControl bit manipulation, exported by PGSControl errors, exported by PGSControl implemented by PGSScan implemented by PGSLALR implemented by PGSTab implemented by PGSFormat implemented by PGSBcd implemented by PGSSymbols Ê“˜Jšœ™Jšœ8™8J™0J˜šÏk ˜ Jšœœœœ˜šœ œœ˜J˜VJ˜UJ˜—Jšœ œœ+˜?Jšœœœœ˜Jšœ œœ ˜J˜—Jšœ œœ ˜,˜šœ™Jšœœ˜!Jšœ œ˜&Jšœ œ˜'Jš œ œœœœ˜!J˜—šœ™Jšœ œ˜J˜—šœ™Jšœœ˜/Jšœ œ˜%Jšœœ˜1Jšœ œ˜%Jšœœ˜#Jšœœ˜#Jšœ œ˜+Jšœ œ˜)J˜Jšœœ˜0JšœœÏc ˜2J˜—šœ™Jšœ œ˜Jšœ œ˜Jšœœ˜Jšœœ˜Jšœ œ˜J˜—šœ™Jšœœ˜J˜J˜—šœI™IJšœ œ˜ Jšœœ˜#Jšœ œœ˜Jšœœ˜#J˜—šœO™OJšœœœ˜Jšœ œœž˜(Jšœ œœž˜9Jšœ œœž˜0Jšœ œœž˜+Jšœ œœž%˜?Jš œœœœœ˜*Jšœœ˜Jšœ œ˜Jšœ œ˜Jšœ œ˜"Jšœ œ˜ Jšœ œ˜J˜—šœC™CJšœœœ˜(J˜—šœS™SJšœ œœ˜J˜——Jšœ ™ ˜Jšœ œ˜)Jšœ œ˜!J˜Jšœ;™;˜Jšœœ œœ˜J˜JšÏn œœœœ ˜