分享

Tex源码笔记(二)

 negatlov 2011-06-14

Tex源码笔记(二)


该笔记的顺序开始会按照源码的DEK对源码解释的顺序来进行,后面可能会举出一个例子通过一步一步的运行来理解源码。

Tex源码里有许多的数据结构,其中有些基本上可以说是Tex的核心,理解了这些数据结构和Tex对这些数据结构的操作就基本上理解了Tex。

(1)最开始的一个数据结构是关于ASCII的:
 
ASCII_code=0..255;
define text_char=char;{即,text_char是char的别名}
xord:array[text_char] of ASCII_code;
xchr:array[ASCII_code] of text_char;
数据结构xord和xchr用于在ASCII字符和ASCII序数之间转换,比如字母'p',其ASCII为'160(八进制160),因此xord['p']='160,xchr['160]='p'。该
数据结构的图示最后会统一给出。

对照ASCII我们可以看出,只有'40到'176才有可以显示的字符,其余或者不可显示或者没有定义,因此:
   
    ....{从'40到'176定义xchr}
   for i=0 to '37 do xchr[i]=' ';{定义为空格,可以改变}
   for i='177 to '377 do xchr[i]=' ';{定义为空格,可以改变}
   for i='200 to '377 do xord[xchr[i]]=i;{若上面两个定义没有改变,
                                            此处没有实际的意义}
   for i='0 to '176 do xord[xchr[i]]=i;{同样,此处也没有意义}
可以看出,Tex提供一种机制来对Tex的内部ASCII机制进行改变,只有我们将代码1,2处的' '变为其他字符即可。

(2) 在源代码的第21节,Tex除了会对一些变量和数据结构进行初始化(包括对xchr的初始化),这儿提一下这些数据结构(前面的序号是该初始化出现的
小节):

21    xord[0..255], xchr[0..255]
254   xeq_level[int_base..eqtb_size]
251   hash[hash_base..undefined_control_sequence-1]
481   read_open[0..16]
551   font_used[internal_font_number]
928   hyph_word[hyph_pointer], hyph_list[hyph_pointer]
1343  write_open[0..17]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多