TeX in C
Explore TeX with modern c compiler.
PART 25: Expanding the next token

宏定义

#define STORE_NEW_TOKEN(p, x)
 [p145#371] 更多...
 
#define FAST_STORE_NEW_TOKEN(p, x)
 [p145#371] 更多...
 
#define topmarkcode   0
 [p148#382] 更多...
 
#define firstmarkcode   1
 
#define botmarkcode   2
 
#define splitfirstmarkcode   3
 
#define splitbotmarkcode   4
 
#define topmark   curmark[topmarkcode - topmarkcode]
 
#define firstmark   curmark[firstmarkcode - topmarkcode]
 
#define botmark   curmark[botmarkcode - topmarkcode]
 
#define splitfirstmark   curmark[splitfirstmarkcode - topmarkcode]
 
#define splitbotmark   curmark[splitbotmarkcode - topmarkcode]
 

函数

void expand_init ()
 [#383] 更多...
 
void report_argument (HalfWord unbalance, int n, Pointer *pstack)
 [#396] If longstate == outer_call, a runaway argument has already been reported. 更多...
 
void macrocall (Pointer refcount)
 [#389] invokes a user-defined control sequence 更多...
 
void insertrelax (void)
 [#379] 插入 \relax . 更多...
 
void expand (void)
 [p143#366] 更多...
 
void get_x_token (void)
 
void xtoken (void)
 [#381] get_x_token without the initial get_next 更多...
 

变量

Pointer curmark [splitbotmarkcode - topmarkcode+1]
 

详细描述

宏定义说明

◆ botmark

◆ botmarkcode

#define botmarkcode   2

◆ FAST_STORE_NEW_TOKEN

#define FAST_STORE_NEW_TOKEN (   p,
 
)
值:
do { \
int q; \
FAST_GET_AVAIL(q); \
link(p) = q; \
info(q) = (x); \
p = q; \
} while (0)

[p145#371]

◆ firstmark

◆ firstmarkcode

#define firstmarkcode   1

◆ splitbotmark

#define splitbotmark   curmark[splitbotmarkcode - topmarkcode]

◆ splitbotmarkcode

#define splitbotmarkcode   4

◆ splitfirstmark

#define splitfirstmark   curmark[splitfirstmarkcode - topmarkcode]

◆ splitfirstmarkcode

#define splitfirstmarkcode   3

◆ STORE_NEW_TOKEN

#define STORE_NEW_TOKEN (   p,
 
)
值:
do { \
int q = get_avail(); \
link(p) = q; \
info(q) = (x); \
p = q; \
} while (0)
Pointer get_avail(void)
[p45#120]: single-word node allocation.
Definition: mem.c:36

[p145#371]

◆ topmark

◆ topmarkcode

#define topmarkcode   0

[p148#382]

函数说明

◆ expand()

void expand ( void  )

[p143#366]

◆ expand_init()

void expand_init ( )

[#383]

◆ get_x_token()

void get_x_token ( void  )

◆ insertrelax()

void insertrelax ( void  )

[#379] 插入 \relax .

Sometimes the expansion looks too far ahead, so we want to insert a harmless \relax into the user’s input.

◆ macrocall()

void macrocall ( Pointer  refcount)

[#389] invokes a user-defined control sequence

◆ report_argument()

void report_argument ( HalfWord  unbalance,
int  n,
Pointer pstack 
)

[#396] If longstate == outer_call, a runaway argument has already been reported.

◆ xtoken()

void xtoken ( void  )

[#381] get_x_token without the initial get_next

变量说明

◆ curmark