ЋИРИЛИСП:0,9

This commit is contained in:
kappa 2019-02-21 21:41:46 +01:00
parent 9ada71164a
commit edd55717d4
4 changed files with 38 additions and 3 deletions

View file

@ -80,6 +80,7 @@ void init()
addSymbolInternal("примени", &applyInt, 0); addSymbolInternal("примени", &applyInt, 0);
addSymbolInternal("прикажи", &displayInt, 0); addSymbolInternal("прикажи", &displayInt, 0);
addSymbolInternal("штампај", &printInt, 0); addSymbolInternal("штампај", &printInt, 0);
addSymbolInternal("читај", &readInt, 0);
addSymbolInternal("почни", &beginInt, 0); addSymbolInternal("почни", &beginInt, 0);
addSymbolInternal("баци", &throwInt, 0); addSymbolInternal("баци", &throwInt, 0);
addSymbolInternal("направи-ниску", &makeStrInt, 0); addSymbolInternal("направи-ниску", &makeStrInt, 0);

View file

@ -792,6 +792,16 @@ object printInt(object parameters)
return copyObject(CAR(parameters)); return copyObject(CAR(parameters));
} }
object readInt(object parameters)
{
if (listLength(parameters) != 0)
{
SIGERR(argumentNumberError);
}
return Read("", stdin);
}
object beginInt(object parameters) object beginInt(object parameters)
{ {
object last; object last;

View file

@ -36,6 +36,7 @@ object eqvQInt(object parameters);
object applyInt(object parameters, env currentEnv); object applyInt(object parameters, env currentEnv);
object displayInt(object parameters); object displayInt(object parameters);
object printInt(object parameters); object printInt(object parameters);
object readInt(object parameters);
object beginInt(object parameters); object beginInt(object parameters);
object throwInt(object parameters); object throwInt(object parameters);
object makeStrInt(object parameters); object makeStrInt(object parameters);

View file

@ -60,11 +60,34 @@
(листа 'ако (саар клаузе) (листа 'ако (саар клаузе)
(ако (нил? (сдар клаузе)) (ако (нил? (сдар клаузе))
(саар клаузе) (саар клаузе)
(листа 'примени 'почни (конс 'почни (сдар клаузе)))
(листа 'навод (сдар клаузе))))
(ако (нил? (сдр клаузе)) (ако (нил? (сдр клаузе))
() ()
(примени услов (сдр клаузе))))))) (примени услов (сдр клаузе)))))))
(опиши (цеоброј? џ) (опиши (мапирај процедура листа)
(услов
((није (листа? листа)) (баци "Функција се не може мапирати\
на не-листу"))
((није (процедура? процедура)) (баци "Не може се мапирати\
не-функција"))
((нил? листа) ())
(#и (конс
(процедура (сар листа))
(мапирај процедура (сдр листа))))))
(опиши-складњу (нека листа-променљивих . тело)
(опиши (валидна-нека-листа-променљивих листа)
(опиши (дужине2 листа)
(= (дужина листа) 2))
(примени и (мапирај дужине2 листа)))
(ако (није (валидна-нека-листа-променљивих листа-променљивих))
(баци "Невалидна листа променљивих за \"нека\" процедуру")
(почни
(опиши имена (мапирај сар листа-променљивих))
(опиши вредности (мапирај садр листа-променљивих))
(опиши ламбда-израз (надовежи (листа 'ламбда имена) тело))
(конс ламбда-израз вредности))))
(опиши (цео-број? џ)
(= (именилац (нетачно->тачно џ)) 1)) (= (именилац (нетачно->тачно џ)) 1))