⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctang-bs.ch

📁 著名算法大师高爷爷设计的语言。此语言结合了Tex和C
💻 CH
字号:
Changes for CTANGLE for MSDOS and Borland C++ 3.1 using the followingoptions (and perhaps others):    -mc -w-pro -Ff=5000 -Z- -O-pThe options -Z- and -O-p explicitly turn off optimizations that breakthe code.  (See makefile.bs.)The main purpose of these changes is to support MSDOS with full-size arraysby using "huge" pointers.(This file contributed by Barry Schwartz, trashman@crud.mn.org, 28 Jun 94; revised 24 Jul 94.)@x Section 1.The ``banner line'' defined here should be changed whenever \.{CTANGLE}is modified.@d banner "This is CTANGLE (Version 3.64)\n"@yThe ``banner line'' defined here should be changed whenever \.{CTANGLE}is modified.@d banner "This is CTANGLE (Version 3.64pc/big)\n"@z@x Section 4.@ The following parameters were sufficient in the original \.{TANGLE} tohandle \TEX/,so they should be sufficient for most applications of \.{CTANGLE}.If you change |max_bytes|, |max_names| or |hash_size| you should alsochange them in the file |"common.w"|.@d max_bytes 90000 /* the number of bytes in identifiers,  index entries, and section names; used in |"common.w"| */@d max_toks 270000 /* number of bytes in compressed \CEE/ code */@d max_names 4000 /* number of identifiers, strings, section names;  must be less than 10240; used in |"common.w"| */@d max_texts 2500 /* number of replacement texts, must be less than 10240 */@d hash_size 353 /* should be prime; used in |"common.w"| */@d longest_name 1000 /* section names shouldn't be longer than this */@d stack_size 50 /* number of simultaneous levels of macro expansion */@d buf_size 100 /* for \.{CWEAVE} and \.{CTANGLE} */@y@ The following parameters were sufficient in the original \.{TANGLE} tohandle \TEX/,so they should be sufficient for most applications of \.{CTANGLE}.If you change |max_bytes|, |max_names| or |hash_size| you should alsochange them in the file |"common.w"|.(This is a modified version of \.{CTANGLE}, and in fact one of the parametershas been reduced in value.  The parameter |max_toks|has been reduced from 270000 [whichwas sufficient to handle \TEX/] to170000, so that \.{CTANGLE}may be run on {\mc MSDOS}systems that are tight on memory.  Consider, forinstance, an 80286-based machine with several TSRs and drivers, tryingto run \.{CTANGLE} from a makefile.)@d max_bytes 90000 /* the number of bytes in identifiers,  index entries, and section names; used in |"common.w"| */@d max_toks 170000 /* number of bytes in compressed \CEE/ code */@d max_names 4000 /* number of identifiers, strings, section names;  must be less than 10240; used in |"common.w"| */@d max_texts 2500 /* number of replacement texts, must be less than 10240 */@d hash_size 353 /* should be prime; used in |"common.w"| */@d longest_name 1000 /* section names shouldn't be longer than this */@d stack_size 50 /* number of simultaneous levels of macro expansion */@d buf_size 100 /* for \.{CWEAVE} and \.{CTANGLE} */@z@x Section 9.@d chunk_marker 0@<Common code...@>=typedef struct name_info {  char *byte_start; /* beginning of the name in |byte_mem| */  struct name_info *link;  union {    struct name_info *Rlink; /* right link in binary search tree for section      names */    char Ilk; /* used by identifiers in \.{CWEAVE} only */  } dummy;  char *equiv_or_xref; /* info corresponding to names */} name_info; /* contains information about an identifier or section name */typedef name_info *name_pointer; /* pointer into array of \&{name\_info}s */typedef name_pointer *hash_pointer;extern char byte_mem[]; /* characters of names */extern char *byte_mem_end; /* end of |byte_mem| */extern name_info name_dir[]; /* information about names */extern name_pointer name_dir_end; /* end of |name_dir| */extern name_pointer name_ptr; /* first unused position in |byte_start| */extern char *byte_ptr; /* first unused position in |byte_mem| */extern name_pointer hash[]; /* heads of hash lists */extern hash_pointer hash_end; /* end of |hash| */extern hash_pointer h; /* index into hash-head array */extern name_pointer id_lookup(); /* looks up a string in the identifier table */extern name_pointer section_lookup(); /* finds section name */extern void print_section_name(), sprint_section_name();@y@d chunk_marker 0@f huge extern@<Common code...@>=typedef struct name_info {  char huge* byte_start; /* beginning of the name in |byte_mem| */  struct name_info *link;  union {    struct name_info *Rlink; /* right link in binary search tree for section      names */    char Ilk; /* used by identifiers in \.{CWEAVE} only */  } dummy;  union {    char *equiv_member;    char huge* xref_member;  } ptr_union; /* info corresponding to names */} name_info; /* contains information about an identifier or section name */typedef name_info *name_pointer; /* pointer into array of \&{name\_info}s */typedef name_pointer *hash_pointer;extern char huge byte_mem[]; /* characters of names */extern char huge* byte_mem_end; /* end of |byte_mem| */extern name_info name_dir[]; /* information about names */extern name_pointer name_dir_end; /* end of |name_dir| */extern name_pointer name_ptr; /* first unused position in |byte_start| */extern char huge* byte_ptr; /* first unused position in |byte_mem| */extern name_pointer hash[]; /* heads of hash lists */extern hash_pointer hash_end; /* end of |hash| */extern hash_pointer h; /* index into hash-head array */extern name_pointer id_lookup(); /* looks up a string in the identifier table */extern name_pointer section_lookup(); /* finds section name */extern void print_section_name(), sprint_section_name();@z@x Section 16.  eight_bits *tok_start; /* pointer into |tok_mem| */  sixteen_bits text_link; /* relates replacement texts */} text;typedef text *text_pointer;@y  eight_bits huge* tok_start; /* pointer into |tok_mem| */  sixteen_bits text_link; /* relates replacement texts */} text;typedef text *text_pointer;@z@x Section 17.eight_bits tok_mem[max_toks];eight_bits *tok_mem_end=tok_mem+max_toks-1;eight_bits *tok_ptr; /* first unused position in |tok_mem| */@yeight_bits huge tok_mem[max_toks];eight_bits huge* tok_mem_end;eight_bits huge* tok_ptr; /* first unused position in |tok_mem| */@z@x Section 18.text_info->tok_start=tok_ptr=tok_mem;text_ptr=text_info+1; text_ptr->tok_start=tok_mem;  /* this makes replacement text 0 of length zero */@ytok_mem_end=tok_mem+max_toks-1;text_info->tok_start=tok_ptr=tok_mem;text_ptr=text_info+1; text_ptr->tok_start=tok_mem;  /* this makes replacement text 0 of length zero */@z@x Section 19.@d equiv equiv_or_xref /* info corresponding to names */@y@d equiv ptr_union.equiv_member /* info corresponding to names */@z@x Section 27.  eight_bits *end_field; /* ending location of replacement text */  eight_bits *byte_field; /* present location within replacement text */@y  eight_bits huge* end_field; /* ending location of replacement text */  eight_bits huge* byte_field; /* present location within replacement text */@z@x Section 49.out_char(cur_char)eight_bits cur_char;{  char *j, *k; /* pointer into |byte_mem| */@yout_char(cur_char)eight_bits cur_char;{  char huge* j, huge* k; /* pointer into |byte_mem| */@z

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -