From 691a6a5e119ca2414a3a43c372ac6429bd69e46b Mon Sep 17 00:00:00 2001 From: xolatile Date: Sun, 7 Apr 2024 16:37:32 -0400 Subject: [PATCH] Added functions and enumeration assignment, I should sleep... --- heyo.x | 7 +++++++ xiranda.c | 30 +++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/heyo.x b/heyo.x index 37cd0bc..2fd1a5f 100644 --- a/heyo.x +++ b/heyo.x @@ -5,6 +5,13 @@ улаз, излаз) +одреди системски_позив ( + читај = 0, + пиши = 1, + отвори = 2, + затвори = 3, + изађи = 60) + текст: слово = "Здраво свете!"; дужина: број = 12; diff --git a/xiranda.c b/xiranda.c index 3da1993..bdd0e37 100644 --- a/xiranda.c +++ b/xiranda.c @@ -4,8 +4,8 @@ static int coin_code = 0; static int type_code = 0; static int variable_code = 0; -static int constant_code = 0;/* -static int function_code = 0;*/ +static int constant_code = 0; +static int function_code = 0; static int coin_data [240] = { 0 }; static int coin_size [240] = { 0 }; @@ -21,12 +21,12 @@ static int variable_data [27] = { 0 }; static char constant_name [30] [40] = { "" }; static int constant_type [30] = { 0 }; static int constant_data [30] = { 0 }; -/* + static char function_name [9] [40] = { "" }; static int function_type [9] = { 0 }; static char function_argument_name [9] [6] [40] = { { "" } }; static int function_argument_type [9] [6] = { { 0 } }; -*/ + #include #include /* @@ -127,7 +127,6 @@ int main (void) { constant_data [constant_code] = counter; ++counter; ++constant_code; - /*++offset;*/ break; } else if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ',')) { constant_data [constant_code] = counter; @@ -140,6 +139,12 @@ int main (void) { constant_data [constant_code] = number; counter = number + 1; ++constant_code; + ++offset; + if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ')')) { + break; + } else if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ',')) { + ++counter; /* Should I replace this? */ + } else kill ("Expected , or ) ", offset); } else kill ("Expected constant data number:", offset); } else kill ("Expected = or , or ) ", offset); } else kill ("Expected constant name marker: ", offset); @@ -180,10 +185,10 @@ int main (void) { variable_data [variable_code] = 33; ++offset; if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ';')) { - printf ("\033[1;32m%s: %s %i\033[0m\n", + printf ("\033[1;32m%s: %s %s, 0\033[0m\n", variable_name [variable_code], (type_size [variable_type [variable_code]] == 1) ? "db" : "dd", - variable_data [variable_code]); + coin_text [offset - 1]); ++variable_code; } else kill ("Expected semicolon symbol: ", offset); } else if (coin_data [offset] == coin_marker) { @@ -199,6 +204,16 @@ int main (void) { } else kill ("Expected marker, number or string: ", offset); } else kill ("Expected equal symbol: ", offset); } else kill ("Expected type: ", offset); + } else if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == '(')) { + string_copy (function_name [function_code], coin_text [offset - 1]); + ++offset; + if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ')')) { + ++offset; + if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ':')) { + echo ("PROCESSING FUNCTION...\n"); + ++function_code; + } else kill ("Expected void function, symbol :: ", offset); + } else kill ("Expected void function, symbol (): ", offset); } else kill ("Expected colon, open bracket or equal symbol: ", offset); } } @@ -206,6 +221,7 @@ int main (void) { /**/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]); /**/for (i = 0; i < constant_code; ++i) printf ("-constant- %s : %s = %i;\n", constant_name [i], type_name [constant_type [i]], constant_data [i]); + /**/for (i = 0; i < function_code; ++i) printf ("-function- %s;\n", function_name [i]); buffer = deallocate (buffer);