From da542698e7d8759bdc4b5f33d2b7d75405205ca8 Mon Sep 17 00:00:00 2001 From: Jeremiah Orians Date: Fri, 28 May 2021 23:27:17 -0400 Subject: [PATCH] Fix all special cases where line number was wrong --- cc_reader.c | 26 +++++++++++++++----------- test/test.answers | 10 +++++----- test/test1000/proof.answer | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/cc_reader.c b/cc_reader.c index 61f8b27..027b970 100644 --- a/cc_reader.c +++ b/cc_reader.c @@ -23,9 +23,16 @@ struct token_list* token; int line; char* file; +int grab_byte() +{ + int c = fgetc(input); + if(10 == c) line = line + 1; + return c; +} + int clearWhiteSpace(int c) { - if((32 == c) || (9 == c)) return clearWhiteSpace(fgetc(input)); + if((32 == c) || (9 == c)) return clearWhiteSpace(grab_byte()); return c; } @@ -34,7 +41,7 @@ int consume_byte(int c) hold_string[string_index] = c; string_index = string_index + 1; require(MAX_STRING > string_index, "Token exceeded MAX_STRING char limit\nuse --max-string number to increase\n"); - return fgetc(input); + return grab_byte(); } int preserve_string(int c) @@ -48,7 +55,7 @@ int preserve_string(int c) c = consume_byte(c); require(EOF != c, "Unterminated string\n"); } while(escape || (c != frequent)); - return fgetc(input); + return grab_byte(); } @@ -243,20 +250,18 @@ reset: c = consume_byte(c); if(c == '*') { - c = fgetc(input); + c = grab_byte(); while(c != '/') { while(c != '*') { - c = fgetc(input); + c = grab_byte(); require(EOF != c, "Hit EOF inside of block comment\n"); - if('\n' == c) line = line + 1; } - c = fgetc(input); + c = grab_byte(); require(EOF != c, "Hit EOF inside of block comment\n"); - if('\n' == c) line = line + 1; } - c = fgetc(input); + c = grab_byte(); goto reset; } else if(c == '/') @@ -266,7 +271,6 @@ reset: } else if (c == '\n') { - line = line + 1; c = consume_byte(c); } else @@ -307,7 +311,7 @@ struct token_list* read_all_tokens(FILE* a, struct token_list* current, char* fi line = 1; file = filename; token = current; - int ch =fgetc(input); + int ch =grab_byte(); while(EOF != ch) ch = get_token(ch); return token; diff --git a/test/test.answers b/test/test.answers index 3c19882..93195a6 100644 --- a/test/test.answers +++ b/test/test.answers @@ -179,8 +179,8 @@ fc31fc8b2d78bd50a4c89eb0e29149626868a70842a3dcb01ea87bb275a9e3c2 test/results/t 965bdf7049179199b9f423250a186c7b64ea55326c3249127d2daf7d42ae53cc test/results/test0106-knight-native-binary 0a929d6990caee3e93b1188a38fd3041c6f8e46d25a386024647c0f05c33bce7 test/results/test0106-knight-posix-binary 331ffb5284bd824494ad61a3b0b2dff5681a63ab604e9a06100af531ae237148 test/results/test0106-x86-binary -6fa2ce14e9b6c30165902e69e5949c315c2b70674801f3886976d03d576ec5a5 test/results/test1000-aarch64-binary -b9e67dc42ef0add9673e9f15bc459ba193816906f28371284740ea0042a363ba test/results/test1000-amd64-binary -bd9d5f4152c9e0bf5ef7a51728135de2d0a860d13f78f84eabba9f8447905eab test/results/test1000-armv7l-binary -2ed7798fc821afcf32e0ef36a4d2fd78f80f098b94775f0450bf56a1ffcfc57b test/results/test1000-knight-posix-binary -d8d73527fd105564db075726923143b1d278682488a761aae29b06ec5e30506d test/results/test1000-x86-binary +b059b96414cf326cf211c3b1d63eb01a15924a3c60964ed2e583856715e522fa test/results/test1000-aarch64-binary +c257acf49baa7335f29fd08dcc33986734bb11217b9489f908ec1a46ac228837 test/results/test1000-amd64-binary +0ecdeb7ff165e675d30973906691d02cf2a3a9486d4d3e4da1074e1b8e58dbf7 test/results/test1000-armv7l-binary +423b5e50018d464c62c6a5fc4384cb716f56a07ad434c32e7adc6a4446ebcb4c test/results/test1000-knight-posix-binary +989b624d9a37aae9a92286542d45450775bcbb924667a4e7a975834e5e85050b test/results/test1000-x86-binary diff --git a/test/test1000/proof.answer b/test/test1000/proof.answer index 324bab3..bf1bad0 100644 --- a/test/test1000/proof.answer +++ b/test/test1000/proof.answer @@ -1 +1 @@ -63f61f98451e2d1f88c0211694bc95257aaf67e03af5943bf3a1cc8361138bc2 test/test1000/proof +1b63f8b58ff8758d46629d57e45c97fc95bab326603107689883ba6aef0a77cc test/test1000/proof