[BACK]Return to d.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097

Diff for /OpenXM/src/k097/d.c between version 1.11 and 1.21

version 1.11, 2003/07/22 03:25:55 version 1.21, 2020/10/07 23:53:25
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/k097/d.c,v 1.10 2003/07/21 12:41:22 takayama Exp $ */  /* $OpenXM: OpenXM/src/k097/d.c,v 1.20 2018/11/02 01:33:26 takayama Exp $ */
 /* simple.c,  1996, 1/1 --- 1/5 */  /* simple.c,  1996, 1/1 --- 1/5 */
 #include <stdio.h>  #include <stdio.h>
 #include <ctype.h>  #include <ctype.h>
 #include <setjmp.h>  #include <setjmp.h>
 #include <stdlib.h>  #include <stdlib.h>
   #include <unistd.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/stat.h>  #include <sys/stat.h>
 #include "d.h"  #include "d.h"
Line 49  int Interactive = 1;
Line 50  int Interactive = 1;
 static int isThereStdin();  static int isThereStdin();
 #define MARK_CHAR  3  #define MARK_CHAR  3
   
 main2(int argc, char *argv[]) {  void main2(int argc, char *argv[]) {
   FILE *f;    FILE *f;
   FILE *outf;    FILE *outf;
   char name[1024];    char name[1024];
Line 79  main2(int argc, char *argv[]) {
Line 80  main2(int argc, char *argv[]) {
   }    }
 }  }
   
 repl(FILE *inFile,FILE *outFile) {  void repl(FILE *inFile,FILE *outFile) {
   int c;    int c;
   int t;    int t;
   Inop = newObject_d();    Inop = newObject_d();
Line 160  repl(FILE *inFile,FILE *outFile) {
Line 161  repl(FILE *inFile,FILE *outFile) {
         case INCREMENT: printf("\nKClex returns --- ++."); break;          case INCREMENT: printf("\nKClex returns --- ++."); break;
         case DECREMENT: printf("\nKClex returns --- --."); break;          case DECREMENT: printf("\nKClex returns --- --."); break;
         case MEMBER: printf("\nKClex returns --- ->."); break;          case MEMBER: printf("\nKClex returns --- ->."); break;
         case RESIDUEPUT: printf("\nKClex returns --- %=."); break;          case RESIDUEPUT: printf("\nKClex returns --- %%=."); break;
         case NEGATEPUT: printf("\nKClex returns --- ^=."); break;          case NEGATEPUT: printf("\nKClex returns --- ^=."); break;
         case MULTPUT: printf("\nKClex returns --- *=."); break;          case MULTPUT: printf("\nKClex returns --- *=."); break;
   
Line 181  objectp newObject_d() {
Line 182  objectp newObject_d() {
     fprintf(stderr,"Error: No more memory in newObject_d().\n");      fprintf(stderr,"Error: No more memory in newObject_d().\n");
     exit(10);      exit(10);
   }    }
   obj->tag = Snull;    obj->tag = Snull;  obj->attr = NULL;
   return(obj);    return(obj);
 }  }
   
Line 595  int KClex() {
Line 596  int KClex() {
   
 }  }
   
 KCerror(char *s)   /* You need this function. Otherwise, you get core. */  int KCerror(char *s)   /* You need this function. Otherwise, you get core. */
 {  {
   K00recoverFromError();    K00recoverFromError();
   fprintf(stderr,"\nSyntax Error in the line %d:%s\n",Linenumber,s);    fprintf(stderr,"\nSyntax Error in the line %d:%s\n",Linenumber,s);
Line 605  KCerror(char *s)   /* You need this function. Otherwis
Line 606  KCerror(char *s)   /* You need this function. Otherwis
         ungetc(MARK_CHAR,stdin);          ungetc(MARK_CHAR,stdin);
         while (fsgetc(Inop) > MARK_CHAR) ;          while (fsgetc(Inop) > MARK_CHAR) ;
   }    }
   return ;    return 0;
   LONGJMP(KCenvOfParser,2);    LONGJMP(KCenvOfParser,2);
   exit(1);    exit(1);
 }  }
   
 readcomment() {  int readcomment() {
   int c;    int c;
   while (1) {    while (1) {
     c = fsgetc(Inop);      c = fsgetc(Inop);
     if (c == EOF) {      if (c == EOF) {
       fprintf(stderr,"%d: Unexpected end of file in a comment.\n",Linenumber);        fprintf(stderr,"%d: Unexpected end of file in a comment.\n",Linenumber);
       fsungetc(c,Inop); /* should change */        fsungetc(c,Inop); /* should change */
       return;        return 0;
     }      }
     if (c == '*') {      if (c == '*') {
       c = fsgetc(Inop);        c = fsgetc(Inop);
       if (c == '/') return;        if (c == '/') return 0;
     }      }
   }    }
 }  }
Line 674  char *readstring() {
Line 675  char *readstring() {
 }  }
   
   
 readchar() {  int readchar() {
   int c;    int c;
   if (Replace) putchar0('\'');    if (Replace) putchar0('\'');
   c = fsgetc(Inop); /* 'c.'   '\.c' */    c = fsgetc(Inop); /* 'c.'   '\.c' */
Line 702  readchar() {
Line 703  readchar() {
   return(c);    return(c);
 }  }
   
 putchar0(c)  void putchar0(c)
 int c;  int c;
 {  {
   if (c > 0) fputc(c,outfile);    if (c > 0) fputc(c,outfile);
 }  }
   
 printf0(s)  void printf0(s)
 char *s;  char *s;
 {  {
   int i = 0;    int i = 0;
   while (s[i] != '\0') putchar0(s[i++]);    while (s[i] != '\0') putchar0(s[i++]);
 }  }
   
 printf1(s)  void printf1(s)
 char *s;  char *s;
 {  {
   int i = 0;    int i = 0;
Line 723  char *s;
Line 724  char *s;
   while (s[i] != '\0') putchar0(s[i++]);    while (s[i] != '\0') putchar0(s[i++]);
 }  }
   
 isReserved(s)  int isReserved(s)
 char *s;  char *s;
 {  {
   char *r[] = {"auto","break","case","char","const","continue",    char *r[] = {"auto","break","case","char","const","continue",
Line 760  char *s;
Line 761  char *s;
   
 }  }
   
 shouldReplace(s)  int shouldReplace(s)
 char *s;  char *s;
 {  {
   char *r[] = {"dummy"};    char *r[] = {"dummy"};
Line 1021  objectp checkIfTheFileExists(objectp op) {
Line 1022  objectp checkIfTheFileExists(objectp op) {
       }        }
     }      }
   }    }
   close(fp);    fclose(fp);
   op = newObject_d();    op = newObject_d();
   op->tag = Sstring;    op->tag = Sstring;
   s = (char *)GC_malloc(sizeof(char)*(strlen(fname)+1));    s = (char *)GC_malloc(sizeof(char)*(strlen(fname)+1));
Line 1078  void loadFileWithCpp(objectp op)
Line 1079  void loadFileWithCpp(objectp op)
          Removed old codes. */           Removed old codes. */
   
   sfile = op->lc.str;    sfile = op->lc.str;
   if (getFileSize(sfile) < 0) {  
         fprintf(stderr,"The source file is not found.\n"); return;  
   }  
   cpp = getCppPath();    cpp = getCppPath();
   if (cpp == NULL) {    if (cpp == NULL) {
         fprintf(stderr,"cpp is not found.\n"); return;          fprintf(stderr,"cpp is not found.\n"); return;
Line 1092  void loadFileWithCpp(objectp op)
Line 1090  void loadFileWithCpp(objectp op)
   }    }
   /* printf("%s\n",outfile); */    /* printf("%s\n",outfile); */
   if ((char *)strstr(cpp,"/asir/bin/cpp.exe") == NULL) {    if ((char *)strstr(cpp,"/asir/bin/cpp.exe") == NULL) {
   #if defined(__clang__) || defined(__FreeBSD__)
   /* cpp of the FreeBSD is the cpp of the clang, but gcc is selected by configure.
      echo | gcc -dM -E -
   */
       sprintf(tmpName,"cpp -E -P %s | sed -e 's/^#.*//g' >%s",sfile,outfile);
   #else
         argv[0] = cpp;          argv[0] = cpp;
         argv[1] = "-P";          argv[1] = "-P";
         argv[2] = "-lang-c++";          argv[2] = "-lang-c++";
         argv[3] = sfile;          argv[3] = sfile;
         argv[4] = outfile;          argv[4] = outfile;
         argv[5] = NULL;          argv[5] = NULL;
   #endif
   }else{    }else{
         argv[0] = cpp;          argv[0] = cpp;
         argv[1] = cygwinPathToWinPath(sfile);          argv[1] = "-P";
         argv[2] = cygwinPathToWinPath(outfile);          argv[2] = cygwinPathToWinPath(sfile);
         argv[3] = NULL;          argv[3] = cygwinPathToWinPath(outfile);
           argv[4] = NULL;
   }    }
   #if defined(__clang__) || defined(__FreeBSD__)
     system(tmpName);
   #else
   n=oxForkExecBlocked(argv);    n=oxForkExecBlocked(argv);
   #endif
   
   ob = newObject_d();    ob = newObject_d();
   ob->tag = Sstring;    ob->tag = Sstring;
Line 1128  void showStringBuff(objectp op)
Line 1138  void showStringBuff(objectp op)
   if (K00_verbose) {    if (K00_verbose) {
     fprintf(stderr,"stringBuff ptr = %d, ",ptr);      fprintf(stderr,"stringBuff ptr = %d, ",ptr);
     fprintf(stderr,"sb[ptr] = %x,%d",(sb->str)[ptr],(sb->str)[ptr]);      fprintf(stderr,"sb[ptr] = %x,%d",(sb->str)[ptr],(sb->str)[ptr]);
     fprintf(stderr,"Saki(yomi) = %x \n",Saki,Saki);      fprintf(stderr,"Saki(yomi) = %x,%d \n",Saki,Saki);
   }    }
   if (ptr == 0 && Saki == -1) {    if (ptr == 0 && Saki == -1) {
     fprintf(stderr," ; was expected.\n");      fprintf(stderr," ; was expected.\n");

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.21

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>