Bladeren bron

Variable system, debugging and core error system...

master
Ognjen Milan Robovic 1 maand geleden
bovenliggende
commit
40f30e0bbb
2 gewijzigde bestanden met toevoegingen van 54 en 11 verwijderingen
  1. +2
    -2
      heyo.x
  2. +52
    -9
      xiranda.c

+ 2
- 2
heyo.x Bestand weergeven

@@ -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);


+ 52
- 9
xiranda.c Bestand weergeven

@@ -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);



Laden…
Annuleren
Opslaan