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

Diff for /OpenXM/src/kxx/Attic/oxweave.c between version 1.4 and 1.5

version 1.4, 1999/12/13 14:47:41 version 1.5, 1999/12/14 06:41:03
Line 1 
Line 1 
   /*&eg
   \documentclass{article}
   \title{On oxweave.c}
   \author{} \date{}
   \begin{document}
   \maketitle
   \section{Introduction}
   */
 /*&jp  /*&jp
 \documentclass{jarticle}  \documentclass{jarticle}
 \title{oxweave $B$N%=!<%9%3!<%I$K$D$$$F$N2r@b(B}  \title{oxweave $B$N%=!<%9%3!<%I$K$D$$$F$N2r@b(B}
Line 6 
Line 14 
 \maketitle  \maketitle
 \section{$BA0=q$-(B}  \section{$BA0=q$-(B}
 */  */
 /* $OpenXM: OpenXM/src/kxx/oxweave.c,v 1.3 1999/12/13 07:55:23 takayama Exp $ */  /* $OpenXM: OpenXM/src/kxx/oxweave.c,v 1.4 1999/12/13 14:47:41 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
   
 /* Modify here to change the begin tag and EndComment. Less than 9 characters.  /* Modify here to change the begin tag and EndComment. Less than 9 characters.
Line 21  char *EndComment1="\n";
Line 29  char *EndComment1="\n";
 static int Debug = 0;  static int Debug = 0;
 static int Plain = 0;  static int Plain = 0;
 /*&jp \noindent  /*&jp \noindent
     $B:F5"(B option $B$r(B on $B$K$7$?>l9g(B ({\tt Recursive = 1},
     {\tt LevelState1} $B$G(B, $B0u:~$9$Y$-(B comment $B$N%M%9%H$N%l%Y%k$rI=$9(B.
     {\tt LevelState2} $B$G(B, $B:o=|$9$Y$-(B comment $B$N%M%9%H$N%l%Y%k$rI=$9(B.
   */
   static int Recursive = 0;
   static int LevelState1 = 0;
   static int LevelState2 = 0;
   /*&jp \noindent
   {\tt Buf} $B$OI8=`=PNO$h$j$N%G!<%?$r0l;~3JG<$7$F$*$/NN0h(B.    {\tt Buf} $B$OI8=`=PNO$h$j$N%G!<%?$r0l;~3JG<$7$F$*$/NN0h(B.
   {\tt Head} $B$,:G=i$NJ8;z$r$5$7(B, {\tt Tail} $B$O:G8e$NJ8;z$r$5$9(B.    {\tt Head} $B$,:G=i$NJ8;z$r$5$7(B, {\tt Tail} $B$O:G8e$NJ8;z$r$5$9(B.
   {\tt Buf} $B$r%j%s%0>u$K;HMQ$9$k$N$G(B, $B%j%s%0%P%C%U%!$H$h$V(B    {\tt Buf} $B$r%j%s%0>u$K;HMQ$9$k$N$G(B, $B%j%s%0%P%C%U%!$H$h$V(B
Line 33  char *Tag = NULL;
Line 49  char *Tag = NULL;
 /*&jp \noindent {\tt OutputNoTaggedSegment = 1}  /*&jp \noindent {\tt OutputNoTaggedSegment = 1}
   $B$J$i(B $B%3%a%s%H5-9f$N30$O(B verbatim $B$rMQ$$$F=PNO(B.    $B$J$i(B $B%3%a%s%H5-9f$N30$O(B verbatim $B$rMQ$$$F=PNO(B.
   {\tt --source} $B%*%W%7%g%s$G$3$NJQ?t$r(B1$B$K$G$-$k(B.    {\tt --source} $B%*%W%7%g%s$G$3$NJQ?t$r(B1$B$K$G$-$k(B.
     {\tt --plain} $B$G$O(B,  verbatim $B$rMxMQ$;$:$K@8$G=PNO(B.
   */    */
 int OutputNoTaggedSegment = 0;  int OutputNoTaggedSegment = 0;
 /*&jp \noindent 1 $B$J$i%?%0$N$D$$$?>l=j$r=PNOCf(B. */  /*&jp \noindent 1 $B$J$i%?%0$N$D$$$?>l=j$r=PNOCf(B. */
Line 55  main(int argc,char *argv[]) {
Line 72  main(int argc,char *argv[]) {
   Head = Tail = 0; Buf[0] = ' ';  /* initialize */    Head = Tail = 0; Buf[0] = ' ';  /* initialize */
   
   /*&jp  {\tt tagv[]} $B$K%?%0$N$"$D$^$j$r$$$l$k(B.    /*&jp  {\tt tagv[]} $B$K%?%0$N$"$D$^$j$r$$$l$k(B.
         {\tt tagv2[]} $B$KBP1~$9$k%?%0$N$*$o$j$N5-9f$r$$$l$k(B.      {\tt tagv2[]} $B$KBP1~$9$k%?%0$N$*$o$j$N5-9f$r$$$l$k(B.
         */      */
   tagc = tagc2 = 0;    tagc = tagc2 = 0;
   if (argc <= 1 || argc >= VSIZE) {    if (argc <= 1 || argc >= VSIZE) {
     usage();      usage();
Line 64  main(int argc,char *argv[]) {
Line 81  main(int argc,char *argv[]) {
   }else{    }else{
     for (i=1; i< argc ; i++) {      for (i=1; i< argc ; i++) {
       if (strcmp(argv[i],"--source") == 0) {        if (strcmp(argv[i],"--source") == 0) {
                 OutputNoTaggedSegment = 1;          OutputNoTaggedSegment = 1;
           }else if (strcmp(argv[i],"--plain") == 0) {        }else if (strcmp(argv[i],"--plain") == 0) {
                 Plain = 1; OutputNoTaggedSegment = 1;          Plain = 1; OutputNoTaggedSegment = 1;
         }else if (strcmp(argv[i],"--recursive") == 0) {
           Recursive = 1;
       } else{        } else{
                 tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10));          if (strcmp(argv[i]," ") == 0) {
                 tagv2[tagc2] = (char *) malloc(sizeof(char)*10);            argv[i] = "";
                 strcpy(tagv[tagc],BeginTag0);          }
                 strcat(tagv[tagc],argv[i]);          tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10));
                 tagv2[tagc] = EndComment0;          tagv2[tagc2] = (char *) malloc(sizeof(char)*10);
                 /* $B%3%a%s%H$N$*$o$j$N5-9f(B.  */          strcpy(tagv[tagc],BeginTag0);
                 tagc2++;          strcat(tagv[tagc],argv[i]);
                 tagc++;          tagv2[tagc] = EndComment0;
           /* $B%3%a%s%H$N$*$o$j$N5-9f(B.  */
           tagc2++;
           tagc++;
   
                 tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10));          tagv[tagc] = (char *) malloc(sizeof(char)*(strlen(argv[i])+10));
                 tagv2[tagc2] = (char *) malloc(sizeof(char)*10);          tagv2[tagc2] = (char *) malloc(sizeof(char)*10);
                 strcpy(tagv[tagc],BeginTag1);          strcpy(tagv[tagc],BeginTag1);
                 strcat(tagv[tagc],argv[i]);          strcat(tagv[tagc],argv[i]);
                 tagv2[tagc] = EndComment1;          tagv2[tagc] = EndComment1;
         tagc2++;          tagc2++;
                 tagc++;          tagc++;
       }        }
     }      }
   }    }
   /*&jp $B%W%m%0%i%`$O#3$D$N>uBV$r;}$D(B. $B>uBV(B 0 $B$O%?%0IU$-%3%a%s%H5-9f$N30(B.    /*&jp $B%W%m%0%i%`$O#3$D$N>uBV$r;}$D(B. $B>uBV(B 0 $B$O%?%0IU$-%3%a%s%H5-9f$N30(B.
         $B>uBV(B 1 $B$O;XDj$5$l$?%?%0$NIU$$$?%3%a%s%H$NCf(B.      $B>uBV(B 1 $B$O;XDj$5$l$?%?%0$NIU$$$?%3%a%s%H$NCf(B.
         $B>uBV(B 2 $B$O;XDj$5$l$F$$$J$$%?%0$NIU$$$?%3%a%s%H$NCf(B      $B>uBV(B 2 $B$O;XDj$5$l$F$$$J$$%?%0$NIU$$$?%3%a%s%H$NCf(B
         ($B>uBV#2$K$"$k$H$-$O0u:~$5$l$J$$(B.) */      ($B>uBV#2$K$"$k$H$-$O0u:~$5$l$J$$(B.) */
   /*    /*
         state 0  -- / * & jp  --->  state 1      state 0  -- / * & jp  --->  state 1
         if ( BeginVerbatim & OutputNoTaggedSegment ) end-verbatim      if ( BeginVerbatim & OutputNoTaggedSegment ) end-verbatim
         <---  * /    ---   state 1      <---  * /    ---   state 1
         if ( OutputNoTaggedSegment ) begin-verbatim      if ( OutputNoTaggedSegment ) begin-verbatim
   
         state 0  -- / * & unknown  --->  state 2      state 0  -- / * & unknown  --->  state 2
         <---  * /    ---   state 2      <---  * /    ---   state 2
   
         state 0  & OutputNoTaggedSegment  ==> putchar()      state 0  & OutputNoTaggedSegment  ==> putchar()
         state 1                           ==> putchar()      state 1                           ==> putchar()
         state 2                           ==> skip      state 2                           ==> skip
         */      */
   while (notEOF()) {    while (notEOF()) {
     /* We are in the state 0. */      /* We are in the state 0. */
     pos = findNextTag(tagc,tagv,tagc2,tagv2);      pos = findNextTag(tagc,tagv,tagc2,tagv2);
         /* printf(" ===pos=%d=== ",pos); */      /* printf(" ===pos=%d=== ",pos); */
     /* We are in the state 1. */      /* We are in the state 1. */
     findEndTag(tagc2,tagv2,pos);      findEndTag(tagc2,tagv2,pos);
   }    }
Line 119  main(int argc,char *argv[]) {
Line 141  main(int argc,char *argv[]) {
   
 /*&jp \noindent $B<!$N4X?t$OMxMQK!$rI=<($9$k(B. */  /*&jp \noindent $B<!$N4X?t$OMxMQK!$rI=<($9$k(B. */
 usage() {  usage() {
   fprintf(stderr,"oxweave [--plain] [--source] [key1 key2 ...]\n");  #include "oxweaveUsage.h"
   fprintf(stderr,"Example 1: oxweave --source jp <oxweave.c >t.tex\n");  
   fprintf(stderr,"Example 2: oxweave  jp <oxweave.c >t.tex\n");  
   fprintf(stderr,"Example 2: oxweave --plain  <oxweave.c >t.tex\n");  
 }  }
   
 #define inc(a) ((a+1) % BSIZE)  #define inc(a) ((a+1) % BSIZE)
 /*&jp \noindent {\tt wread()} $B$O(B $BI8=`F~NO$h$j$N%G!<%?$rFI$a$k$@$1(B  /*&jp \noindent {\tt wread()} $B$O(B $BI8=`F~NO$h$j$N%G!<%?$rFI$a$k$@$1(B
 $B%j%s%0%P%C%U%!(B {\tt Buf] $B$XFI$_9~$`(B.*/  $B%j%s%0%P%C%U%!(B {\tt Buf} $B$XFI$_9~$`(B.*/
 wread() {  wread() {
   int c,i;    int c,i;
   static int eof = 0;    static int eof = 0;
Line 165  int wgetc(int p) {
Line 184  int wgetc(int p) {
   return(c);    return(c);
 }  }
   
 /*&jp  \noindent {\tt findNextTag()} $B$O<!$N(B {\tt /\*\&} $B$J$k%?%0$r$5$,$9(B.  /*&jp  \noindent {\tt findNextTag()} $B$O<!$N(B {\tt / *\&} $B$J$k%?%0$r$5$,$9(B.
    ( $B$3$l$O(B, {\tt BeginTag} $B$NCM$rJQ$($k$HJQ99$G$-$k(B.)     ( $B$3$l$O(B, {\tt BeginTag0} $B$NCM$rJQ$($k$HJQ99$G$-$k(B.)
   {\tt OutputNoTaggedSegment} $B$,(B 1 $B$J$i%G!<%?$r$=$N$^$^$J$,$9(B.    {\tt OutputNoTaggedSegment} $B$,(B 1 $B$J$i%G!<%?$r$=$N$^$^$J$,$9(B.
   $BL5;k$9$Y$-%?%0$N$H$-$O(B, $B%?%0FbIt$r%9%-%C%W$7$?$N$A(B    $BL5;k$9$Y$-%?%0$N$H$-$O(B, $B%?%0FbIt$r%9%-%C%W$7$?$N$A(B
   {\tt findNextTag} $B$r:F5"E*$K8F$V(B.    {\tt findNextTag} $B$r:F5"E*$K8F$V(B.
Line 180  findNextTag(int tagc, char *tagv[],int tagc2,char *tag
Line 199  findNextTag(int tagc, char *tagv[],int tagc2,char *tag
     for (i=0; i<tagc; i++) {      for (i=0; i<tagc; i++) {
       /* fprintf(stderr,"\nChecking %s : ",tagv[i]); */        /* fprintf(stderr,"\nChecking %s : ",tagv[i]); */
       if (wcmp(tagv[i]) == 0) {        if (wcmp(tagv[i]) == 0) {
                 /* fprintf(stderr," : matched."); */          LevelState1++;
                 wgetc(strlen(tagv[i]));          /* fprintf(stderr," : matched."); */
                 if (OutputNoTaggedSegment == 1 && BeginVerbatim == 1) {          wgetc(strlen(tagv[i])+1);
                   BeginVerbatim = 0;          if (OutputNoTaggedSegment == 1 && BeginVerbatim == 1) {
                   if (!Plain) printf("\\end{verbatim\x07d}\n");            BeginVerbatim = 0;
                 }            if (!Plain) printf("\\end{verbatim\x07d}\n");
                 OutputtingTaggedSegment = 1;          }
                 return(i);  /* Now, state is 1. */          OutputtingTaggedSegment = 1;
           return(i);  /* Now, state is 1. */
       }        }
     }      }
     /*&jp {\tt /\*\&} $B$@$1$I$I$N%?%0$K$b0lCW$7$J$$(B */      /*&jp {\tt / *\&} $B$@$1$I$I$N%?%0$K$b0lCW$7$J$$(B */
     if (wcmp(BeginTag0) == 1) {      if (wcmp(BeginTag0) == 1) {
         LevelState2++;
       wgetc(strlen(BeginTag0));        wgetc(strlen(BeginTag0));
       while ((d=wgetc(1)) > ' ') ;        while ((d=wgetc(1)) > ' ') ;
       /* We are in the state 2. */        /* We are in the state 2. */
Line 199  findNextTag(int tagc, char *tagv[],int tagc2,char *tag
Line 220  findNextTag(int tagc, char *tagv[],int tagc2,char *tag
       /* We are in the state 0. */        /* We are in the state 0. */
       return(findNextTag(tagc,tagv,tagc2,tagv2));        return(findNextTag(tagc,tagv,tagc2,tagv2));
     }else if (wcmp(BeginTag1) == 1) {      }else if (wcmp(BeginTag1) == 1) {
         LevelState2++;
       wgetc(strlen(BeginTag1));        wgetc(strlen(BeginTag1));
       while ((d=wgetc(1)) > ' ') ;        while ((d=wgetc(1)) > ' ') ;
       /* We are in the state 2. */        /* We are in the state 2. */
Line 218  findNextTag(int tagc, char *tagv[],int tagc2,char *tag
Line 240  findNextTag(int tagc, char *tagv[],int tagc2,char *tag
   exit(0);    exit(0);
 }  }
   
 /*&jp  \noindent {\tt findEndTag()} $B$O<!$N(B {\tt \*\/} $B$J$k%?%0$r$5$,$9(B.  /*&jp  \noindent {\tt findEndTag()} $B$O<!$N(B {\tt * /} $B$J$k%?%0$r$5$,$9(B.
        ( $B$3$l$O(B, EndComment[01] $B$NCM$rJQ$($k$HJQ992DG=(B. )         ( $B$3$l$O(B, EndComment0 $B$NCM$rJQ$($k$HJQ992DG=(B. )
         {\tt / /} $B$G;O$^$k>l9g$O(B, 0xa $B$,$*$o$j(B.
 */  */
 findEndTag(int tagc,char *tagv[],int rule) {  findEndTag(int tagc,char *tagv[],int rule) {
   int i;    int i;
Line 228  findEndTag(int tagc,char *tagv[],int rule) {
Line 251  findEndTag(int tagc,char *tagv[],int rule) {
   do {    do {
     i = rule;      i = rule;
     if (wcmp(tagv[i]) == 0) {      if (wcmp(tagv[i]) == 0) {
       wgetc(strlen(tagv[i]));        LevelState1--;
           if (strcmp(tagv[i],"\n")==0) putchar('\n');        /* printf("LevelState1=%d\n",LevelState1);*/
       OutputtingTaggedSegment = 0;        if (LevelState1 > 0 && Recursive) {
       if (OutputNoTaggedSegment) {          wgetc(strlen(tagv[i]));
                 if (!Plain) printf("\n{\\footnotesize \\begin{verbatim}\n");          printf("%s",tagv[i]);
                 BeginVerbatim = 1;          return(findEndTag(tagc,tagv,rule));
         }else{
           wgetc(strlen(tagv[i]));
           if (strcmp(tagv[i],"\n")==0) putchar('\n');
           OutputtingTaggedSegment = 0;
           if (OutputNoTaggedSegment) {
             if (!Plain) printf("\n{\\footnotesize \\begin{verbatim}\n");
             BeginVerbatim = 1;
           }
           return;                 /* Our state is 0. */
       }        }
       return;                   /* Our state is 0. */  
     }      }
     /* Our state is 1. */      /* Our state is 1. */
       if (wcmp("/*") >= 0 ) {
         LevelState1++;
         /* printf("LevelState1++=%d\n",LevelState1); */
       }
     c = wgetc(1);      c = wgetc(1);
     putchar(c);      putchar(c);
   }while( c!= EOF);    }while( c!= EOF);
Line 254  skipToEndTag(int tagc,char *tagv[],int rule) {
Line 289  skipToEndTag(int tagc,char *tagv[],int rule) {
   do {    do {
     if (rule == 0) {      if (rule == 0) {
       if (wcmp(EndComment0) == 0) {        if (wcmp(EndComment0) == 0) {
                 wgetc(strlen(EndComment0));          LevelState2--;
                 return;  /* our state is 0. */          if (LevelState2 > 0 && Recursive) {
             wgetc(strlen(EndComment0));
             return(skipToEndTag(tagc,tagv,rule));
           }else{
             wgetc(strlen(EndComment0));
             return;  /* our state is 0. */
           }
       }        }
     }else if (rule == 1) {      }else if (rule == 1) {
       if (wcmp(EndComment1) == 0) {        if (wcmp(EndComment1) == 0) {
                 wgetc(strlen(EndComment1));          LevelState2--;
                 return;  /* our state is 0. */          if (LevelState2 > 0 && Recursive) {
             wgetc(strlen(EndComment0));
             return(skipToEndTag(tagc,tagv,rule));
           }else{
             wgetc(strlen(EndComment1));
             return;  /* our state is 0. */
           }
       }        }
     }else{      }else{
       for (i=0; i<tagc; i++) {        for (i=0; i<tagc; i++) {
                 if (wcmp(tagv[i]) == 0) {          if (wcmp(tagv[i]) == 0) {
                   wgetc(strlen(tagv[i]));            LevelState2--;
                   return;  /* our state is 0. */            if (LevelState2 > 0 && Recursive) {
                 }              wgetc(strlen(EndComment0));
               return(skipToEndTag(tagc,tagv,rule));
             }else{
               wgetc(strlen(tagv[i]));
               return;  /* our state is 0. */
             }
           }
       }        }
   
     }      }
     /* our state is 2. */      /* our state is 2. */
       if (wcmp("/*") >= 0) LevelState2++;
     c = wgetc(1);      c = wgetc(1);
   }while( c!= EOF);    }while( c!= EOF);
   fprintf(stderr,"findEndTag: unexpected EOF.\n");    fprintf(stderr,"findEndTag: unexpected EOF.\n");
   irregularExit();    irregularExit();
 }  }
 skipToEndTag_old(int tagc,char *tagv[]) {  
   int i;  
   int c;  
   /* our state is 2. */  
   do {  
     for (i=0; i<tagc; i++) {  
       if (wcmp(tagv[i]) == 0) {  
                 wgetc(strlen(tagv[i]));  
                 return;  /* our state is 0. */  
       }  
     }  
     /* our state is 2. */  
     c = wgetc(1);  
   }while( c!= EOF);  
   fprintf(stderr,"findEndTag: unexpected EOF.\n");  
   irregularExit();  
 }  
   
 /*&jp \noindent {\tt wcmp(s)} $B$OJ8;zNs(B {\tt s} $B$H(B {\tt Buf[Head]} $B$+$i(B  /*&jp \noindent {\tt wcmp(s)} $B$OJ8;zNs(B {\tt s} $B$H(B {\tt Buf[Head]} $B$+$i(B
 $B$O$8$^$kJ8;zNs$rHf3S$9$k(B.  $B$O$8$^$kJ8;zNs$rHf3S$9$k(B.
Line 311  wcmp(char *s) {
Line 348  wcmp(char *s) {
   wread();    wread();
   if (Debug == 2) fprintf(stderr,"[Checking %s]\n",s);    if (Debug == 2) fprintf(stderr,"[Checking %s]\n",s);
   if (strcmp(s,"\n") == 0) {    if (strcmp(s,"\n") == 0) {
         if (s[0] == Buf[Head]) return(0);      if (s[0] == Buf[Head]) return(0);
         else return(-1);      else return(-1);
   }    }
   n = strlen(s);    n = strlen(s);
   j = Head;    j = Head;
Line 339  irregularExit() {
Line 376  irregularExit() {
   exit(-1);    exit(-1);
 }  }
   
   
 /*&jp  /*&jp
   \end{document}
   */
   /*&eg
 \end{document}  \end{document}
 */  */
   

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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