22 #define LOC cur_input.locfield
30 #define H_MODE (V_MODE + MAX_COMMAND + 1)
31 #define M_MODE (H_MODE + MAX_COMMAND + 1)
34 #define ignoredepth (-65536000L)
54 #define mode cur_list.modefield
56 #define head cur_list.headfield
58 #define tail cur_list.tailfield
60 #define prevgraf cur_list.pgfield
62 #define aux cur_list.auxfield
64 #define prevdepth aux.sc
66 #define spacefactor aux.hh.UU.lh
68 #define clang aux.hh.rh
70 #define incompleatnoad aux.int_
72 #define modeline cur_list.mlfield
75 #define tailappend(x) (link(tail) = (x), tail = link(tail))
87 #define CS_TOKEN_FLAG (dwa_do_8 * 16 - 1)
89 #define leftbracetoken (dwa_do_8 * LEFT_BRACE)
90 #define leftbracelimit (dwa_do_8 * (LEFT_BRACE + 1))
91 #define rightbracetoken (dwa_do_8 * RIGHT_BRACE)
92 #define rightbracelimit (dwa_do_8 * (RIGHT_BRACE + 1))
93 #define mathshifttoken (dwa_do_8 * MATH_SHIFT)
94 #define tabtoken (dwa_do_8 * TAB_MARK)
95 #define outparamtoken (dwa_do_8 * OUT_PARAM)
96 #define spacetoken (dwa_do_8 * SPACER + ' ')
97 #define lettertoken (dwa_do_8 * LETTER)
98 #define othertoken (dwa_do_8 * OTHER_CHAR)
99 #define matchtoken (dwa_do_8 * MATCH)
100 #define endmatchtoken (dwa_do_8 * END_MATCH)
171 #define STATE cur_input.statefield
172 #define IINDEX cur_input.indexfield
173 #define START cur_input.startfield
174 #define LIMIT cur_input.limitfield
175 #define NAME cur_input.namefield
180 #define SKIP_BLANKS (MAX_CHAR_CODE + 2)
182 #define NEW_LINE (MAX_CHAR_CODE + MAX_CHAR_CODE + 3)
185 #define terminal_input (NAME == 0)
187 #define curfile (inputfile[IINDEX - 1])
190 #define token_type IINDEX
192 #define param_start LIMIT
198 #define popinput() (inputptr--, cur_input = inputstack[inputptr])
200 #define backlist(x) begintokenlist((x), BACKED_UP)
202 #define inslist(x) begintokenlist((x), INSERTED)
211 #define noexpandflag 257
215 ((((x) >= '0') && ((x) <= '9')) || (((x) >= 'a') && ((x) <= 'f')))
218 #define end_line_char_inactive ((end_line_char < 0) || (end_line_char > 255))
uint16_t QuarterWord
[p43#113]: QuarterWord(8=>16) .
Definition: tex_types.h:126
uint32_t HalfWord
[p43#113]: HalfWord(16=>32) .
Definition: tex_types.h:127
#define PARAM_SIZE
[#11] maximum number of simultaneous macro parameters.
Definition: tex_constant.h:90
#define STACK_SIZE
[#11] maximum number of simultaneous input sources.
Definition: tex_constant.h:75
#define MAX_IN_OPEN
[#11] maximum number of input files and error insertions that can be going on simultaneously.
Definition: tex_constant.h:79
#define NEST_SIZE
[#11] maximum number of semantic levels simultaneously active.
Definition: tex_constant.h:93
ListStateRecord cur_list
Definition: lexer.c:30
UChar max_nest_stack
Definition: lexer.c:29
void print_mode(Integer m)
Definition: lexer.c:146
void pushnest(void)
[#216] enter a new semantic level, save the old.
Definition: lexer.c:167
void lexer_semantic_init()
[#215]
Definition: lexer.c:129
void popnest(void)
[#217] leave a semantic level, re-enter the old.
Definition: lexer.c:182
UChar nest_ptr
Definition: lexer.c:28
ListStateRecord nest[NEST_SIZE+1]
[ #211~219: PART 16: THE SEMANTIC NEST ]
Definition: lexer.c:27
void showactivities(void)
[#218] displays what TEX is working on, at all levels.
Definition: lexer.c:189
UChar EightBits
[#25]: EightBits::UChar(8) = [0, 255]
Definition: tex_types.h:98
void print_meaning(EightBits _cmd, HalfWord _chr)
[p118#296] displays cur cmd and cur chr in symbolic form, including the expansion of a macro or mark.
Definition: lexer.c:424
void showtokenlist(Integer p, Integer q, Integer l)
[p117#292]
Definition: lexer.c:321
void token_show(Pointer p)
[p118#295] display a token list, given a pointer to its reference count.
Definition: lexer.c:418
HalfWord curchr
[#297]: operand of current command a character code or other modifier of the command code.
Definition: lexer.c:43
EightBits curcmd
[#297]: current command set by get_next a command code from the long list of codes given above.
Definition: lexer.c:40
HalfWord curtok
[#297]: packed representative of curcmd and curchr.
Definition: lexer.c:48
void showcurcmdchr(void)
[p120#299] displays the current command.
Definition: lexer.c:446
Pointer curcs
[#297]: control sequence found here, zero if none found the eqtb location of the current control sequ...
Definition: lexer.c:46
void showcontext(void)
[#311] prints where the scanner is.
Definition: lexer.c:502
Integer maxparamstack
[#308] largest value of param ptr, will be ≤ param size + 9 . / xref[only tex.c]: macrocall
Definition: lexer.c:99
int paramptr
[#308] first unused entry in param stack. / xref[only tex.c]: macrocall
Definition: lexer.c:96
Pointer paramstack[PARAM_SIZE+1]
[#308] token list pointers for parameters. / xref[only tex.c]: macrocall
Definition: lexer.c:93
char scanner_status
[#305] can a subfile end now?
Definition: lexer.c:85
FILE * inputfile[MAX_IN_OPEN]
xref[]: start_input
Definition: lexer.c:81
Integer align_state
[#309] group level with respect to current alignment.
Definition: lexer.c:101
char openparens
the number of open text files xref[2, only tex.c]: start_input, final_cleanup
Definition: lexer.c:78
InStateRecord inputstack[STACK_SIZE+1]
[#301]:
Definition: lexer.c:60
TokenType
[p125#307]
Definition: lexer.h:132
Pointer defref
[#305] reference count of token list being defined
Definition: lexer.c:89
ScannerStatus
[p124#305]: scanner status
Definition: lexer.h:123
InStateRecord cur_input
xref[]: 35, 36, 87, 301, 302, 311, 321, 322, 534, 1131, error, open_log_file
Definition: lexer.c:72
UChar inputptr
[#301]: first unused location of input stack.
Definition: lexer.c:66
Integer line
current line number in the current source file.
Definition: lexer.c:79
void runaway(void)
[#306] uses scanner status to print a warning message when a subfile has ended, and at certain other ...
Definition: lexer.c:469
UChar baseptr
[#310] shallowest level shown by show context.
Definition: lexer.c:104
Pointer warning_index
[#305] identifier relevant to non-normal scanner status
Definition: lexer.c:87
@ MARK_TEXT
\topmark, etc.
Definition: lexer.h:148
@ PARAMETER
parameter
Definition: lexer.h:133
@ EVERY_DISPLAY_TEXT
\everydisplay
Definition: lexer.h:143
@ EVERY_JOB_TEXT
\everyjob
Definition: lexer.h:146
@ OUTPUT_TEXT
output routines
Definition: lexer.h:139
@ MACRO
defined control sequences
Definition: lexer.h:138
@ INSERTED
inserted texts
Definition: lexer.h:137
@ V_TEMPLATE
<v_j> template
Definition: lexer.h:135
@ WRITE_TEXT
\write
Definition: lexer.h:149
@ EVERY_PAR_TEXT
\everypar
Definition: lexer.h:141
@ U_TEMPLATE
<u_j> template
Definition: lexer.h:134
@ EVERY_HBOX_TEXT
\everyhbox
Definition: lexer.h:144
@ BACKED_UP
text to be reread
Definition: lexer.h:136
@ EVERY_MATH_TEXT
\everymath
Definition: lexer.h:142
@ EVERY_CR_TEXT
\everycr
Definition: lexer.h:147
@ EVERY_VBOX_TEXT
\everyvbox
Definition: lexer.h:145
@ ALIGNING
when reading an alignment preamble
Definition: lexer.h:127
@ DEFINING
when reading a macro definition
Definition: lexer.h:125
@ ABSORBING
when reading a balanced text
Definition: lexer.h:128
@ MATCHING
when reading macro arguments
Definition: lexer.h:126
@ SKIPPING
when passing conditional text
Definition: lexer.h:124
void clearforerrorprompt(void)
[#330] removes completed error-inserted lines from memory
Definition: lexer.c:808
void endfilereading(void)
[#329] variables must be downdated when such a level of input is finished
Definition: lexer.c:799
void begintokenlist(HalfWord p, QuarterWord t)
Definition: lexer.c:661
void backerror(void)
[#327] back up one token and call error
Definition: lexer.c:760
void inserror(void)
[#327] back up one inserted token and call error
Definition: lexer.c:768
Boolean init_lexer(void)
[#331] 初始化变量
Definition: lexer.c:820
void endtokenlist(void)
[#324] leave a token-list input level
Definition: lexer.c:707
void beginfilereading(void)
[#328] starts a new level of input for lines of characters to be read from a file,...
Definition: lexer.c:778
void backinput(void)
[#325] undoes one token of input
Definition: lexer.c:733
void firm_up_the_line(void)
[#363] If the user has set the pausing parameter to some positive value, and if nonstop mode has not ...
Definition: lexer.c:1423
void get_token(void)
[#365]
Definition: lexer.c:1451
HalfWord partoken
Definition: lexer.c:114
Boolean force_eof
Definition: lexer.c:116
void get_next(void)
Definition: lexer.c:1419
Pointer parloc
Definition: lexer.c:112
UChar get_maxinstack()
Definition: lexer.c:121
HalfWord _pack_tok(Pointer _cs, EightBits _cmd, HalfWord _chr)
[p143#365] 辅助函数
Definition: lexer.c:1458
[#300]: InStateRecord(1344) .
Definition: lexer.h:115
QuarterWord indexfield
Definition: lexer.h:116
QuarterWord tok_type
Definition: lexer.h:118
HalfWord limitfield
Definition: lexer.h:117
Pointer tok_list
Definition: lexer.h:119
[#212]: ListStateRecord(366) .
Definition: lexer.h:46
Int16 modefield
(16) only need [-203, 203]
Definition: lexer.h:47
Integer mlfield
(64)*2= 128
Definition: lexer.h:49
MemoryWord auxfield
(64)
Definition: lexer.h:50
Pointer headfield
Definition: lexer.h:48
int64_t Integer
Integer(64) =
Definition: tex_types.h:42
size_t Pointer
Pointer::size_t(64), a flag or a location in mem or eqtb.
Definition: tex_types.h:45
bool Boolean
布尔类型定义
Definition: tex_types.h:11
uint8_t UChar
UChar(8) = [0, 255]
Definition: tex_types.h:38
int16_t Int16
Int16(16) =
Definition: tex_types.h:47
[p43#113]: MemoryWord(64) .
Definition: tex_types.h:164