diff options
author | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
---|---|---|
committer | Denis Bitouzé <dbitouze@wanadoo.fr> | 2021-02-25 18:23:07 +0000 |
commit | c6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch) | |
tree | 1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/web2c/cwebdir/ctangle.c | |
parent | 07ee7222e389b0777456b427a55c22d0e6ffd267 (diff) |
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/cwebdir/ctangle.c')
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctangle.c | 1626 |
1 files changed, 0 insertions, 1626 deletions
diff --git a/Build/source/texk/web2c/cwebdir/ctangle.c b/Build/source/texk/web2c/cwebdir/ctangle.c deleted file mode 100644 index d955da9d573..00000000000 --- a/Build/source/texk/web2c/cwebdir/ctangle.c +++ /dev/null @@ -1,1626 +0,0 @@ -/*1:*/ -#line 66 "ctangle.w" - -/*4:*/ -#line 46 "common.h" - -#include <ctype.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdint.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -/*:4*/ -#line 67 "ctangle.w" - -#define banner "This is CTANGLE (Version 4.2)" \ - -#define ctangle false -#define cweave true \ - -#define and_and 04 -#define lt_lt 020 -#define gt_gt 021 -#define plus_plus 013 -#define minus_minus 01 -#define minus_gt 031 -#define non_eq 032 -#define lt_eq 034 -#define gt_eq 035 -#define eq_eq 036 -#define or_or 037 -#define dot_dot_dot 016 -#define colon_colon 06 -#define period_ast 026 -#define minus_gt_ast 027 \ - -#define xisalpha(c) (isalpha((eight_bits) c) &&((eight_bits) c<0200) ) -#define xisdigit(c) (isdigit((eight_bits) c) &&((eight_bits) c<0200) ) -#define xisspace(c) (isspace((eight_bits) c) &&((eight_bits) c<0200) ) -#define xislower(c) (islower((eight_bits) c) &&((eight_bits) c<0200) ) -#define xisupper(c) (isupper((eight_bits) c) &&((eight_bits) c<0200) ) -#define xisxdigit(c) (isxdigit((eight_bits) c) &&((eight_bits) c<0200) ) \ - -#define max_include_depth 10 \ - -#define max_file_name_length 1024 -#define cur_file file[include_depth] -#define cur_file_name file_name[include_depth] -#define cur_line line[include_depth] -#define web_file file[0] -#define web_file_name file_name[0] \ - -#define length(c) (size_t) ((c+1) ->byte_start-(c) ->byte_start) -#define print_id(c) term_write((c) ->byte_start,length((c) ) ) -#define llink link -#define rlink dummy.Rlink -#define root name_dir->rlink \ - \ - -#define spotless 0 -#define harmless_message 1 -#define error_message 2 -#define fatal_message 3 -#define mark_harmless {if(history==spotless) history= harmless_message;} -#define mark_error history= error_message -#define confusion(s) fatal("! This can't happen: ",s) \ - \ - -#define show_banner flags['b'] -#define show_progress flags['p'] -#define show_stats flags['s'] -#define show_happiness flags['h'] -#define make_xrefs flags['x'] \ - -#define update_terminal fflush(stdout) -#define new_line putchar('\n') -#define putxchar putchar -#define term_write(a,b) fflush(stdout) ,fwrite(a,sizeof(char) ,b,stdout) -#define C_printf(c,a) fprintf(C_file,c,a) -#define C_putc(c) putc(c,C_file) \ - -#define max_bytes 1000000 \ - -#define max_toks 1000000 -#define max_names 10239 \ - -#define max_sections 4000 -#define max_texts 10239 -#define longest_name 10000 -#define stack_size 500 -#define buf_size 1000 -#define long_buf_size (buf_size+longest_name) \ - -#define equiv equiv_or_xref \ - -#define section_flag max_texts \ - -#define string 02 -#define join 0177 -#define output_defs_flag (2*024000-1) \ - -#define cur_end cur_state.end_field -#define cur_byte cur_state.byte_field -#define cur_name cur_state.name_field -#define cur_repl cur_state.repl_field -#define cur_section cur_state.section_field \ - -#define section_number 0201 -#define identifier 0202 \ - -#define normal 0 -#define num_or_id 1 -#define post_slash 2 -#define unbreakable 3 -#define verbatim 4 \ - -#define max_files 256 -#define translit_length 10 \ - -#define ignore 0 -#define ord 0302 -#define control_text 0303 -#define translit_code 0304 -#define output_defs_code 0305 -#define format_code 0306 -#define definition 0307 -#define begin_C 0310 -#define section_name 0311 -#define new_section 0312 \ - -#define constant 03 \ - -#define isxalpha(c) ((c) =='_'||(c) =='$') \ - -#define ishigh(c) ((eight_bits) (c) > 0177) \ - \ - -#define compress(c) if(loc++<=limit) return c \ - -#define macro 0 -#define app_repl(c) {if(tok_ptr==tok_mem_end) overflow("token") ;*tok_ptr++= c;} \ - - -#line 68 "ctangle.w" - -/*3:*/ -#line 37 "common.h" - -typedef bool boolean; -typedef uint8_t eight_bits; -typedef uint16_t sixteen_bits; -extern boolean program; -extern int phase; - -/*:3*//*5:*/ -#line 74 "common.h" - -extern char section_text[]; -extern char*section_text_end; -extern char*id_first; -extern char*id_loc; - -/*:5*//*6:*/ -#line 88 "common.h" - -extern char buffer[]; -extern char*buffer_end; -extern char*loc; -extern char*limit; - -/*:6*//*7:*/ -#line 105 "common.h" - -extern int include_depth; -extern FILE*file[]; -extern FILE*change_file; -extern char file_name[][max_file_name_length]; - -extern char change_file_name[]; -extern int line[]; -extern int change_line; -extern int change_depth; -extern boolean input_has_ended; -extern boolean changing; -extern boolean web_file_open; - -/*:7*//*9:*/ -#line 125 "common.h" - -extern sixteen_bits section_count; -extern boolean changed_section[]; -extern boolean change_pending; -extern boolean print_where; - -/*:9*//*10:*/ -#line 139 "common.h" - -typedef struct name_info{ -char*byte_start; -struct name_info*link; -union{ -struct name_info*Rlink; - -char Ilk; -}dummy; -void*equiv_or_xref; -}name_info; -typedef name_info*name_pointer; -typedef name_pointer*hash_pointer; -extern char byte_mem[]; -extern char*byte_mem_end; -extern char*byte_ptr; -extern name_info name_dir[]; -extern name_pointer name_dir_end; -extern name_pointer name_ptr; -extern name_pointer hash[]; -extern hash_pointer hash_end; -extern hash_pointer h; - -/*:10*//*12:*/ -#line 183 "common.h" - -extern int history; - -/*:12*//*14:*/ -#line 199 "common.h" - -extern int argc; -extern char**argv; -extern char C_file_name[]; -extern char tex_file_name[]; -extern char idx_file_name[]; -extern char scn_file_name[]; -extern boolean flags[]; - -/*:14*//*15:*/ -#line 215 "common.h" - -extern FILE*C_file; -extern FILE*tex_file; -extern FILE*idx_file; -extern FILE*scn_file; -extern FILE*active_file; - -/*:15*/ -#line 69 "ctangle.w" - -/*19:*/ -#line 122 "ctangle.w" - -typedef struct{ -eight_bits*tok_start; -sixteen_bits text_link; -}text; -typedef text*text_pointer; - -/*:19*//*31:*/ -#line 269 "ctangle.w" - -typedef struct{ -eight_bits*end_field; -eight_bits*byte_field; -name_pointer name_field; -text_pointer repl_field; -sixteen_bits section_field; -}output_state; -typedef output_state*stack_pointer; - -/*:31*/ -#line 70 "ctangle.w" - -/*20:*/ -#line 129 "ctangle.w" - -static text text_info[max_texts]; -static text_pointer text_info_end= text_info+max_texts-1; -static text_pointer text_ptr; -static eight_bits tok_mem[max_toks]; -static eight_bits*tok_mem_end= tok_mem+max_toks-1; -static eight_bits*tok_ptr; - -/*:20*//*26:*/ -#line 198 "ctangle.w" - -static text_pointer last_unnamed; - -/*:26*//*32:*/ -#line 285 "ctangle.w" - -static output_state cur_state; - -static output_state stack[stack_size+1]; -static stack_pointer stack_end= stack+stack_size; -static stack_pointer stack_ptr; - -/*:32*//*37:*/ -#line 361 "ctangle.w" - -static int cur_val; - -/*:37*//*42:*/ -#line 452 "ctangle.w" - -static eight_bits out_state; -static boolean protect; - -/*:42*//*45:*/ -#line 483 "ctangle.w" - -static name_pointer output_files[max_files]; -static name_pointer*cur_out_file,*end_output_files,*an_output_file; -static char cur_section_name_char; -static char output_file_name[longest_name+1]; - -/*:45*//*52:*/ -#line 582 "ctangle.w" - -static boolean output_defs_seen= false; - -/*:52*//*57:*/ -#line 691 "ctangle.w" - -static char translit[128][translit_length]; - -/*:57*//*62:*/ -#line 770 "ctangle.w" - -static eight_bits ccode[256]; - -/*:62*//*66:*/ -#line 830 "ctangle.w" - -static boolean comment_continues= false; - -/*:66*//*68:*/ -#line 869 "ctangle.w" - -static name_pointer cur_section_name; -static boolean no_where; - -/*:68*//*82:*/ -#line 1182 "ctangle.w" - -static text_pointer cur_text; -static eight_bits next_control; - -/*:82*/ -#line 71 "ctangle.w" - -/*8:*/ -#line 119 "common.h" - -extern boolean get_line(void); -extern void check_complete(void); -extern void reset_input(void); - -/*:8*//*11:*/ -#line 162 "common.h" - -extern boolean names_match(name_pointer,const char*,size_t,eight_bits); -extern name_pointer id_lookup(const char*,const char*,char); - -extern name_pointer section_lookup(char*,char*,int); -extern void init_node(name_pointer); -extern void init_p(name_pointer,eight_bits); -extern void print_prefix_name(name_pointer); -extern void print_section_name(name_pointer); -extern void sprint_section_name(char*,name_pointer); - -/*:11*//*13:*/ -#line 186 "common.h" - -extern int wrap_up(void); -extern void err_print(const char*); -extern void fatal(const char*,const char*); -extern void overflow(const char*); - -/*:13*//*16:*/ -#line 223 "common.h" - -extern void common_init(void); -extern void print_stats(void); - -/*:16*//*30:*/ -#line 241 "ctangle.w" -static void store_two_bytes(sixteen_bits); - -/*:30*//*35:*/ -#line 324 "ctangle.w" - -static void push_level(name_pointer); -static void pop_level(boolean); - -/*:35*//*39:*/ -#line 397 "ctangle.w" -static void get_output(void); - -/*:39*//*44:*/ -#line 473 "ctangle.w" -static void flush_buffer(void); - -/*:44*//*49:*/ -#line 549 "ctangle.w" -static void phase_two(void); - -/*:49*//*53:*/ -#line 585 "ctangle.w" - -static void output_defs(void); -static void out_char(eight_bits); - -/*:53*//*65:*/ -#line 810 "ctangle.w" - -static eight_bits skip_ahead(void); -static boolean skip_comment(boolean); - -/*:65*//*70:*/ -#line 924 "ctangle.w" -static eight_bits get_next(void); - -/*:70*//*84:*/ -#line 1208 "ctangle.w" -static void scan_repl(eight_bits); - -/*:84*//*91:*/ -#line 1379 "ctangle.w" -static void scan_section(void); - -/*:91*//*99:*/ -#line 1460 "ctangle.w" -static void phase_one(void); - -/*:99*//*101:*/ -#line 1494 "ctangle.w" -static void skip_limbo(void); - -/*:101*/ -#line 72 "ctangle.w" - - -/*:1*//*2:*/ -#line 81 "ctangle.w" - -int main( -int ac, -char**av) -{ -argc= ac;argv= av; -program= ctangle; -/*21:*/ -#line 137 "ctangle.w" - -text_info->tok_start= tok_ptr= tok_mem; -text_ptr= text_info+1;text_ptr->tok_start= tok_mem; - - -/*:21*//*23:*/ -#line 147 "ctangle.w" - -init_node(name_dir); - -/*:23*//*27:*/ -#line 201 "ctangle.w" -last_unnamed= text_info;text_info->text_link= 0; - -/*:27*//*46:*/ -#line 493 "ctangle.w" - -cur_out_file= end_output_files= output_files+max_files; - -/*:46*//*58:*/ -#line 694 "ctangle.w" - -{ -int i; -for(i= 0;i<128;i++)sprintf(translit[i],"X%02X",(unsigned int)(128+i)); -} - -/*:58*//*63:*/ -#line 773 "ctangle.w" -{ -int c; -for(c= 0;c<256;c++)ccode[c]= ignore; -ccode[' ']= ccode['\t']= ccode['\n']= ccode['\v']= ccode['\r']= ccode['\f'] -= ccode['*']= new_section; -ccode['@']= '@';ccode['=']= string; -ccode['d']= ccode['D']= definition; -ccode['f']= ccode['F']= ccode['s']= ccode['S']= format_code; -ccode['c']= ccode['C']= ccode['p']= ccode['P']= begin_C; -ccode['^']= ccode[':']= ccode['.']= ccode['t']= ccode['T']= -ccode['q']= ccode['Q']= control_text; -ccode['h']= ccode['H']= output_defs_code; -ccode['l']= ccode['L']= translit_code; -ccode['&']= join; -ccode['<']= ccode['(']= section_name; -ccode['\'']= ord; -} - -/*:63*//*78:*/ -#line 1103 "ctangle.w" -section_text[0]= ' '; - -/*:78*/ -#line 88 "ctangle.w" - -common_init(); -if(show_banner)puts(banner); -phase_one(); -phase_two(); -return wrap_up(); -} - -/*:2*//*24:*/ -#line 153 "ctangle.w" - -boolean names_match( -name_pointer p, -const char*first, -size_t l, -eight_bits t) -{(void)t; -if(length(p)!=l)return false; -return!strncmp(first,p->byte_start,l); -} - -/*:24*//*25:*/ -#line 169 "ctangle.w" - -void -init_node( -name_pointer node) -{ -node->equiv= (void*)text_info; -} -void -init_p(name_pointer p,eight_bits t){(void)p;(void)t;} - -/*:25*//*29:*/ -#line 231 "ctangle.w" - -static void -store_two_bytes( -sixteen_bits x) -{ -if(tok_ptr+2> tok_mem_end)overflow("token"); -*tok_ptr++= x>>8; -*tok_ptr++= x&0377; -} - -/*:29*//*34:*/ -#line 309 "ctangle.w" - -static void -push_level( -name_pointer p) -{ -if(stack_ptr==stack_end)overflow("stack"); -*stack_ptr= cur_state; -stack_ptr++; -if(p!=NULL){ -cur_name= p;cur_repl= (text_pointer)p->equiv; -cur_byte= cur_repl->tok_start;cur_end= (cur_repl+1)->tok_start; -cur_section= 0; -} -} - -/*:34*//*36:*/ -#line 332 "ctangle.w" - -static void -pop_level( -boolean flag) -{ -if(flag&&cur_repl->text_link<section_flag){ -cur_repl= cur_repl->text_link+text_info; -cur_byte= cur_repl->tok_start;cur_end= (cur_repl+1)->tok_start; -return; -} -stack_ptr--; -if(stack_ptr> stack)cur_state= *stack_ptr; -} - -/*:36*//*38:*/ -#line 368 "ctangle.w" - -static void -get_output(void) -{ -sixteen_bits a; -restart:if(stack_ptr==stack)return; -if(cur_byte==cur_end){ -cur_val= -((int)cur_section); -pop_level(true); -if(cur_val==0)goto restart; -out_char(section_number);return; -} -a= *cur_byte++; -if(out_state==verbatim&&a!=string&&a!=constant&&a!='\n') -C_putc(a); -else if(a<0200)out_char(a); -else{ -a= (a-0200)*0400+*cur_byte++; -switch(a/024000){ -case 0:cur_val= a;out_char(identifier);break; -case 1:if(a==output_defs_flag)output_defs(); -else/*40:*/ -#line 402 "ctangle.w" - -{ -a-= 024000; -if((a+name_dir)->equiv!=(void*)text_info)push_level(a+name_dir); -else if(a!=0){ -fputs("\n! Not present: <",stdout); -print_section_name(a+name_dir);err_print(">"); - -} -goto restart; -} - -/*:40*/ -#line 389 "ctangle.w" - -break; -default:cur_val= a-050000;if(cur_val> 0)cur_section= cur_val; -out_char(section_number); -} -} -} - -/*:38*//*43:*/ -#line 460 "ctangle.w" - -static void -flush_buffer(void) -{ -C_putc('\n'); -if(cur_line%100==0&&show_progress){ -printf("."); -if(cur_line%500==0)printf("%d",cur_line); -update_terminal; -} -cur_line++; -} - -/*:43*//*48:*/ -#line 514 "ctangle.w" - -static void -phase_two(void){ -web_file_open= false; -cur_line= 1; -/*33:*/ -#line 298 "ctangle.w" - -stack_ptr= stack+1;cur_name= name_dir;cur_repl= text_info->text_link+text_info; -cur_byte= cur_repl->tok_start;cur_end= (cur_repl+1)->tok_start;cur_section= 0; - -/*:33*/ -#line 519 "ctangle.w" - -/*51:*/ -#line 578 "ctangle.w" - -if(!output_defs_seen) -output_defs(); - -/*:51*/ -#line 520 "ctangle.w" - -if(text_info->text_link==0&&cur_out_file==end_output_files){ -fputs("\n! No program text was specified.",stdout);mark_harmless; - -} -else{ -if(cur_out_file==end_output_files){ -if(show_progress) -printf("\nWriting the output file (%s):",C_file_name); -} -else{ -if(show_progress){ -fputs("\nWriting the output files:",stdout); - -printf(" (%s)",C_file_name); -update_terminal; -} -if(text_info->text_link==0)goto writeloop; -} -while(stack_ptr> stack)get_output(); -flush_buffer(); -writeloop:/*50:*/ -#line 555 "ctangle.w" - -for(an_output_file= end_output_files;an_output_file> cur_out_file;){ -an_output_file--; -sprint_section_name(output_file_name,*an_output_file); -fclose(C_file); -C_file= fopen(output_file_name,"wb"); -if(C_file==0)fatal("! Cannot open output file ",output_file_name); - -if(show_progress){printf("\n(%s)",output_file_name);update_terminal;} -cur_line= 1; -stack_ptr= stack+1; -cur_name= (*an_output_file); -cur_repl= (text_pointer)cur_name->equiv; -cur_byte= cur_repl->tok_start; -cur_end= (cur_repl+1)->tok_start; -while(stack_ptr> stack)get_output(); -flush_buffer(); -} - -/*:50*/ -#line 541 "ctangle.w" - -if(show_happiness){ -if(show_progress)new_line; -fputs("Done.",stdout); -} -} -} - -/*:48*//*54:*/ -#line 589 "ctangle.w" - -static void -output_defs(void) -{ -sixteen_bits a; -push_level(NULL); -for(cur_text= text_info+1;cur_text<text_ptr;cur_text++) -if(cur_text->text_link==0){ -cur_byte= cur_text->tok_start; -cur_end= (cur_text+1)->tok_start; -C_printf("%s","#define "); -out_state= normal; -protect= true; -while(cur_byte<cur_end){ -a= *cur_byte++; -if(cur_byte==cur_end&&a=='\n')break; -if(out_state==verbatim&&a!=string&&a!=constant&&a!='\n') -C_putc(a); - -else if(a<0200)out_char(a); -else{ -a= (a-0200)*0400+*cur_byte++; -if(a<024000){ -cur_val= a;out_char(identifier); -} -else if(a<050000){confusion("macro defs have strange char");} -else{ -cur_val= a-050000;cur_section= cur_val;out_char(section_number); -} - -} -} -protect= false; -flush_buffer(); -} -pop_level(false); -} - -/*:54*//*55:*/ -#line 632 "ctangle.w" - -static void -out_char( -eight_bits cur_char) -{ -char*j,*k; -restart: -switch(cur_char){ -case'\n':if(protect&&out_state!=verbatim)C_putc(' '); -if(protect||out_state==verbatim)C_putc('\\'); -flush_buffer();if(out_state!=verbatim)out_state= normal;break; -/*59:*/ -#line 700 "ctangle.w" - -case identifier: -if(out_state==num_or_id)C_putc(' '); -j= (cur_val+name_dir)->byte_start; -k= (cur_val+name_dir+1)->byte_start; -while(j<k){ -if((eight_bits)(*j)<0200)C_putc(*j); - -else C_printf("%s",translit[(eight_bits)(*j)-0200]); -j++; -} -out_state= num_or_id;break; - -/*:59*/ -#line 643 "ctangle.w" - -/*60:*/ -#line 713 "ctangle.w" - -case section_number: -if(cur_val> 0)C_printf("/*%d:*/",cur_val); -else if(cur_val<0)C_printf("/*:%d*/",-cur_val); -else if(protect){ -cur_byte+= 4; -cur_char= '\n'; -goto restart; -}else{ -sixteen_bits a; -a= 0400**cur_byte++; -a+= *cur_byte++; -C_printf("\n#line %d \"",a); - -cur_val= *cur_byte++; -cur_val= 0400*(cur_val-0200)+*cur_byte++; -for(j= (cur_val+name_dir)->byte_start,k= (cur_val+name_dir+1)->byte_start; -j<k;j++){ -if(*j=='\\'||*j=='"')C_putc('\\'); -C_putc(*j); -} -C_printf("%s","\"\n"); -} -break; - -/*:60*/ -#line 644 "ctangle.w" - -/*56:*/ -#line 662 "ctangle.w" - -case plus_plus:C_putc('+');C_putc('+');out_state= normal;break; -case minus_minus:C_putc('-');C_putc('-');out_state= normal;break; -case minus_gt:C_putc('-');C_putc('>');out_state= normal;break; -case gt_gt:C_putc('>');C_putc('>');out_state= normal;break; -case eq_eq:C_putc('=');C_putc('=');out_state= normal;break; -case lt_lt:C_putc('<');C_putc('<');out_state= normal;break; -case gt_eq:C_putc('>');C_putc('=');out_state= normal;break; -case lt_eq:C_putc('<');C_putc('=');out_state= normal;break; -case non_eq:C_putc('!');C_putc('=');out_state= normal;break; -case and_and:C_putc('&');C_putc('&');out_state= normal;break; -case or_or:C_putc('|');C_putc('|');out_state= normal;break; -case dot_dot_dot:C_putc('.');C_putc('.');C_putc('.');out_state= normal; -break; -case colon_colon:C_putc(':');C_putc(':');out_state= normal;break; -case period_ast:C_putc('.');C_putc('*');out_state= normal;break; -case minus_gt_ast:C_putc('-');C_putc('>');C_putc('*');out_state= normal; -break; - -/*:56*/ -#line 645 "ctangle.w" - -case'=':case'>':C_putc(cur_char);C_putc(' '); -out_state= normal;break; -case join:out_state= unbreakable;break; -case constant:if(out_state==verbatim){ -out_state= num_or_id;break; -} -if(out_state==num_or_id)C_putc(' ');out_state= verbatim;break; -case string:if(out_state==verbatim)out_state= normal; -else out_state= verbatim;break; -case'/':C_putc('/');out_state= post_slash;break; -case'*':if(out_state==post_slash)C_putc(' '); - -default:C_putc(cur_char);out_state= normal;break; -} -} - -/*:55*//*64:*/ -#line 794 "ctangle.w" - -static eight_bits -skip_ahead(void) -{ -eight_bits c; -while(true){ -if(loc> limit&&(get_line()==false))return new_section; -*(limit+1)= '@'; -while(*loc!='@')loc++; -if(loc<=limit){ -loc++;c= ccode[(eight_bits)*loc];loc++; -if(c!=ignore||*(loc-1)=='>')return c; -} -} -} - -/*:64*//*67:*/ -#line 833 "ctangle.w" - -static boolean skip_comment( -boolean is_long_comment) -{ -char c; -while(true){ -if(loc> limit){ -if(is_long_comment){ -if(get_line())return comment_continues= true; -else{ -err_print("! Input ended in mid-comment"); - -return comment_continues= false; -} -} -else return comment_continues= false; -} -c= *(loc++); -if(is_long_comment&&c=='*'&&*loc=='/'){ -loc++;return comment_continues= false; -} -if(c=='@'){ -if(ccode[(eight_bits)*loc]==new_section){ -err_print("! Section name ended in mid-comment");loc--; - -return comment_continues= false; -} -else loc++; -} -} -} - -/*:67*//*69:*/ -#line 881 "ctangle.w" - -static eight_bits -get_next(void) -{ -static int preprocessing= 0; -eight_bits c; -while(true){ -if(loc> limit){ -if(preprocessing&&*(limit-1)!='\\')preprocessing= 0; -if(get_line()==false)return new_section; -else if(print_where&&!no_where){ -print_where= false; -/*85:*/ -#line 1214 "ctangle.w" - -store_two_bytes(0150000); -if(changing&&include_depth==change_depth){ -id_first= change_file_name; -store_two_bytes((sixteen_bits)change_line); -}else{ -id_first= cur_file_name; -store_two_bytes((sixteen_bits)cur_line); -} -id_loc= id_first+strlen(id_first); -{int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); -app_repl(a_l%0400);} - -/*:85*/ -#line 893 "ctangle.w" - -} -else return'\n'; -} -c= *loc; -if(comment_continues||(c=='/'&&(*(loc+1)=='*'||*(loc+1)=='/'))){ -skip_comment(comment_continues||*(loc+1)=='*'); - -if(comment_continues)return'\n'; -else continue; -} -loc++; -if(xisdigit(c)||c=='.')/*73:*/ -#line 964 "ctangle.w" -{ -id_first= loc-1; -if(*id_first=='.'&&!xisdigit(*loc))goto mistake; -if(*id_first=='0'){ -if(*loc=='x'||*loc=='X'){ -loc++;while(xisxdigit(*loc))loc++;goto found; -} -} -while(xisdigit(*loc))loc++; -if(*loc=='.'){ -loc++; -while(xisdigit(*loc))loc++; -} -if(*loc=='e'||*loc=='E'){ -if(*++loc=='+'||*loc=='-')loc++; -while(xisdigit(*loc))loc++; -} -found:while(*loc=='u'||*loc=='U'||*loc=='l'||*loc=='L' -||*loc=='f'||*loc=='F')loc++; -id_loc= loc; -return constant; -} - -/*:73*/ -#line 905 "ctangle.w" - -else if(c=='\''||c=='"' -||((c=='L'||c=='u'||c=='U')&&(*loc=='\''||*loc=='"')) -||((c=='u'&&*loc=='8')&&(*(loc+1)=='\''||*(loc+1)=='"'))) -/*74:*/ -#line 992 "ctangle.w" -{ -char delim= c; -id_first= section_text+1; -id_loc= section_text;*++id_loc= delim; -if(delim=='L'||delim=='u'||delim=='U'){ -if(delim=='u'&&*loc=='8'){*++id_loc= *loc++;} -delim= *loc++;*++id_loc= delim; -} -while(true){ -if(loc>=limit){ -if(*(limit-1)!='\\'){ -err_print("! String didn't end");loc= limit;break; - -} -if(get_line()==false){ -err_print("! Input ended in middle of string");loc= buffer;break; - -} -else if(++id_loc<=section_text_end)*id_loc= '\n'; - -} -if((c= *loc++)==delim){ -if(++id_loc<=section_text_end)*id_loc= c; -break; -} -if(c=='\\'){ -if(loc>=limit)continue; -if(++id_loc<=section_text_end)*id_loc= '\\'; -c= *loc++; -} -if(++id_loc<=section_text_end)*id_loc= c; -} -if(id_loc>=section_text_end){ -fputs("\n! String too long: ",stdout); - -term_write(section_text+1,25); -err_print("..."); -} -id_loc++; -return string; -} - -/*:74*/ -#line 909 "ctangle.w" - -else if(isalpha(c)||isxalpha(c)||ishigh(c)) -/*72:*/ -#line 957 "ctangle.w" -{ -id_first= --loc; -while(isalpha((eight_bits)*++loc)||isdigit((eight_bits)*loc) -||isxalpha((eight_bits)*loc)||ishigh((eight_bits)*loc)); -id_loc= loc;return identifier; -} - -/*:72*/ -#line 911 "ctangle.w" - -else if(c=='@')/*75:*/ -#line 1037 "ctangle.w" -{ -c= ccode[(eight_bits)*loc++]; -switch(c){ -case ignore:continue; -case translit_code:err_print("! Use @l in limbo only");continue; - -case control_text:while((c= skip_ahead())=='@'); - -if(*(loc-1)!='>') -err_print("! Double @ should be used in control text"); - -continue; -case section_name: -cur_section_name_char= *(loc-1); -/*77:*/ -#line 1085 "ctangle.w" -{ -char*k; -/*79:*/ -#line 1105 "ctangle.w" - -k= section_text; -while(true){ -if(loc> limit&&get_line()==false){ -err_print("! Input ended in section name"); - -loc= buffer+1;break; -} -c= *loc; -/*80:*/ -#line 1129 "ctangle.w" - -if(c=='@'){ -c= *(loc+1); -if(c=='>'){ -loc+= 2;break; -} -if(ccode[(eight_bits)c]==new_section){ -err_print("! Section name didn't end");break; - -} -if(ccode[(eight_bits)c]==section_name){ -err_print("! Nesting of section names not allowed");break; - -} -*(++k)= '@';loc++; -} - -/*:80*/ -#line 1114 "ctangle.w" - -loc++;if(k<section_text_end)k++; -if(xisspace(c)){ -c= ' ';if(*(k-1)==' ')k--; -} -*k= c; -} -if(k>=section_text_end){ -fputs("\n! Section name too long: ",stdout); - -term_write(section_text+1,25); -printf("...");mark_harmless; -} -if(*k==' '&&k> section_text)k--; - -/*:79*/ -#line 1087 "ctangle.w" - -if(k-section_text> 3&&strncmp(k-2,"...",3)==0) -cur_section_name= section_lookup(section_text+1,k-3,1); -else cur_section_name= section_lookup(section_text+1,k,0); -if(cur_section_name_char=='(') -/*47:*/ -#line 497 "ctangle.w" - -{ -for(an_output_file= cur_out_file; -an_output_file<end_output_files;an_output_file++) -if(*an_output_file==cur_section_name)break; -if(an_output_file==end_output_files){ -if(cur_out_file> output_files) -*--cur_out_file= cur_section_name; -else{ -overflow("output files"); -} -} -} - -/*:47*/ -#line 1093 "ctangle.w" - -return section_name; -} - -/*:77*/ -#line 1051 "ctangle.w" - -case string:/*81:*/ -#line 1151 "ctangle.w" -{ -id_first= loc++;*(limit+1)= '@';*(limit+2)= '>'; -while(*loc!='@'||*(loc+1)!='>')loc++; -if(loc>=limit)err_print("! Verbatim string didn't end"); - -id_loc= loc;loc+= 2; -return string; -} - -/*:81*/ -#line 1052 "ctangle.w" - -case ord:/*76:*/ -#line 1064 "ctangle.w" - -id_first= loc; -if(*loc=='\\'){ -if(*++loc=='\'')loc++; -} -while(*loc!='\''){ -if(*loc=='@'){ -if(*(loc+1)!='@') -err_print("! Double @ should be used in ASCII constant"); - -else loc++; -} -loc++; -if(loc> limit){ -err_print("! String didn't end");loc= limit-1;break; - -} -} -loc++; -return ord; - -/*:76*/ -#line 1053 "ctangle.w" - -default:return c; -} -} - -/*:75*/ -#line 912 "ctangle.w" - -else if(xisspace(c)){ -if(!preprocessing||loc> limit)continue; - -else return' '; -} -else if(c=='#'&&loc==buffer+1)preprocessing= 1; -mistake:/*71:*/ -#line 935 "ctangle.w" - -switch(c){ -case'+':if(*loc=='+')compress(plus_plus);break; -case'-':if(*loc=='-'){compress(minus_minus);} -else{if(*loc=='>'){if(*(loc+1)=='*'){loc++;compress(minus_gt_ast);} -else compress(minus_gt);}}break; -case'.':if(*loc=='*'){compress(period_ast);} -else if(*loc=='.'&&*(loc+1)=='.'){ -loc++;compress(dot_dot_dot); -} -break; -case':':if(*loc==':')compress(colon_colon);break; -case'=':if(*loc=='=')compress(eq_eq);break; -case'>':if(*loc=='='){compress(gt_eq);} -else if(*loc=='>')compress(gt_gt);break; -case'<':if(*loc=='='){compress(lt_eq);} -else if(*loc=='<')compress(lt_lt);break; -case'&':if(*loc=='&')compress(and_and);break; -case'|':if(*loc=='|')compress(or_or);break; -case'!':if(*loc=='=')compress(non_eq);break; -} - -/*:71*/ -#line 919 "ctangle.w" - -return c; -} -} - -/*:69*//*83:*/ -#line 1186 "ctangle.w" - -static void -scan_repl( -eight_bits t) -{ -sixteen_bits a; -if(t==section_name){/*85:*/ -#line 1214 "ctangle.w" - -store_two_bytes(0150000); -if(changing&&include_depth==change_depth){ -id_first= change_file_name; -store_two_bytes((sixteen_bits)change_line); -}else{ -id_first= cur_file_name; -store_two_bytes((sixteen_bits)cur_line); -} -id_loc= id_first+strlen(id_first); -{int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); -app_repl(a_l%0400);} - -/*:85*/ -#line 1192 "ctangle.w" -} -while(true)switch(a= get_next()){ -/*86:*/ -#line 1227 "ctangle.w" - -case identifier:a= id_lookup(id_first,id_loc,0)-name_dir; -app_repl((a/0400)+0200); -app_repl(a%0400);break; -case section_name:if(t!=section_name)goto done; -else{ -/*87:*/ -#line 1260 "ctangle.w" -{ -char*try_loc= loc; -while(*try_loc==' '&&try_loc<limit)try_loc++; -if(*try_loc=='+'&&try_loc<limit)try_loc++; -while(*try_loc==' '&&try_loc<limit)try_loc++; -if(*try_loc=='=')err_print("! Missing `@ ' before a named section"); - - - -} - -/*:87*/ -#line 1233 "ctangle.w" - -a= cur_section_name-name_dir; -app_repl((a/0400)+0250); -app_repl(a%0400); -/*85:*/ -#line 1214 "ctangle.w" - -store_two_bytes(0150000); -if(changing&&include_depth==change_depth){ -id_first= change_file_name; -store_two_bytes((sixteen_bits)change_line); -}else{ -id_first= cur_file_name; -store_two_bytes((sixteen_bits)cur_line); -} -id_loc= id_first+strlen(id_first); -{int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); -app_repl(a_l%0400);} - -/*:85*/ -#line 1237 "ctangle.w" -break; -} -case output_defs_code:if(t!=section_name)err_print("! Misplaced @h"); - -else{ -output_defs_seen= true; -a= output_defs_flag; -app_repl((a/0400)+0200); -app_repl(a%0400); -/*85:*/ -#line 1214 "ctangle.w" - -store_two_bytes(0150000); -if(changing&&include_depth==change_depth){ -id_first= change_file_name; -store_two_bytes((sixteen_bits)change_line); -}else{ -id_first= cur_file_name; -store_two_bytes((sixteen_bits)cur_line); -} -id_loc= id_first+strlen(id_first); -{int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); -app_repl(a_l%0400);} - -/*:85*/ -#line 1246 "ctangle.w" - -} -break; -case constant:case string: -/*88:*/ -#line 1271 "ctangle.w" - -app_repl(a); -while(id_first<id_loc){ -if(*id_first=='@'){ -if(*(id_first+1)=='@')id_first++; -else err_print("! Double @ should be used in string"); - -} -app_repl(*id_first++); -} -app_repl(a);break; - -/*:88*/ -#line 1250 "ctangle.w" - -case ord: -/*89:*/ -#line 1287 "ctangle.w" -{ -int c= (eight_bits)*id_first; -if(c=='\\'){ -c= *++id_first; -if(c>='0'&&c<='7'){ -c-= '0'; -if(*(id_first+1)>='0'&&*(id_first+1)<='7'){ -c= 8*c+*(++id_first)-'0'; -if(*(id_first+1)>='0'&&*(id_first+1)<='7'&&c<32) -c= 8*c+*(++id_first)-'0'; -} -} -else switch(c){ -case't':c= '\t';break; -case'n':c= '\n';break; -case'b':c= '\b';break; -case'f':c= '\f';break; -case'v':c= '\v';break; -case'r':c= '\r';break; -case'a':c= '\7';break; -case'?':c= '?';break; -case'x': -if(xisdigit(*(id_first+1)))c= *(++id_first)-'0'; -else if(xisxdigit(*(id_first+1))){ -++id_first; -c= toupper((eight_bits)*id_first)-'A'+10; -} -if(xisdigit(*(id_first+1)))c= 16*c+*(++id_first)-'0'; -else if(xisxdigit(*(id_first+1))){ -++id_first; -c= 16*c+toupper((eight_bits)*id_first)-'A'+10; -} -break; -case'\\':c= '\\';break; -case'\'':c= '\'';break; -case'\"':c= '\"';break; -default:err_print("! Unrecognized escape sequence"); - -} -} - -app_repl(constant); -if(c>=100)app_repl('0'+c/100); -if(c>=10)app_repl('0'+(c/10)%10); -app_repl('0'+c%10); -app_repl(constant); -} -break; - -/*:89*/ -#line 1252 "ctangle.w" - -case definition:case format_code:case begin_C:if(t!=section_name)goto done; -else{ -err_print("! @d, @f and @c are ignored in C text");continue; - -} -case new_section:goto done; - -/*:86*/ -#line 1197 "ctangle.w" - -case')':app_repl(a); -if(t==macro)app_repl(' '); -break; -default:app_repl(a); -} -done:next_control= (eight_bits)a; -if(text_ptr> text_info_end)overflow("text"); -cur_text= text_ptr;(++text_ptr)->tok_start= tok_ptr; -} - -/*:83*//*90:*/ -#line 1346 "ctangle.w" - -static void -scan_section(void) -{ -name_pointer p; -text_pointer q; -sixteen_bits a; -section_count++;no_where= true; -if(*(loc-1)=='*'&&show_progress){ -printf("*%d",section_count);update_terminal; -} -next_control= 0; -while(true){ -/*92:*/ -#line 1387 "ctangle.w" - -while(next_control<definition) - -if((next_control= skip_ahead())==section_name){ -loc-= 2;next_control= get_next(); -} - -/*:92*/ -#line 1360 "ctangle.w" - -if(next_control==definition){ -/*93:*/ -#line 1394 "ctangle.w" -{ -while((next_control= get_next())=='\n'); -if(next_control!=identifier){ -err_print("! Definition flushed, must start with identifier"); - -continue; -} -app_repl(((a= id_lookup(id_first,id_loc,0)-name_dir)/0400)+0200); - -app_repl(a%0400); -if(*loc!='('){ -app_repl(string);app_repl(' ');app_repl(string); -} -scan_repl(macro); -cur_text->text_link= macro; -} - -/*:93*/ -#line 1362 "ctangle.w" - -continue; -} -if(next_control==begin_C){ -p= name_dir;break; -} -if(next_control==section_name){ -p= cur_section_name; -/*94:*/ -#line 1419 "ctangle.w" - -while((next_control= get_next())=='+'); -if(next_control!='='&&next_control!=eq_eq) -continue; - -/*:94*/ -#line 1370 "ctangle.w" - -break; -} -return; -} -no_where= print_where= false; -/*95:*/ -#line 1424 "ctangle.w" - -/*96:*/ -#line 1429 "ctangle.w" - -store_two_bytes((sixteen_bits)(0150000+section_count)); - - -/*:96*/ -#line 1425 "ctangle.w" - -scan_repl(section_name); -/*97:*/ -#line 1433 "ctangle.w" - -if(p==name_dir||p==0){ -(last_unnamed)->text_link= cur_text-text_info;last_unnamed= cur_text; -} -else if(p->equiv==(void*)text_info)p->equiv= (void*)cur_text; - -else{ -q= (text_pointer)p->equiv; -while(q->text_link<section_flag) -q= q->text_link+text_info; -q->text_link= cur_text-text_info; -} -cur_text->text_link= section_flag; - - -/*:97*/ -#line 1427 "ctangle.w" - - -/*:95*/ -#line 1376 "ctangle.w" - -} - -/*:90*//*98:*/ -#line 1448 "ctangle.w" - -static void -phase_one(void){ -phase= 1; -section_count= 0; -reset_input(); -skip_limbo(); -while(!input_has_ended)scan_section(); -check_complete(); -phase= 2; -} - -/*:98*//*100:*/ -#line 1465 "ctangle.w" - -static void -skip_limbo(void) -{ -char c; -while(true){ -if(loc> limit&&get_line()==false)return; -*(limit+1)= '@'; -while(*loc!='@')loc++; -if(loc++<=limit){ -c= *loc++; -if(ccode[(eight_bits)c]==new_section)break; -switch(ccode[(eight_bits)c]){ -case translit_code:/*102:*/ -#line 1496 "ctangle.w" - -while(xisspace(*loc)&&loc<limit)loc++; -loc+= 3; -if(loc> limit||!xisxdigit(*(loc-3))||!xisxdigit(*(loc-2)) -||(*(loc-3)>='0'&&*(loc-3)<='7')||!xisspace(*(loc-1))) -err_print("! Improper hex number following @l"); - -else{ -unsigned int i; -char*beg; -sscanf(loc-3,"%x",&i); -while(xisspace(*loc)&&loc<limit)loc++; -beg= loc; -while(loc<limit&&(xisalpha(*loc)||xisdigit(*loc)||*loc=='_'))loc++; -if(loc-beg>=translit_length) -err_print("! Replacement string in @l too long"); - -else{ -strncpy(translit[i-0200],beg,(size_t)(loc-beg)); -translit[i-0200][loc-beg]= '\0'; -} -} - -/*:102*/ -#line 1478 "ctangle.w" -break; -case format_code:case'@':break; -case control_text:if(c=='q'||c=='Q'){ -while((c= skip_ahead())=='@'); -if(*(loc-1)!='>') -err_print("! Double @ should be used in control text"); - -break; -} -default:err_print("! Double @ should be used in limbo"); - -} -} -} -} - -/*:100*//*103:*/ -#line 1522 "ctangle.w" - -void -print_stats(void){ -puts("\nMemory usage statistics:"); -printf("%ld names (out of %ld)\n", -(ptrdiff_t)(name_ptr-name_dir),(long)max_names); -printf("%ld replacement texts (out of %ld)\n", -(ptrdiff_t)(text_ptr-text_info),(long)max_texts); -printf("%ld bytes (out of %ld)\n", -(ptrdiff_t)(byte_ptr-byte_mem),(long)max_bytes); -printf("%ld tokens (out of %ld)\n", -(ptrdiff_t)(tok_ptr-tok_mem),(long)max_toks); -} - -/*:103*/ |