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
DIRECTORY
IO USING [STREAM],
NPGSTypes,
Rope USING [ROPE],
TimeStamp: TYPE USING [Stamp];
NPGSConDefs: CEDAR DEFINITIONS = {
machine parameters
cpw: NAT = BYTES[WORD];
wordLength: NAT = BITS[WORD];
maxSymbolIndex: NAT = 255;
common compile time constants
outbufLim: NAT = 90;
NPGSScan compile time constants
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
NPGSLALR constants
maxStateNum: CARDINAL = 400;
stateExt: CARDINAL = 100;
maxTabEntries: CARDINAL = 7000;
tabExt: CARDINAL = 1000;
maxContexts: CARDINAL = 960;
NPGSTab constants
defaultMarker: CARDINAL = 0;
structures built and exported by NPGSControl, used by NPGSFormat and NPGSBcd
sourceVersion: VAR TimeStamp.Stamp;
sourceName: VAR Rope.ROPE;
structures built by NPGSScan, exported by NPGSControl, used by NPGSLALR and NPGSTab
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;
structures built by NPGSLALR, exported by NPGSControl, used by NPGSTab
sLim, tEntries, ntEntries: VAR CARDINAL;
structures built by NPGSLALR, exported by NPGSControl, used by NPGSControl and NPGSLALR
bitstrSize: VAR CARDINAL;
procedures
storage management, exported by NPGSControl
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];
stream input/output, exported by NPGSControl
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: BOOLTRUE];
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;
bit manipulation, exported by NPGSControl
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];
errors, exported by NPGSControl
NPGSFail: ERROR;
implemented by NPGSScan
OutToken: PROC [symbol: CARDINAL] RETURNS [CARDINAL];
CheckOut: PROC;
implemented by NPGSLALR
LALRGen: PROC [cusp: BOOL] RETURNS[BOOL];
implemented by NPGSTab
TabGen: PROC [cedar: BOOL, cusp: BOOL] RETURNS[BOOL];
OutModule: PROC [cedar: BOOL, cusp: BOOL];
implemented by NPGSFormat
Format: PROC RETURNS [table, type, export: Rope.ROPE];
PrintGrammar: PROC;
implemented by NPGSCuspPre
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];
}.