-- TexTokenDefs.mesa
-- last written by Doug Wyatt, August 20, 1979 2:58 PM
DIRECTORY
TexCmdDefs: FROM "TexCmdDefs" USING[Cmd],
TexDefs: FROM "TexDefs" USING[Char],
TexHashDefs: FROM "TexHashDefs" USING[HashIndex];
TexTokenDefs: DEFINITIONS =
BEGIN
TokCmd: TYPE = TexCmdDefs.Cmd[undefined..endv];
Token: TYPE = RECORD
[
SELECT cmd: TokCmd FROM
ctrlseq => [index: TexHashDefs.HashIndex],
outpar => [paramnum: [1..9]],
match => [matchcode: {par, end}],
macprm,lbrace,rbrace,mathbr,tabmrk,
supmrk,submrk,spacer,letter,otherchar => [char: TexDefs.Char],
undefined,parend,endv => NULL,
ENDCASE
];
TokenLEntry: TYPE = RECORD
[
link: TokenPtr,
token: Token
];
TokenPtr: TYPE = POINTER TO TokenLEntry;
nilTokenLEntry: TokenLEntry=[NIL,[undefined[]]];
TokenRefCount: TYPE = CARDINAL;
TokenLHead: TYPE = RECORD
[
link: TokenPtr,
refs: TokenRefCount
];
TokenListPtr: TYPE = POINTER TO TokenLHead;
MakeTokenLEntry: PROCEDURE[Token] RETURNS[TokenPtr];
MakeTokenLHead: PROCEDURE[TokenPtr] RETURNS[TokenListPtr];
FreeTokenLEntry: PROCEDURE[TokenPtr];
FreeTokenLHead: PROCEDURE[TokenListPtr];
StoreTok: PROCEDURE[POINTER TO TokenPtr, Token];
DsList: PROCEDURE[TokenPtr];
AddRCLink: PROCEDURE[TokenListPtr];
DelRCLink: PROCEDURE[TokenListPtr];
TokChar: PROCEDURE[Token] RETURNS[TexDefs.Char];
TexToken: PROGRAM;
END.