|
|
@@ -29,7 +29,6 @@ static int function_argument_type [9] [6] = { { 0 } }; |
|
|
|
*/ |
|
|
|
#include <stdio.h> |
|
|
|
#include <stdlib.h> |
|
|
|
|
|
|
|
/* |
|
|
|
static char * register_list [] = { |
|
|
|
"rax","rdi","rsi","rdx","r10","r8","r9" |
|
|
@@ -42,11 +41,13 @@ static void add_coin (int data, int size, char * text) { |
|
|
|
++coin_code; |
|
|
|
} |
|
|
|
|
|
|
|
static void kill (char * text) { |
|
|
|
static void kill (char * text, int offset) { |
|
|
|
terminal_colour (colour_red, effect_bold); |
|
|
|
echo (text); |
|
|
|
terminal_cancel (); |
|
|
|
exit (log_failure); |
|
|
|
echo (coin_text [offset]); |
|
|
|
echo ("\n"); |
|
|
|
/*exit (log_failure);*/ |
|
|
|
} |
|
|
|
|
|
|
|
int main (void) { |
|
|
@@ -80,7 +81,7 @@ int main (void) { |
|
|
|
} else { |
|
|
|
terminal_colour (colour_red, effect_bold); |
|
|
|
if (character_compare_array (buffer [offset], " \t\n") == false) { |
|
|
|
kill ("Illegal character...\n"); |
|
|
|
kill ("Illegal character: ", offset); |
|
|
|
} |
|
|
|
} |
|
|
|
out (& buffer [offset], length); |
|
|
@@ -100,14 +101,56 @@ int main (void) { |
|
|
|
++offset; |
|
|
|
if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ';')) { |
|
|
|
++type_code; |
|
|
|
} else kill ("Expected semicolon symbol...\n"); |
|
|
|
} else kill ("Expected number...\n"); |
|
|
|
} else kill ("Expected equal symbol...\n"); |
|
|
|
} else kill ("Expected marker...\n"); |
|
|
|
} else kill ("Expected semicolon symbol: ", offset); |
|
|
|
} else kill ("Expected number: ", offset); |
|
|
|
} else kill ("Expected equal symbol: ", offset); |
|
|
|
} else kill ("Expected marker: ", offset); |
|
|
|
} else if (coin_data [offset] == coin_marker) { |
|
|
|
++offset; |
|
|
|
if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ':')) { |
|
|
|
string_copy (variable_name [variable_code], coin_text [offset - 1]); |
|
|
|
++offset; |
|
|
|
if (coin_data [offset] == coin_marker) { |
|
|
|
int j; |
|
|
|
for (j = 0; j < type_code; ++j) { |
|
|
|
if (string_compare (coin_text [offset], type_name [j]) == true) { |
|
|
|
variable_type [variable_code] = j; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if (j == type_code) { |
|
|
|
kill ("Unknown type: ", offset); |
|
|
|
} |
|
|
|
++offset; |
|
|
|
if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == '=')) { |
|
|
|
++offset; |
|
|
|
if (coin_data [offset] == coin_number) { |
|
|
|
variable_data [variable_code] = atoi (coin_text [offset]); |
|
|
|
++offset; |
|
|
|
if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ';')) { |
|
|
|
++variable_code; |
|
|
|
} else kill ("Expected semicolon symbol: ", offset); |
|
|
|
} else if (coin_data [offset] == coin_string) { |
|
|
|
variable_data [variable_code] = 33; |
|
|
|
++offset; |
|
|
|
if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ';')) { |
|
|
|
++variable_code; |
|
|
|
} else kill ("Expected semicolon symbol: ", offset); |
|
|
|
} else if (coin_data [offset] == coin_marker) { |
|
|
|
variable_data [variable_code] = 66; |
|
|
|
++offset; |
|
|
|
if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ';')) { |
|
|
|
++variable_code; |
|
|
|
} else kill ("Expected semicolon symbol: ", offset); |
|
|
|
} else kill ("Expected marker, number or string: ", offset); |
|
|
|
} else kill ("Expected equal symbol: ", offset); |
|
|
|
} else kill ("Expected type: ", offset); |
|
|
|
} else kill ("Expected colon symbol: ", offset); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/**/for (i = 0; i < type_code; ++i) printf ("-type- %s : %i\n", type_name [i], type_size [i]); |
|
|
|
/**/for (i = 0; i < type_code; ++i) printf ("-type- %s = %i;\n", type_name [i], type_size [i]); |
|
|
|
/**/for (i = 0; i < variable_code; ++i) printf ("-variable- %s : %s = %i;\n", variable_name [i], type_name [variable_type [i]], variable_data [i]); |
|
|
|
|
|
|
|
buffer = deallocate (buffer); |
|
|
|
|
|
|
|