-- TexInpDefs.mesa
-- last written by Doug Wyatt, January 8, 1980 1:44 PM
DIRECTORY
TexTokenDefs: FROM "TexTokenDefs",
StreamDefs: FROM "StreamDefs";
TexInpDefs: DEFINITIONS =
BEGIN OPEN TexTokenDefs;
InStackEntry: TYPE = RECORD
[SELECT mode: {charlist,tokenlist} FROM
charlist => [ inbuf: STRING,
ibptr: CARDINAL,
ibmark: CARDINAL, -- refill inbuf when ibptr+1=ibmark
filename: STRING,
state: {newline,midline,skipblanks},
page: CARDINAL,
line: CARDINAL,
channel: StreamDefs.StreamHandle],
tokenlist => [loc: TokenPtr,
recovery: RecoveryCode],
ENDCASE];
RecoveryCode: TYPE = RECORD
[SELECT rtag:* FROM
donothing,endulist,endvlist,destroy => [l: TokenPtr],
prune => [p: ParStackIndex, l: TokenListPtr],
ENDCASE];
instacksize: CARDINAL=20;
InStack: TYPE = ARRAY [0..instacksize] OF InStackEntry;
instack: READONLY POINTER TO InStack;
inptr: READONLY [0..instacksize];
instate: InStackEntry;
inbufsize: CARDINAL=401;
parsize: CARDINAL=13;
ParStackIndex: TYPE = [0..parsize];
ParStack: TYPE = ARRAY ParStackIndex OF TokenPtr;
parstack,pstack: POINTER TO ParStack;
parptr: ParStackIndex;
PushInput: PROCEDURE;
END.