Example #1
0
File: lex.c Project: zoncoen/8ccc
static Token *read_ident(char c)
{
    String *s = make_string();
    string_append(s, c);
    for (;;) {
        int c2 = getc(stdin);
        if (isalnum(c2) || c == '_') {
            string_append(s, c2);
        } else {
            ungetc(c2, stdin);
            return make_ident(s);
        }
    }
    return make_strtok(s);
}
Example #2
0
File: lex.c Project: zoncoen/8ccc
static Token *read_string(void)
{
    String *s = make_string();
    for (;;) {
        int c = getc(stdin);
        if (c == EOF) {
            error("Unterminated string");
        }
        if (c == '"') {
            break;
        }
        if (c == '\\') {
            c = getc(stdin);
            if (c == EOF) {
                error("Unterminated \\");
            }
        }
        string_append(s, c);
    }
    return make_strtok(s);
}
Example #3
0
static Token *read_string(void) {
  String *s = make_string();
  for (;;) {
    int c = getc(stdin);
    if (c == EOF) error("Unterminated string");
    if (c == '"') break;
    if (c == '\\') {
      c = getc(stdin);
      switch (c) {
        case EOF:
          error("Unterminated \\");
        case '\"':
          break;
        case 'n':
          c = '\n';
          break;
        default:
          error("Unknown quote: %c", c);
      }
    }
    string_append(s, c);
  }
  return make_strtok(s);
}