Branch: Tag:

1998-10-09

1998-10-09 17:56:33 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

some wide-char support

Rev: src/cpp.c:1.29
Rev: src/lex.c:1.56
Rev: src/opcodes.c:1.30
Rev: src/pike_memory.c:1.25
Rev: src/pike_memory.h:1.5
Rev: src/stralloc.c:1.39
Rev: src/stralloc.h:1.18
Rev: src/svalue.c:1.38

4:   ||| See the files COPYING and DISCLAIMER for more information.   \*/   #include "global.h" - RCSID("$Id: lex.c,v 1.55 1998/06/07 12:26:51 grubba Exp $"); + RCSID("$Id: lex.c,v 1.56 1998/10/09 17:56:32 hubbe Exp $");   #include "language.h"   #include "array.h"   #include "lex.h"
362:    case '0': case '1': case '2': case '3':    case '4': case '5': case '6': case '7':    c-='0'; -  if(LOOK()<'0' || LOOK()>'8') return c; +  while(LOOK()>='0' && LOOK()<='8')    c=c*8+(GETC()-'0'); -  if(LOOK()<'0' || LOOK()>'8') return c; -  c=c*8+(GETC()-'0'); +     return c;       case 'r': return '\r';
377:    lex.current_line++;    return '\n';    -  +     case 'x': -  +  c=0; +  while(1) +  {    switch(LOOK())    {    default: return c;    case '0': case '1': case '2': case '3':    case '4': case '5': case '6': case '7':    case '8': case '9': -  c=GETC()-'0'; +  c=c*16+GETC()-'0';    break;       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': -  c=GETC()-'a'+10; +  c=c*16+GETC()-'a'+10;    break;       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': -  c=GETC()-'A'+10; +  c=c*16+GETC()-'A'+10;    break;    } -  +  } +  +  case 'd': +  c=0; +  while(1) +  {    switch(LOOK())    {    default: return c;    case '0': case '1': case '2': case '3':    case '4': case '5': case '6': case '7':    case '8': case '9': -  c=c*16+GETC()-'0'; +  c=c*10+GETC()-'0';    break; -  -  case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': -  c=c*16+GETC()-'a'+10; -  break; -  -  case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': -  c=c*16+GETC()-'A'+10; -  break; +     } -  return c; -  +     } -  +  }    return c;   }      static struct pike_string *readstring(void)   {    int c; -  dynamic_buffer tmp; -  initialize_buf(&tmp); +  struct string_builder tmp; +  init_string_builder(&tmp,0);       while(1)    {
440:    break;       case '\\': -  low_my_putchar(char_const(),&tmp); +  string_builder_putchar(&tmp,char_const());    continue;       case '"':    break;       default: -  low_my_putchar(c,&tmp); +  string_builder_putchar(&tmp,c);    continue;    }    break;    } -  return low_free_buf(&tmp); +  return finish_string_builder(&tmp);   }      int yylex(YYSTYPE *yylval)