/[projet1]/public/pc/tools/osdk/main/compiler/sources/lex.c
Defence Force logotype

Diff of /public/pc/tools/osdk/main/compiler/sources/lex.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1138 by dbug, Sun May 24 19:53:20 2009 UTC revision 1139 by Jylam, Fri May 16 08:24:20 2014 UTC
# Line 17  static struct symbol tval;     /* symbol for Line 17  static struct symbol tval;     /* symbol for
17  enum { BLANK=01, NEWLINE=02, LETTER=04, DIGIT=010, HEX=020, BAD=040 };  enum { BLANK=01, NEWLINE=02, LETTER=04, DIGIT=010, HEX=020, BAD=040 };
18    
19    
20  static unsigned char map[256] =  static unsigned char map[256] =
21  {  {
22  /* 000 nul */   BAD,  /* 000 nul */   BAD,
23  /* 001 soh */   BAD,  /* 001 soh */   BAD,
# Line 404  static int errno; Line 404  static int errno;
404  #endif  #endif
405    
406  /* fcon - scan for tail of a floating constant, set token, return symbol */  /* fcon - scan for tail of a floating constant, set token, return symbol */
407  static Symbol fcon()  static Symbol fcon()
408  {  {
409          char *s = token;          char *s = token;
410          int n = 0;          int n = 0;
# Line 424  static Symbol fcon() Line 424  static Symbol fcon()
424                  }                  }
425          }          }
426    
427          if (*cp == 'e' || *cp == 'E')          if (*cp == 'e' || *cp == 'E')
428          {          {
429                  if (*++cp == '-' || *cp == '+')                  if (*++cp == '-' || *cp == '+')
430                  {                  {
# Line 433  static Symbol fcon() Line 433  static Symbol fcon()
433    
434                  if (map[*cp]&DIGIT)                  if (map[*cp]&DIGIT)
435                  {                  {
436                          do                          do
437                          {                          {
438                                  cp++;                                  cp++;
439                          }                          }
440                          while (map[*cp]&DIGIT);                          while (map[*cp]&DIGIT);
441                  }                  }
# Line 449  static Symbol fcon() Line 449  static Symbol fcon()
449          {          {
450                  tval.u.c.v.d = 0.0;                  tval.u.c.v.d = 0.0;
451          }          }
452          else          else
453          {          {
454                  double temp_double;                  double temp_double;
455                  char c = *cp;                  char c = *cp;
# Line 465  static Symbol fcon() Line 465  static Symbol fcon()
465                  *cp = c;                  *cp = c;
466          }          }
467    
468          if (*cp == 'f' || *cp == 'F')          if (*cp == 'f' || *cp == 'F')
469          {          {
470                  char c = *++cp;                  char c = *++cp;
471                  *cp = 0;                  *cp = 0;
# Line 481  static Symbol fcon() Line 481  static Symbol fcon()
481                  tval.u.c.v.f = (float)tval.u.c.v.d;                  tval.u.c.v.f = (float)tval.u.c.v.d;
482                  *cp = c;                  *cp = c;
483          }          }
484          else          else
485          if (*cp == 'l' || *cp == 'L')          if (*cp == 'l' || *cp == 'L')
486          {          {
487                  cp++;                  cp++;
488                  tval.type = longdouble;                  tval.type = longdouble;
# Line 587  int gettok() { Line 587  int gettok() {
587                                  cp = rcp;                                  cp = rcp;
588                                  tsym = icon(n, overflow);                                  tsym = icon(n, overflow);
589                                  return ICON;                                  return ICON;
590                          } else if (*token == '0') {                          }
591                else if (*token == '0' && (*rcp == 'b' || *rcp == 'B')) {
592                                    while (*++rcp) {
593                                            if (*rcp=='0' || *rcp=='1')
594                                                    d = *rcp - '0';
595                                            else
596                                                    break;
597                                            if (n&~((unsigned)-1 >> 1))
598                                                    overflow++;
599                                            else
600                                                    n = (n<<1) + d;
601                                    }
602                                    if ((char *)rcp - token <= 2)
603                                            error("invalid binary constant\n");
604                                    cp = rcp;
605                                    tsym = icon(n, overflow);
606                                    return ICON;
607                            }
608                else if (*token == '0') {
609                                  int err = 0;                                  int err = 0;
610                                  for ( ; map[*rcp]&DIGIT; rcp++) {                                  for ( ; map[*rcp]&DIGIT; rcp++) {
611                                          if (*rcp == '8' || *rcp == '9')                                          if (*rcp == '8' || *rcp == '9')
# Line 766  int gettok() { Line 784  int gettok() {
784                          return '-';                          return '-';
785                  case ';': case ',': case ':':                  case ';': case ',': case ':':
786                  case '*': case '~': case '%': case '^': case '?':                  case '*': case '~': case '%': case '^': case '?':
787                  case '[': case ']': case '{': case '}': case '(': case ')':                  case '[': case ']': case '{': case '}': case '(': case ')':
788                          cp = rcp;                          cp = rcp;
789                          return *(rcp-1);                          return *(rcp-1);
790  #include "keywords.h"  #include "keywords.h"

Legend:
Removed from v.1138  
changed lines
  Added in v.1139

  ViewVC Help
Powered by ViewVC 1.1.26