Add basic error catching to primitives and cc_strings.c

This commit is contained in:
Jeremiah Orians 2020-01-25 11:35:28 -05:00
parent de6eb338d5
commit 4601fbe0e0
No known key found for this signature in database
GPG Key ID: 5410E91C14959E87
14 changed files with 86 additions and 48 deletions

View File

@ -19,8 +19,9 @@
#include "cc.h"
#include <stdint.h>
struct token_list* emit(char *s, struct token_list* head);
int char2hex(int c);
struct token_list* emit(char *s, struct token_list* head);
void require(int bool, char* error);
char upcase(char a)
{
@ -106,6 +107,7 @@ char* collect_regular_string(char* string)
string_index = 0;
collect_regular_string_reset:
require((MAX_STRING - 3) > string_index, "Attempt at parsing regular string exceeds max length\n");
if(string[0] == '\\')
{
hold_string[string_index] = escape_lookup(string);
@ -138,6 +140,7 @@ char* collect_weird_string(char* string)
hold_string[0] = '\'';
collect_weird_string_reset:
require((MAX_STRING - 6) > string_index, "Attempt at parsing weird string exceeds max length\n");
string = string + 1;
hold_string[string_index] = ' ';
temp = escape_lookup(string);

View File

@ -29,6 +29,7 @@ void* memset(void* ptr, int value, int num)
void* calloc(int count, int size)
{
void* ret = malloc(count * size);
if(NULL == ret) return NULL;
memset(ret, 0, (count * size));
return ret;
}

View File

@ -25,6 +25,11 @@ int hex2char(int c);
char* number_to_hex(int a, int bytes)
{
char* result = calloc(1 + (bytes << 1), sizeof(char));
if(NULL == result)
{
file_print("calloc failed in number_to_hex\n", stderr);
exit(EXIT_FAILURE);
}
int i = 0;
int divisor = (bytes << 3);

View File

@ -17,16 +17,24 @@
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
// void* calloc(int count, int size);
#define TRUE 1
//CONSTANT TRUE 1
#define FALSE 0
//CONSTANT FALSE 0
int in_set(int c, char* s);
void file_print(char* s, FILE* f);
char* numerate_number(int a)
{
char* result = calloc(16, sizeof(char));
if(NULL == result)
{
file_print("calloc failed in prepend_char\n", stderr);
exit(EXIT_FAILURE);
}
int i = 0;
/* Deal with Zero case */

View File

@ -16,9 +16,11 @@
*/
#include<stdlib.h>
#include<stdio.h>
#define MAX_STRING 4096
//CONSTANT MAX_STRING 4096
// void* calloc(int count, int size);
void file_print(char* s, FILE* f);
char* copy_string(char* target, char* source)
{
@ -34,6 +36,11 @@ char* copy_string(char* target, char* source)
char* postpend_char(char* s, char a)
{
char* ret = calloc(MAX_STRING, sizeof(char));
if(NULL == ret)
{
file_print("calloc failed in postpend_char\n", stderr);
exit(EXIT_FAILURE);
}
char* hold = copy_string(ret, s);
hold[0] = a;
return ret;
@ -42,6 +49,11 @@ char* postpend_char(char* s, char a)
char* prepend_char(char a, char* s)
{
char* ret = calloc(MAX_STRING, sizeof(char));
if(NULL == ret)
{
file_print("calloc failed in prepend_char\n", stderr);
exit(EXIT_FAILURE);
}
ret[0] = a;
copy_string((ret+1), s);
return ret;
@ -50,6 +62,11 @@ char* prepend_char(char a, char* s)
char* prepend_string(char* add, char* base)
{
char* ret = calloc(MAX_STRING, sizeof(char));
if(NULL == ret)
{
file_print("calloc failed in prepend_string\n", stderr);
exit(EXIT_FAILURE);
}
copy_string(copy_string(ret, add), base);
return ret;
}

View File

@ -53,10 +53,10 @@ a0ae067746e7a2b01d33950da1cf640e12c3a70a045ab331ea2025af59dec9af test/results/t
1154f39f25dcd6d914e9a542306f95280926baf985d011b2152c7ea0b87ab42d test/results/test10-knight-native-binary
c1b5a2a3cd46c5e95e5540e871c2a916e028684ca80f51c001ef489342e27625 test/results/test10-knight-posix-binary
b3e13d54aab689137628fb9c4487bfd8288f9bd18bef8fe756577c8d2dce1f1f test/results/test10-x86-binary
1b6e8c0ab5a944f1d83065db5d18a265c6e14109c532b89d3cc316b4074f9e73 test/results/test100-amd64-binary
540ca777bf1a48c51ae9ca9e172ded87b28362adee9ca220c176122e872f6c45 test/results/test100-armv7l-binary
6f8d22172abf64e5cfc8621c81236aab58de96fdc79332475df0e1c5b87821a3 test/results/test100-knight-posix-binary
7637a9078de8914e2821df07371083b319a095d51e237881e526290ab472df67 test/results/test100-x86-binary
9f8083a7b8a546ed6d88e8b0b6a40d198a71f22940d8b8916a07c784f9c6eff8 test/results/test100-amd64-binary
f4c4ecf1c76bbda3f5bd0ad1e8ebf02a2a65191b082b631e183b47c2f77af905 test/results/test100-armv7l-binary
bc9552bede2942ee73b66d95e226119a0e743dcd89333a53c14fd97b99f7f038 test/results/test100-knight-posix-binary
5c2e4304819ccfa154b5ea732e9eab58efd7ba1dd1baf8cc88a18447c34b9256 test/results/test100-x86-binary
34e6d535e30ef8826a4ad1a4d08b76cfa370c54595599ad3be784b64c9cd8ec5 test/results/test11-amd64-binary
893695e6f300a0fe055fad935a56abd549bba70d1d39c535a680f41bbb73f117 test/results/test11-armv7l-binary
955b564d2c89abf2cfc6c80d766cd11479d146b828dec69e654b0958a62d5e6e test/results/test11-knight-native-binary
@ -84,47 +84,47 @@ d8dbd22939091d04ccc969d848b4e4e2a6b5c9a8c91779923830fd6aa1a0f779 test/results/t
cc0213dd7b1c368c1245c30a5c7fb520f8e1beded3acf136c48f2a015f29df0b test/results/test16-armv7l-binary
84f5472ce5711b9cad28fcd4c177eea673047c2561ea010ccb6bf5f50d89c713 test/results/test16-knight-posix-binary
aeb94a4142633f20d7be4f8e74f0d5edc9050afb76f49cb504a1c264bf1ef96b test/results/test16-x86-binary
edbb413c0a1e97e57c08192190c37345759e05356394d1c9f43b2eb205b65769 test/results/test17-amd64-binary
8d5cba902233400423508c52998464933ef235c7b1af16fdabf84b12d0108f27 test/results/test17-armv7l-binary
25c03ca09cee551b898245f91106e78a551ddb09e55dc5d36138e7f3955be47d test/results/test17-knight-native-binary
fae9fbfc8a37c06dbc363b7bcb48eae27fbebc8a6abf715fd7617b01a1699866 test/results/test17-knight-posix-binary
56a83f34aa57b10efdea636135491043d8c8b09dc09b451b58c27801ca82990e test/results/test17-x86-binary
7e38dd8213d8602480dd4912e0c25ee59c85427e69a5792f8b2cf109ec3ee8fd test/results/test18-amd64-binary
a72e9d90e28aa70ba0877a89f224a8469e066958e76c3eec1abcf3b63275ba55 test/results/test18-armv7l-binary
6aed160d00be97a25b0784a295fac4f5cd982b5f11db88a0a9ccfd8fcb648336 test/results/test18-knight-native-binary
a349ede620824075e13967da7fd820fb6c470983797c1623658d9c7412411923 test/results/test18-knight-posix-binary
a5d415b35a87e48e1a23de44562790139335841c4a42f16c36b34079e169d7e6 test/results/test18-x86-binary
694316a1b38e9191bcfa35d1fe58deabdc6c580cd3f18f0c7912e4bcf1bcaea0 test/results/test19-amd64-binary
1960ba445f1196db351d957ffc7848b7457c0cc377331d072797bd25dcc5fe11 test/results/test19-armv7l-binary
6ce1194d10113b7e43f60d31221852c7742b8e19a0ce14f75a0005907266d128 test/results/test19-knight-posix-binary
c5283a342fe434a4bf96dbc5635f95015ae693d24b0a22118ff5e110e770bcc2 test/results/test19-x86-binary
826be2799b14be83652ee28ae18e45728987205346eaba5fbffd4c6894dbec33 test/results/test17-amd64-binary
1e630c50633011aa2e78f05be2bf71f90e288117008d53b7c673255e74c4cac2 test/results/test17-armv7l-binary
b46237241ef76e88d9101e8c11e48fcacc4723b34fc2c67e5c6a0496a9ae24a9 test/results/test17-knight-native-binary
cf67b71d4010910ccf2264c52d7253b092afa88be14890f36927fe595d71cf7f test/results/test17-knight-posix-binary
a29899250b4ee3c722045a8feedaec2e0f537b9a148f23d10d1979e135f14038 test/results/test17-x86-binary
b5835e920eef10e0e0772d51354f1a7d5c34534f7ec287570283a5e8d5c201f3 test/results/test18-amd64-binary
b2b679f715351406abefa43531d9374b118d77abdb1c5edd38f65a7b586461f4 test/results/test18-armv7l-binary
d5e1a0396571762571bc09a9747a917f6cb60bf344de39eb008f6cbf0adc0042 test/results/test18-knight-native-binary
d69b92c0fa774dfcdbfdf836d753caed64f99f7a3d9b73187c3e2aea53b30085 test/results/test18-knight-posix-binary
b70966d2d772c95c3a555dac582137a7a7dfdc97fc9edaced5107313233dd7f8 test/results/test18-x86-binary
b29dadde5f218707a5c574b0097e1d84091baae0df28d79645b517d7bc4dffda test/results/test19-amd64-binary
1d579a8ada5d3a2b3bc17dd9a4e5f0d65bd5e7fc173df47548afc8e09fbc30ce test/results/test19-armv7l-binary
364ed9dcff06fe54ea4d96c6b3b99a9456fd4dd95ea726f98fdf7cfb8eb3825b test/results/test19-knight-posix-binary
8b28cb3303fa119378294acb2592fe4eec2ac5346932596e3f8570dc50af6cf9 test/results/test19-x86-binary
15950e38bab2603bfcb369b9a4941abfc2e37b7cbbd2cf9b22ebfc9aab46d5ad test/results/test20-amd64-binary
80612ce05a2e43fceb34139577be98794505cd324ff5bc84ba004a21828b5f86 test/results/test20-armv7l-binary
7ae1ba10ff6b6bf34148945ee44b9461aa6d1a16094e77fdf34b76e9a360a5b2 test/results/test20-knight-native-binary
6a59795dbb4397d0efaf1ad613d646ec435eec62db30eb758bcf2499d651520e test/results/test20-knight-posix-binary
0d1a43723d0482a21028164e33ff116d66302d6042a88eacf08436a351494530 test/results/test20-x86-binary
b80de35e17d341cda9cd280437acb6b217841e18a5b01faf86ca461f6bf0d246 test/results/test21-amd64-binary
23ad3fc1acc3741e32964e6ebcc206716a6d8ba9fabf4ffa872a382621b7b2a9 test/results/test21-armv7l-binary
3247980035c27673a914a6568fdc4075fe721bf1e1006a19886d1ece529187cb test/results/test21-knight-posix-binary
f5d6430d6fade0d4acdaeda1662d9bfdeff881a75e2c877dc738f3485ddb4e63 test/results/test21-x86-binary
cc46cc20aedb9014ffd0b43514b519d0ac624f719c143cfc723330b9ff58b5ec test/results/test22-amd64-binary
8a2dbf66b8c89c4be1bb3b03ffe2e5a6a3a3b0a0991e88d381f672b13d159e9d test/results/test22-armv7l-binary
308cbf387fd7c78c180e456683295ef85a69675678299114ebe6a9eb1c37fc82 test/results/test22-knight-posix-binary
bc5690d7d3a94085cae5c37d0dfe3c6d393275b988bdc2091108ef51ad2141cf test/results/test22-x86-binary
bb6d97773fdc2e2253d1df47cb00d46b171379c1eaa39bc44bf7ded28aa78d2d test/results/test23-amd64-binary
8dfe0e371dec2a71448b1034b30534b6fcf8b08efa87fb0700718577173f7988 test/results/test23-armv7l-binary
304a07a1de7332e43f0ee8c0ff8104dee6906e32b18cd7d3088dcdc187456b40 test/results/test23-knight-posix-binary
161deab9f025c649e91ed2b6ff0704c3d5d127892d6866ad91f628c6b8f491b9 test/results/test23-x86-binary
44d06216e0bf9c2f8dfcb6684f6f6c0c0276f73c78c36a96454be84c8dc066af test/results/test24-amd64-binary
2c78c4dd802d801109f4deaa760bc8fa2331d035c36caf22b9cd74a060532167 test/results/test24-armv7l-binary
8502002b30ac65df6444119d065a514cb0f51894a32f695ce4bc470b3f108bb9 test/results/test24-knight-posix-binary
adb392ddd4f3daab1a9afc1eb0bf00cb388a6c45db7754f8455f39757e7f62f6 test/results/test24-x86-binary
68c7b81d0a03cb149a7f7a1cfbaafd8f0f5e1ee44c345278d05decd137e7c8cb test/results/test25-amd64-binary
32413f9e44359d121301b36dcda32890ba49cd67e4e9caefe98f8117be4ce224 test/results/test25-armv7l-binary
81c5d1f587f2f97f042f6dbe080aab0142eb3ebba77f06db5b3f8606966263b0 test/results/test25-x86-binary
a482f22f0e4ea273ad4fa0fe8fca4778fd48e4e7bfcfd2c79555e0da3d6058ec test/results/test26-amd64-binary
6b59f96ccead5c9541a9c3e4be5ec154e96914c548662a1ace5b0d68ef16c215 test/results/test26-armv7l-binary
8049bd1a3f0fab041ddb8ef58b3976e6ccc9d2ae1f5ee6e3a3fa6b5f9a7de501 test/results/test26-x86-binary
0fab8f708839019a8dcda693acf0542c585b00b464a700cdcb64dd0cdfb0b6a0 test/results/test21-amd64-binary
644b5a7f6f40828cebbca5e6537ce1aaaf9fa4f1451671a40e1cfd4516a30a2d test/results/test21-armv7l-binary
80d49242c8eec979b576c3455a57d46efa75014cf607fc777b59dc1943259a6e test/results/test21-knight-posix-binary
1fa52023ea0f9e18bc6fab2a62fc8383ff1a9d97a6f0e3da9698268bf7565b99 test/results/test21-x86-binary
8b3fc360938fe30c6b1a8c1fd368cd990761c35d8d0a3b5499cdca23127f36cf test/results/test22-amd64-binary
ef1c7437223311d13429b43f59aafe5b9cd3c01939b59a935aa1dd55f417ebcf test/results/test22-armv7l-binary
e3d91b246726be87c3216886205ad59d224cf6c5d8962e79af63d55f9b56234c test/results/test22-knight-posix-binary
46f4645cf23a415fe96f73826595a2dc29661fd2365978f387c256e0469bf51c test/results/test22-x86-binary
13a8033841a8805b13621e305755d0885154615fe1d126a3db4969854cfb8b40 test/results/test23-amd64-binary
9ef467b01c5af7f5c966671c5249ff8cb88f62e6c48fcd824254e0616d8d915c test/results/test23-armv7l-binary
897a5bc96a007a6eaf4337b630fb05d576fd42d35682c96a1f3c319f85f2b1ba test/results/test23-knight-posix-binary
f53e041af9ec8bc34f6b7accedafe0c3bc40e09edfee3ad18144e7bb04e274e6 test/results/test23-x86-binary
ed1eb588d8b14a370729d1426f8c1b1cc9cbfeaffe80012558ab74dadd82fbf8 test/results/test24-amd64-binary
91f8415a8358a26aa99706d990a35761cd5e4f313a32ef45ab5bc49a47435249 test/results/test24-armv7l-binary
44b37b8d45d8c0a6e983168e5646ef652deab2fcd327cb255bc2a71289f471ff test/results/test24-knight-posix-binary
29216c9761435396912cb03a414ac74cde165a522cf19a7cccac212b06d3a597 test/results/test24-x86-binary
d21614c94b45087430a034c1b971f2e9953a4b71f46ec2de00f8549e3b82f5db test/results/test25-amd64-binary
f414d86f296579ce1f9b6d21734c447ffe7327d324d43dfed5f4c1d20b322915 test/results/test25-armv7l-binary
74ba43bffc60656eb030e229ba5bb0b36dbae093cdbb3f59c9586b16d56002e5 test/results/test25-x86-binary
60206125928d77a758cd73ec8e85f8592423ce678570ebbe7876b71dc38aaeaf test/results/test26-amd64-binary
649349e01a90ce93ba72ba1b9bb81a9bd9d79b580ddff366173c98835c10b976 test/results/test26-armv7l-binary
576511f1f6699e7798bcab2f36bf8eb86825fd13748770b17f46c3a691200b01 test/results/test26-x86-binary
717c42e1a1a91ef5b67ce298bc92a148418a5dec6761a358a52b22a01f16c928 test/results/test99-amd64-binary
4e759b212b087824f7b0f14c5147272c9984c4a4d00074b2fd771c3d004c9aec test/results/test99-armv7l-binary
dcc61bc8c785d59b2bdf61c97eb6fac877410cde5b8d46e53907ad569020b004 test/results/test99-knight-native-binary

View File

@ -1 +1 @@
77224b14932a67cddb5e21c3ba1f7a1604ce48b2a63792791eb48fbb76110053 test/test100/proof
fd4328489c1e301b162557e6d21a44753690e002c43ba3b5bd942d6cb810d74c test/test100/proof

View File

@ -24,6 +24,7 @@ bin/M2-Planet --architecture amd64 -f test/common_amd64/functions/file.c \
-f functions/match.c \
-f functions/in_set.c \
-f functions/numerate_number.c \
-f functions/file_print.c \
-f test/test19/getopt.c \
-o test/test19/getopt.M1 || exit 1

View File

@ -24,6 +24,7 @@ bin/M2-Planet --architecture armv7l -f test/common_armv7l/functions/file.c \
-f functions/match.c \
-f functions/in_set.c \
-f functions/numerate_number.c \
-f functions/file_print.c \
-f test/test19/getopt.c \
-o test/test19/getopt.M1 || exit 1

View File

@ -24,6 +24,7 @@ bin/M2-Planet --architecture knight-posix -f test/common_knight/functions/file.c
-f functions/match.c \
-f functions/in_set.c \
-f functions/numerate_number.c \
-f functions/file_print.c \
-f test/test19/getopt.c \
-o test/test19/getopt.M1 || exit 1

View File

@ -24,6 +24,7 @@ bin/M2-Planet --architecture x86 -f test/common_x86/functions/file.c \
-f functions/match.c \
-f functions/in_set.c \
-f functions/numerate_number.c \
-f functions/file_print.c \
-f test/test19/getopt.c \
-o test/test19/getopt.M1 || exit 1

View File

@ -21,11 +21,11 @@ set -x
-f test/common_amd64/functions/malloc.c \
-f functions/calloc.c \
-f functions/in_set.c \
-f test/common_amd64/functions/file.c \
-f test/common_amd64/functions/exit.c \
-f functions/numerate_number.c \
-f functions/match.c \
-f test/common_amd64/functions/file.c \
-f functions/file_print.c \
-f test/common_amd64/functions/exit.c \
-f test/test26/lisp.c \
-f test/test26/lisp_cell.c \
-f test/test26/lisp_eval.c \

View File

@ -21,11 +21,11 @@ set -x
-f test/common_armv7l/functions/malloc.c \
-f functions/calloc.c \
-f functions/in_set.c \
-f test/common_armv7l/functions/file.c \
-f test/common_armv7l/functions/exit.c \
-f functions/numerate_number.c \
-f functions/match.c \
-f test/common_armv7l/functions/file.c \
-f functions/file_print.c \
-f test/common_armv7l/functions/exit.c \
-f test/test26/lisp.c \
-f test/test26/lisp_cell.c \
-f test/test26/lisp_eval.c \

View File

@ -21,11 +21,11 @@ set -x
-f test/common_x86/functions/malloc.c \
-f functions/calloc.c \
-f functions/in_set.c \
-f test/common_x86/functions/file.c \
-f test/common_x86/functions/exit.c \
-f functions/numerate_number.c \
-f functions/match.c \
-f test/common_x86/functions/file.c \
-f functions/file_print.c \
-f test/common_x86/functions/exit.c \
-f test/test26/lisp.c \
-f test/test26/lisp_cell.c \
-f test/test26/lisp_eval.c \