streq
This commit is contained in:
parent
1b144230d4
commit
6c8e15ba66
@ -1,12 +1,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
// std
|
||||
int printf(const char* format, ...);
|
||||
int getchar();
|
||||
int putchar(int ch);
|
||||
int strcmp(const char* s1, const char* s2);
|
||||
void exit(int status);
|
||||
|
||||
// ext
|
||||
|
33
boot.c
33
boot.c
@ -103,6 +103,13 @@ int get_escaped_char() {
|
||||
return ch;
|
||||
}
|
||||
|
||||
int streq(const char* s1, const char* s2) {
|
||||
while (*s1 && *s2 && *s1 == *s2) {
|
||||
s1++;
|
||||
s2++;
|
||||
}
|
||||
return *s1 == *s2;
|
||||
}
|
||||
|
||||
char string_table[65536];
|
||||
int string_offset;
|
||||
@ -148,7 +155,7 @@ void dedup_id() {
|
||||
char* latest = &id_table[id_lut[id_lut_size - 1]];
|
||||
for (int i = 0; i < id_lut_size - 1; i++) {
|
||||
char* candidate = &id_table[id_lut[i]];
|
||||
if (!strcmp(candidate, latest)) {
|
||||
if (streq(candidate, latest)) {
|
||||
rewind_id(i);
|
||||
return;
|
||||
}
|
||||
@ -159,27 +166,27 @@ void parse_id_like(int ch) {
|
||||
token_type = TOKEN_ID;
|
||||
token_data = parse_id(ch);
|
||||
char* id = &id_table[id_lut[token_data]];
|
||||
if (!strcmp(id, "int")) {
|
||||
if (streq(id, "int")) {
|
||||
token_type = TOKEN_INT;
|
||||
} else if (!strcmp(id, "if")) {
|
||||
} else if (streq(id, "if")) {
|
||||
token_type = TOKEN_IF;
|
||||
} else if (!strcmp(id, "else")) {
|
||||
} else if (streq(id, "else")) {
|
||||
token_type = TOKEN_ELSE;
|
||||
} else if (!strcmp(id, "while")) {
|
||||
} else if (streq(id, "while")) {
|
||||
token_type = TOKEN_WHILE;
|
||||
} else if (!strcmp(id, "break")) {
|
||||
} else if (streq(id, "break")) {
|
||||
token_type = TOKEN_BREAK;
|
||||
} else if (!strcmp(id, "continue")) {
|
||||
} else if (streq(id, "continue")) {
|
||||
token_type = TOKEN_CONTINUE;
|
||||
} else if (!strcmp(id, "return")) {
|
||||
} else if (streq(id, "return")) {
|
||||
token_type = TOKEN_RETURN;
|
||||
} else if (!strcmp(id, "void")) {
|
||||
} else if (streq(id, "void")) {
|
||||
token_type = TOKEN_VOID;
|
||||
} else if (!strcmp(id, "const")) {
|
||||
} else if (streq(id, "const")) {
|
||||
token_type = TOKEN_CONST;
|
||||
} else if (!strcmp(id, "char")) {
|
||||
} else if (streq(id, "char")) {
|
||||
token_type = TOKEN_CHAR;
|
||||
} else if (!strcmp(id, "for")) {
|
||||
} else if (streq(id, "for")) {
|
||||
token_type = TOKEN_FOR;
|
||||
}
|
||||
if (token_type != TOKEN_ID) {
|
||||
@ -1295,7 +1302,7 @@ void dump_string_table() {
|
||||
} else if (ch == '\"') {
|
||||
printf("\\\"");
|
||||
} else {
|
||||
putchar(ch);
|
||||
printf("%c", ch);
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user