Показать сообщение отдельно

  #80  
Старый 09.03.2010, 21:47
cheater_man
Постоянный
Регистрация: 13.11.2009
Сообщений: 437
С нами: 8680278

Репутация: 17
По умолчанию

Цитата:
Сообщение от _antony  
ну покажите ваш транслятор интересно же
вот например одна из ф-ций трансляции
Код:
int xxx()
{
  int  i;

   for (i=0; i<=255; i++) leksim[i]=osh;

   leksim['+']=plus;  leksim['-']=minus;  leksim['*']=umn;

   leksim['/']=del;   leksim['%']=ost;    leksim['=']=prisv;

   leksim['<']=men;   leksim['>']=bol;    leksim['(']=lskob;

   leksim[')']=pskob; leksim['{']=flskob; leksim['}']=fpskob;

   leksim[',']=zpt;   leksim[';']=tchzpt;



   nvir=st2[ident]|st2[chislo]|st2[minus]|st2[lskob];

   noper=st2[flskob]|st2[ifsl]|st2[whilesl]|st2[retsl]|

	       st2[tchzpt]|nvir; /* ì*-âî **÷-õ ëåêñåì îï-p* */

   vhstr[0]=' '; vhstr[1]='\0'; usim=vhstr;

   kolglb=kolim=ef=tipop=est6_main=kolosh=kmet=0;

   fvh=fopen("my_file.c","r");            

   fvih=fopen("my_file.asm","w");         

   if ((fvh==NULL) || (fvih==NULL))

      oshibka(8);                      

   else

   {  gen_kom("", "ASSUME", "CS:KOM_,SS:STEK_,DS:DAN_");

      gen_kom("STEK_", "SEGMENT", "STACK");

      gen_kom("",      "DW","10000 DUP (?)");

      gen_kom("DNOST_","DW","?");

      gen_kom("STEK_", "ENDS","");

      gen_kom("KOM_",  "SEGMENT","");

      chleks();

      while (!ef)

      {  if (leksema==intsl)          

	 { opisper(0); kolglb=kolim; }

	 else if (leksema==ident)   

	    oprfun();                 

	 else if (!ef)   

	    test(st2[intsl]|st2[ident],st2[pskob]|st2[tchzpt],3);

      }

      gen_kom("","INCLUDE","std.asm");

      gen_kom("KOM_","ENDS","");

      if (kolglb>0)

      {  gen_kom("DAN_","SEGMENT","");

	 for (i=1; i<=kolglb; i++)

	    if (tabim[i].vidob==1)   

	    {  sprintf(top,"_%s",tabim[i].imja);

	       gen_kom(top,"DW","?");

	    }

	 gen_kom("DAN_","ENDS","");

      }

      if (est6_main)

	 gen_kom("","END","_main");

      else  gen_kom("","END","");

      gen_kom("","","");

      fclose(fvh);  fclose(fvih);

   } return 0;
}
это только одна ф-ция, а еще есть ф-ции:
1 поиск ошибок
2 трансляция ошибок
3 определение лексем
и т.д. и т.п.
в общем около 15 ф-ций
Транслирует лексику почти подобную С++ или С, если кому интересно пишем в приват
 
Ответить с цитированием