m1->np1=m1->np; pr1=pr=0;
while (m1->mp1->next!=NULL)
{ if (s1>0)
{ m1->mp1=m1->mp1->next;
m1->np1=m1->np1->next;
} pr=0;
if (strstr(m1->mb1->mbuf,m1->mp1->paramname))
{ strcpy(q,m1->mb1->mbuf);
p1=p=strtok(q,m1->mp1->paramname);
p1=strtok(NULL,m1->mp1->paramname);
pr1=pr=fprintf(file_w,"\t%s%s%s\0",p,m1->np1->name,p1);
}
s1++; } s++; }
if (pr==0 && pr1==0) fprintf(file_w,"\t%s",m1->mb1->mbuf);}
void MakeList(char **argv) //добавляет .lst к имени файла и запись в nam[1]
{ char buf[4]=".lst";
int i=0,a=0,k=0;
strcpy(nam[1],argv[1]);
while (a!=4)
{ if (nam[1][i]!='.' && a==0) i++;
else {nam[1][i++]=buf[k++];
a++; } }}
void SetParam(char *str) //созд. подсписка namparam фактических параметров макроса
{ int i=0,x=0,j=0; char buf[10];
clearbuf;
while (str[i]!='\n')
{ if (j>0) i++;
if (str[i]=='\t') {
clearbuf; i++; j=x=0; continue;}
if (str[i]==' '||str[i]==','&&buf[0]==0||str[i]==' '&&buf[0]!=0)
{ clearbuf; i++; j=x=0; continue; }
if (str[i]!=' ' && str[i]!='\n' && str[i]!=',')
{ buf[x++]=str[i]; //копир. в buf
j++;}
else {
if (p3==0) {
if (p4==0) //если это 1-й эл подсписка
{ m->np=new macroname::namparam;
strcpy(m->np->name,buf); //имена фактических параметров макроса
m->np->next=NULL;
m->np1=m->np; p4++;
clearbuf; j=x=0; }
else //если не 1-й
{ m->np2=new macroname::namparam;
strcpy(m->np2->name,buf); //фактические параметры макроса
m->np2->next=NULL;
m->np1->next=m->np2; //связь элементов
m->np1=m->np2; clearbuf; j=x=0; } }
else { if (p4==0) //если 1-й эл
{ m2->np=new macroname::namparam;
strcpy(m2->np->name,buf);
m2->np->next;
m2->np1=m2->np; p4++;
m1=m2; clearbuf; j=x=0; }
else //если не 1-й эл
{ m2->np2=new macroname::namparam;
strcpy(m2->np2->name,buf);
m2->np2->next=NULL;
m2->np1->next=m2->np2;
m2->np1=m2->np2;
m1=m2; clearbuf; j=x=0; } } } }}
void FileReading(char *str) //опред имени подкл. ф. и копирование его в выходной ф. file_w
{ char *p,st[80]; FILE *incl;
p=strtok(str,"\n"); //определяет имя include-файла
p=strtok(NULL,strtok(p," ")); //пропуская "include" и читая само имя
if ((incl = fopen(p, "rt"))== NULL)
{ fprintf(file_w,"%s '%s'\n","Cannot open input file",p);
exit(0); }
while (!feof(incl)) //копир. подкл. файла incl в выходной ф. file_w
{ fgets(st,40,incl); fprintf(file_w,"%s\0",st); }
fclose(incl);}
void LoadEqu(char *str) //запись в список имён констант equ и их значений
{ char *p,*pa; //str="a equ 5"
p=pa=strtok(str," "); //p=pa="a"
pa=strtok(NULL,strtok(NULL," ")); //pa="15"
if (p5==0) //если 1-й эл списка
{ eq=new equ; //новый эл
strcpy(eq->name,p); //запись в список имени eq->name=p
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.