[BACK]Return to tokens.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/Attic/tokens.c between version 1.2 and 1.3

version 1.2, 2008/12/04 16:34:59 version 1.3, 2008/12/04 19:31:57
Line 24 
Line 24 
 #include "private.h"  #include "private.h"
   
   
 static  int              rofftok_dashes(const char *);  static  int              rofftok_dashes(const char *, int *);
 static  int              rofftok_special(const char *);  static  int              rofftok_special(const char *, int *);
 static  int              rofftok_predef(const char *);  static  int              rofftok_predef(const char *, int *);
 static  int              rofftok_defined(const char *);  static  int              rofftok_defined(const char *, int *);
   
   
 static int  static int
 rofftok_defined(const char *buf)  rofftok_defined(const char *buf, int *i)
 {  {
         if (0 == *buf)          const char       *p;
   
           if (0 == buf[*i])
                 return(-1);                  return(-1);
         if (0 == *(buf + 1))          if (0 == buf[*i + 1])
                 return(-1);                  return(-1);
         if (0 != *(buf + 2))  
                 return(-1);  
   
         if (0 == strcmp(buf, ">="))          (*i)++;
           p = &buf[(*i)++];
   
           if (0 == memcmp(p, ">=", 2))
                 return(ROFFTok_Ge);                  return(ROFFTok_Ge);
         else if (0 == strcmp(buf, "<="))          else if (0 == memcmp(p, "<=", 2))
                 return(ROFFTok_Le);                  return(ROFFTok_Le);
         else if (0 == strcmp(buf, "Rq"))          else if (0 == memcmp(p, "Rq", 2))
                 return(ROFFTok_Rquote);                  return(ROFFTok_Rquote);
         else if (0 == strcmp(buf, "Lq"))          else if (0 == memcmp(p, "Lq", 2))
                 return(ROFFTok_Lquote);                  return(ROFFTok_Lquote);
         else if (0 == strcmp(buf, "ua"))          else if (0 == memcmp(p, "ua", 2))
                 return(ROFFTok_Uparrow);                  return(ROFFTok_Uparrow);
         else if (0 == strcmp(buf, "aa"))          else if (0 == memcmp(p, "aa", 2))
                 return(ROFFTok_Acute);                  return(ROFFTok_Acute);
         else if (0 == strcmp(buf, "ga"))          else if (0 == memcmp(p, "ga", 2))
                 return(ROFFTok_Grave);                  return(ROFFTok_Grave);
         else if (0 == strcmp(buf, "Pi"))          else if (0 == memcmp(p, "Pi", 2))
                 return(ROFFTok_Pi);                  return(ROFFTok_Pi);
         else if (0 == strcmp(buf, "Ne"))          else if (0 == memcmp(p, "Ne", 2))
                 return(ROFFTok_Ne);                  return(ROFFTok_Ne);
         else if (0 == strcmp(buf, "Le"))          else if (0 == memcmp(p, "Le", 2))
                 return(ROFFTok_Le);                  return(ROFFTok_Le);
         else if (0 == strcmp(buf, "Ge"))          else if (0 == memcmp(p, "Ge", 2))
                 return(ROFFTok_Ge);                  return(ROFFTok_Ge);
         else if (0 == strcmp(buf, "Lt"))          else if (0 == memcmp(p, "Lt", 2))
                 return(ROFFTok_Lt);                  return(ROFFTok_Lt);
         else if (0 == strcmp(buf, "Gt"))          else if (0 == memcmp(p, "Gt", 2))
                 return(ROFFTok_Gt);                  return(ROFFTok_Gt);
         else if (0 == strcmp(buf, "Pm"))          else if (0 == memcmp(p, "Pm", 2))
                 return(ROFFTok_Plusmin);                  return(ROFFTok_Plusmin);
         else if (0 == strcmp(buf, "If"))          else if (0 == memcmp(p, "If", 2))
                 return(ROFFTok_Infty);                  return(ROFFTok_Infty);
         else if (0 == strcmp(buf, "Na"))          else if (0 == memcmp(p, "Na", 2))
                 return(ROFFTok_Nan);                  return(ROFFTok_Nan);
         else if (0 == strcmp(buf, "Ba"))          else if (0 == memcmp(p, "Ba", 2))
                 return(ROFFTok_Bar);                  return(ROFFTok_Bar);
   
         return(-1);          return(-1);
Line 80  rofftok_defined(const char *buf)
Line 83  rofftok_defined(const char *buf)
   
   
 static int  static int
 rofftok_predef(const char *buf)  rofftok_predef(const char *buf, int *i)
 {  {
         if (0 == *buf)          if (0 == buf[*i])
                 return(-1);                  return(-1);
           if ('(' == buf[*i])
                   return(rofftok_defined(buf, i));
   
         if ('(' == *buf)          switch (buf[*i]) {
                 return(rofftok_defined(++buf));  
   
         switch (*buf) {  
         case ('q'):          case ('q'):
                 return(ROFFTok_Quote);                  return(ROFFTok_Quote);
         default:          default:
Line 100  rofftok_predef(const char *buf)
Line 102  rofftok_predef(const char *buf)
   
   
 static int  static int
 rofftok_dashes(const char *buf)  rofftok_dashes(const char *buf, int *i)
 {  {
   
         if (0 == *buf)          if (0 == buf[*i])
                 return(-1);                  return(-1);
         else if (*buf++ != 'e')          else if (buf[(*i)++] != 'e')
                 return(-1);                  return(-1);
           if (0 == buf[*i])
         if (0 == *buf)  
                 return(-1);                  return(-1);
         else if (0 != *(buf + 1))  
                 return(-1);  
   
         switch (*buf) {          switch (buf[*i]) {
         case ('m'):          case ('m'):
                 return(ROFFTok_Em);                  return(ROFFTok_Em);
         case ('n'):          case ('n'):
Line 126  rofftok_dashes(const char *buf)
Line 125  rofftok_dashes(const char *buf)
   
   
 static int  static int
 rofftok_special(const char *buf)  rofftok_special(const char *buf, int *i)
 {  {
   
         if (0 == *buf)          if (0 == buf[*i])
                 return(-1);                  return(ROFFTok_Slash);
         else if (0 != *(buf + 1))  
                 return(-1);  
   
         switch (*buf) {          switch (buf[*i]) {
         case ('a'):          case ('a'):
                 return(ROFFTok_Sp_A);                  return(ROFFTok_Sp_A);
         case ('b'):          case ('b'):
Line 149  rofftok_special(const char *buf)
Line 146  rofftok_special(const char *buf)
                 return(ROFFTok_Sp_T);                  return(ROFFTok_Sp_T);
         case ('v'):          case ('v'):
                 return(ROFFTok_Sp_V);                  return(ROFFTok_Sp_V);
           case ('0'):
                   return(ROFFTok_Sp_0);
         default:          default:
                 break;                  break;
         }          }
Line 157  rofftok_special(const char *buf)
Line 156  rofftok_special(const char *buf)
   
   
 int  int
 rofftok_scan(const char *buf)  rofftok_scan(const char *buf, int *i)
 {  {
   
         assert(*buf);          assert(*buf);
         if ('\\' != *buf++)          assert(buf[*i] == '\\');
                 return(ROFFTok_MAX);  
   
         for ( ; *buf; buf++) {          (*i)++;
                 switch (*buf) {  
           for ( ; buf[*i]; (*i)++) {
                   switch (buf[*i]) {
                 case ('e'):                  case ('e'):
                         return(rofftok_special(++buf));                          (*i)++;
                           return(rofftok_special(buf, i));
                 case ('('):                  case ('('):
                         return(rofftok_dashes(++buf));                          (*i)++;
                           return(rofftok_dashes(buf, i));
                 case (' '):                  case (' '):
                         return(ROFFTok_Space);                          return(ROFFTok_Space);
                 case ('&'):                  case ('&'):
Line 177  rofftok_scan(const char *buf)
Line 179  rofftok_scan(const char *buf)
                 case ('-'):                  case ('-'):
                         return(ROFFTok_Hyphen);                          return(ROFFTok_Hyphen);
                 case ('*'):                  case ('*'):
                         return(rofftok_predef(++buf));                          (*i)++;
                           return(rofftok_predef(buf, i));
                 case ('\\'):                  case ('\\'):
                         return(ROFFTok_MAX);                          return(ROFFTok_Slash);
                 default:                  default:
                         break;                          break;
                 }                  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

CVSweb