This commit is contained in:
Yaossg 2024-11-16 08:39:45 +08:00
parent 6c8e15ba66
commit f197671868
3 changed files with 10 additions and 12 deletions

View File

@ -12,8 +12,4 @@ int eprintf(const char format[], ...) {
void ungetchar(int ch) { void ungetchar(int ch) {
ungetc(ch, stdin); ungetc(ch, stdin);
} }
int eof() {
return feof(stdin);
}

View File

@ -8,5 +8,4 @@ void exit(int status);
// ext // ext
void ungetchar(int ch); void ungetchar(int ch);
int eof();
int eprintf(const char* format, ...); int eprintf(const char* format, ...);

15
boot.c
View File

@ -72,7 +72,7 @@ const int TOKEN_STRING = 150;
int parse_int(int ch) { int parse_int(int ch) {
int num = ch - '0'; int num = ch - '0';
while (!eof() && is_digit(ch = getchar())) { while (is_digit(ch = getchar())) {
num = num * 10; num = num * 10;
num = num + ch - '0'; num = num + ch - '0';
} }
@ -118,7 +118,11 @@ int string_lut_size;
int parse_string() { int parse_string() {
int offset = string_offset; int offset = string_offset;
int ch; int ch;
while (!eof() && (ch = getchar()) != '"') { while ((ch = getchar()) != '"') {
if (ch == -1 || ch == '\n') {
eprintf("expecting '\"'\n");
exit(1);
}
if (ch == '\\') { if (ch == '\\') {
ch = get_escaped_char(); ch = get_escaped_char();
} }
@ -136,7 +140,7 @@ int id_lut_size;
int parse_id(int ch) { int parse_id(int ch) {
int offset = id_offset; int offset = id_offset;
id_table[id_offset++] = ch; id_table[id_offset++] = ch;
while (!eof() && is_id_cont(ch = getchar())) { while (is_id_cont(ch = getchar())) {
id_table[id_offset++] = ch; id_table[id_offset++] = ch;
} }
ungetchar(ch); ungetchar(ch);
@ -1278,6 +1282,7 @@ void parse_top_level() {
eprintf("unexpected token: %d\n", token_type); eprintf("unexpected token: %d\n", token_type);
exit(1); exit(1);
} }
parse_top_level();
} }
void dump_string_table() { void dump_string_table() {
@ -1311,9 +1316,7 @@ void dump_string_table() {
} }
int main() { int main() {
while (!eof()) { parse_top_level();
parse_top_level();
}
dump_string_table(); dump_string_table();
return 0; return 0;
} }