
 // PreProc.cpp
 // (c) Сеpгей Гоцуляк, ВВТ-307
 // 21.11.1999 - 10.01.2000

 #include <conio.h>
 #include <stdio.h>
 #include <string.h>
 #include <process.h>
 #include <dos.h>

 // Препроцессор текста программы на МИЛАНЕ (удаляет служебные символы
 // и комментарии).

 FILE *file1,*file2;

 int main()
 {

	 file1=fopen("ProgText.tmp","rb");
	 if(file1==NULL)
		 exit(201);
	 file2=fopen("Phase01.tmp","wb");
	 if(file2==NULL)
	 {
		 fclose(file1);
		 exit(203);
	 }
	 //window(11,7,69,17);
	 textcolor(RED);
	 printf("\n\n");
	 cprintf(" Фаза01: ");
	 textcolor(YELLOW);
	 cprintf("Пpепpоцессор");
	 textcolor(LIGHTBLUE);
	 printf("\n ");
	 cprintf("    - Обpаботка исходного текста ...");
	 int sym;//predsym=0;
	 fseek(file1,0,SEEK_SET);
	 int CommentFlag=0;
	 while(1)
	 {
		 sym=fgetc(file1);
		 if(sym==EOF)
			 break;
		 if(sym=='/')
		 {
			 int sym2;
			 sym2=fgetc(file1);
			 if(sym2==EOF)
			 {
				 fputc(sym,file2);
				 break;
			 }
			 if(sym2!='*')
			 {
				 fputc(sym,file2);
				 sym=sym2;
			 }
			 else
			 {
				 while(1)
				 {
					 sym=fgetc(file1);
					 if(sym==EOF)
						 exit(301);
					 if(sym=='*')
					 {
						 sym2=fgetc(file1);
						 if(sym2==EOF)
							 exit(301);
						 if(sym2=='/')
						 {  CommentFlag=1;
							 break;
						 }
					 }
				 }
			 }
		 }
		 if(CommentFlag)
		 {
			 CommentFlag=0;
			 continue;
		 }
		 if(sym>=32)
			 fputc(sym,file2);
		 if(sym==13||sym==8||sym==10)
			 fputc(' ',file2);
	 }
	 fclose(file1);
	 fclose(file2);
	 exit(0);
	 return 0;
 }