no eof
This commit is contained in:
parent
6c8e15ba66
commit
f197671868
@ -13,7 +13,3 @@ int eprintf(const char format[], ...) {
|
|||||||
void ungetchar(int ch) {
|
void ungetchar(int ch) {
|
||||||
ungetc(ch, stdin);
|
ungetc(ch, stdin);
|
||||||
}
|
}
|
||||||
|
|
||||||
int eof() {
|
|
||||||
return feof(stdin);
|
|
||||||
}
|
|
||||||
|
@ -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, ...);
|
||||||
|
13
boot.c
13
boot.c
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user