Esempio n. 1
0
void
cgen(FILE *f)
{
	FILE *w;
	int t = 1;
	int c;

	w = fopen("a.c", "w");

	if (!w) {
		perror("F*****g no space for write file");
		exit(1);
	}

	printInit(w);

	while ((c = fgetc(f)) != EOF) {
		switch(c) {
		case '>': 
			identline(t, w);
			fprintf(w, "++ptr;\n");
			break;
		case '<':
			identline(t, w);
			fprintf(w, "--ptr;\n");
			break;
		case '+': 
			identline(t, w);
			fprintf(w, "++*ptr;\n");
			break;
		case '-':
			identline(t, w);
			fprintf(w, "--*ptr;\n");
			break;
		case '.': 
			identline(t, w);
			fprintf(w, "putchar(*ptr);\n");
			break;
		case ',':
			identline(t, w);
			fprintf(w, "*ptr =  getchar();\n");
			break;
		case '[':
			identline(t, w);
			fprintf(w, "while(*ptr) {\n");
			t++;
			break;
		case ']':
			t--;
			identline(t, w);
			fprintf(w, "}\n");
			break;

		}
	}

	printEnd(w);
	fclose(w);

}
Esempio n. 2
0
File: xfrag.c Progetto: oracc/oracc
void
gdf_eH(void *userData, const char *name)
{
  if (((struct frag*)userData)->nesting)
    printEnd(userData, name);
  else
    charData_discard();
}
Esempio n. 3
0
static void
content_eH(void *userData, const char *name)
{
  if (*name == 'r' && !strcmp(name, "rp-wrap"))
    return;

  if (((struct frag*)userData)->nesting)
    printEnd(userData, name);
  else
    charData_discard();
}
Esempio n. 4
0
File: test.c Progetto: matannov/OS3
int main()
{
   printStart();
   printf("\n");
   

   printf("test_create_and_destroy...\n");
   test_create_and_destroy();


   printf("test_thread_pool_sanity...\n");
   test_thread_pool_sanity();


   printf("test_agressive, this might take a while...\n");
   test_agressive();


   printf("test_single_thread_many_tasks...\n");
   test_single_thread_many_tasks();


   printf("test_many_threads_single_task...\n");
   test_many_threads_single_task();


   printf("test_destroy_should_wait_for_tasks #1 (more threads then tasks)...\n");
   test_destroy_should_wait_for_tasks_1();


   printf("test_destroy_should_wait_for_tasks #2 (more tasks then threads)...\n");
   test_destroy_should_wait_for_tasks_2();


   printf("test_destroy_should_not_wait_for_tasks...\n");
   test_destroy_should_not_wait_for_tasks();


   printf("test_destroy_twice...\n");
   test_destroy_twice();


   printf("test_insert_task_after_destroy #1...\n");
   test_insert_task_after_destroy_1();


   printf("test_insert_task_after_destroy #2...\n");
   test_insert_task_after_destroy_2();
//*/

   printEnd();
   return 0;
}
Esempio n. 5
0
 inline void ppEnd() {
   printEnd(); 
 }
Esempio n. 6
0
int main()
{
    char R[7],*p;
    long long ans[50];
    int i,plength,pindex,length,n,numlength,ppindex,endindex,temp;
   
    while(scanf("%s%d",R,&n)!=-1)
    {
        if(n==0)
        {
            printf("1\n");
            continue;          
        }
        length = strlen(R);
        if(length == 0 && R[0] == '0' && n == 1)
        {
            printf("1\n");
            continue;        
        } 
        p = strchr(R,'.');
      
        if(p == NULL)
            pindex = length;
        else
            pindex = p - R;
        
        plength = (length - pindex - 1) * n;
        for(i = 0 ; i < 50; i ++)
            ans[i] = 0l;
        length = cal(R,n,ans);
        numlength = length * 4;
        ///如果小数点的格式是.xxxxxx .001
        if(plength >= numlength + getLength(ans[length]))
        {
            endindex = chechEnd(ans,length);
            printf(".");
            temp = plength - numlength - getLength(ans[length]);
            for(i = 0 ; i < temp; i ++)
                printf("0");
            if(endindex == length)
            {
                 temp = (int) ans[length];
                 while(temp%10 == 0)
                     temp/=10;
                 printf("%d\n",temp);
            }
            else
            {
                for(i = length - 1; i > endindex; i --)
                    printf("%04ld",ans[i]);
                printEnd(ans[endindex]);
            }

        }
        else
        {
            ///如果小数点是xxxx. 
            if(plength == 0)
            {
                printf("%ld",ans[length]);        
                for(i = length - 1; i >= 0; i --)
                    printf("%04ld",ans[i]);
                printf("\n");        
            }
            else
            {
                ///如果小数点是xxxx.xxxx 
                 pindex = plength % 4;
                 ppindex = plength /4;
               
                 endindex = chechEnd(ans,length);
                 temp = (endindex>ppindex?ppindex:endindex);
                 for(i = length; i > temp; i --)
                 {
                     if(ppindex == i)
                     {
                         if(i == length)
                             printPoint(ans[i],pindex,'h');
                         else
                             printPoint(ans[i],pindex,'m');      
                     }
                     else
                     {
                         if(i == length)
                            printf("%ld",ans[i]); 
                         else
                            printf("%04ld",ans[i]); 
                         
                     }
                 }
                 ///如果小数点xxxx000.,XXXX000.01
                 if(ppindex < endindex)
                 {
                      if(pindex == 0)
                          printf("0000\n");
                      if(pindex == 1)
                          printf("000\n");
                      else if(pindex == 2)
                          printf("00\n");
                      else if(pindex == 3)
                          printf("0\n");
                 }    
                 else if(ppindex == endindex)
                 {
                      if(pindex == 0)
                          printf("%04ld\n",ans[endindex]);
                      else
                      {
                          printPoint(ans[endindex],pindex,'m'); 
                          printf("\n");
                      }
                 }
                 else
                     printEnd(ans[endindex]);
                 
            }       
        }      
    } 
    return 0;    
}