Exemplo n.º 1
0
void Parser::T_endv()
{
  if(the_stack.is_frame(np_cell)) {
    flush_buffer();
    the_stack.finish_cell(-1);
    the_stack.push_pop_cell(pop_only);
    pop_level(false,bt_cell);
    start_a_cell(false);
  }
  else parse_error("Bad endv token");
}
Exemplo n.º 2
0
// This is done when we see a \\.
void Parser::T_cr()
{
  flush_buffer();
  int a = 0;
  if(cur_cmd_chr.get_chr() == crwithargs_code)
    a = scan_int(cur_tok);
  if(!the_stack.is_frame(np_cell)) {
    parse_error("bad \\cr");
    return;
  }
  the_stack.finish_cell(0);
  the_stack.push_pop_cell(pop_only);
  pop_level(false,bt_cell);
  the_stack.pop(np_row);
  start_a_row(a);
}
Exemplo n.º 3
0
void
#line 228 "./cwebdir/ctang-w2c.ch"
 get_output P1H(void)
#line 394 "./cwebdir/ctangle.w"
{
sixteen_bits a;
restart:if(stack_ptr==stack)return;
if(cur_byte==cur_end){
cur_val= -((int)cur_section);
pop_level(1);
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/*33:*/
#line 423 "./cwebdir/ctangle.w"

{
a-= 024000;
if((a+name_dir)->equiv!=(char*)text_info)push_level(a+name_dir);
else if(a!=0){
printf("\n! Not present: <");
print_section_name(a+name_dir);err_print(">");

}
goto restart;
}

/*:33*/
#line 412 "./cwebdir/ctangle.w"
;
break;
default:cur_val= a-050000;if(cur_val> 0)cur_section= cur_val;
out_char(section_number);
}
}
}
Exemplo n.º 4
0
void
#line 268 "./cwebdir/ctang-w2c.ch"
 output_defs P1H(void)
#line 608 "./cwebdir/ctangle.w"
{
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= 1;
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= 0;
flush_buffer();
}
pop_level(0);
}