From 423ed1f29e82e9b8dacae17279ab83d374a22be7 Mon Sep 17 00:00:00 2001 From: xolatile Date: Sat, 6 Apr 2024 20:33:13 -0400 Subject: [PATCH] Very ugly work in progress... --- heyo.x | 7 ------- xiranda.c | 29 ++++++++++++++++++++--------- тест.срб | 23 +++++++++++++++++++++++ 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/heyo.x b/heyo.x index 30b81f0..37cd0bc 100644 --- a/heyo.x +++ b/heyo.x @@ -1,13 +1,6 @@ одреди слово = 1; одреди број = 4; -одреди системски_позив ( - читај = 0, - пиши = 1, - отвори = 2, - затвори = 3, - изађи = 60) - одреди описивач ( улаз, излаз) diff --git a/xiranda.c b/xiranda.c index da455d3..6f8752a 100644 --- a/xiranda.c +++ b/xiranda.c @@ -42,12 +42,24 @@ static void add_coin (int data, int size, char * text) { } static void kill (char * text, int offset) { + int i; terminal_colour (colour_red, effect_bold); echo (text); terminal_cancel (); echo (coin_text [offset]); echo ("\n"); - /*exit (log_failure);*/ + for (i = 0; i < offset + 3; ++i) { + if (i == offset) { + terminal_colour (colour_red, effect_bold); + echo (coin_text [i]); + echo (" "); + terminal_cancel (); + } else { + echo (coin_text [i]); + echo (" "); + } + } + echo ("\n"); } int main (void) { @@ -107,14 +119,13 @@ int main (void) { int counter = 0; type_size [type_code] = 4; for (++offset; offset < coin_code; ++offset) { - if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ')')) { - ++offset; - break; - } else if (coin_data [offset] == coin_marker) { + if (coin_data [offset] == coin_marker) { string_copy (constant_name [constant_code], coin_text [offset]); constant_type [constant_code] = type_code; ++offset; - if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ',')) { + if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ')')) { + break; + } else if ((coin_data [offset] == coin_symbol) && (* coin_text [offset] == ',')) { constant_data [constant_code] = counter; ++counter; ++constant_code; @@ -125,9 +136,9 @@ int main (void) { constant_data [constant_code] = number; counter = number + 1; ++constant_code; - } else kill ("Expected number:", offset); - } else kill ("Expected = or ,:", offset); - } else kill ("Expected either marker or close symbol: ", offset); + } else kill ("Expected constant data number:", offset); + } else kill ("Expected = or , or ) ", offset); + } else kill ("Expected constant name marker: ", offset); } ++type_code; } else kill ("Expected equal or open bracket symbol: ", offset); diff --git a/тест.срб b/тест.срб index 81ce81d..6a0a301 100644 --- a/тест.срб +++ b/тест.срб @@ -49,3 +49,26 @@ видимо_се врати 60 крај + +----------------------------------------------- + +одреди слово = 1; +одреди број = 4; + +одреди описивач ( + улаз, + излаз) + +одреди системски_позив ( + читај = 0, + пиши = 1, + отвори = 2, + затвори = 3, + изађи = 60) + +текст: слово = "Здраво свете!"; +дужина: број = 12; + +главна_процедура (): + изврши (пиши, излаз, #текст, дужина); + врати;;