Variable system, debugging and core error system...
This commit is contained in:
parent
88b19f1ca4
commit
40f30e0bbb
4
heyo.x
4
heyo.x
@ -1,8 +1,8 @@
|
||||
type integer = 4;
|
||||
type character = 1;
|
||||
|
||||
text: character [] = "Heyo world!";
|
||||
size: integer = 12;
|
||||
text: character = "Heyo world!";
|
||||
size: integer = 12;
|
||||
|
||||
main ():
|
||||
system (1, 1, #text, size);
|
||||
|
61
xiranda.c
61
xiranda.c
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user