Шеста задача

  1. Шеста задача е тук! Трябва да имплементирате интерпретатор за език, базиран на кариерата на този младеж.

    Това е бонус задача. Като такава, не се брои към минималния брой предадени задачи, за да завършите курса, и не вдига летвата на скалата за оценяване. Една идея по-сложна е от досегашните домашни. За сметка на това имате седмица и половина, носи 10 точки и е изключително забавна.

    Срокът е до четвъртък (29. декември) 19:00 ч.

    Може да задавате всякакви въпроси по условието тук.

  2. Весела Коледа и Рубинена Нова Година!

    Нямам много опит с интерпретатори, но условието ArnoldC+- кодът да се подава като блок ми се видя странно.

    Досега в блоковете сме писали само Руби код - това значи ли, че за да работи интерпретаторът, трябва да дефинирам ключовите думи на ArnoldC+- като някакви методи в Руби? Всъщност може ли блок в Руби да съдържа код, който не е валиден Руби код?

    Друга идея ми се струва да се опитам да превърна блока в стринг и после да парсвам стринга, но доколкото разбрах, не това искате.

    Какво да направя?

  3. Това, което ви подаваме в блока е валиден Ruby код. Не можеш директно да вземеш блок в Ruby като стринг. Ще трябва някак да изпълниш този код, пък той може да генерира каквото ти трябва.

  4. Какъв код може да се изпълнява извън "main функцията" дефинирана от ts_showtime/you_have_been_terminated? От примерите и тестовете става ясно, че можем да дефинираме функции, но можем ли да дефинираме променливи? Можем ли да изпълняваме други функции?

  5. Използваш ги като аритметични.

    get_to_the_chopper bool_var
    here_is_my_invitation 11
    you_are_not_you_you_are_me 8
    enough_talk
    
    talk_to_the_hand bool_var
    

    Този код ще изведе 0, защото bool_var първо става 11, а после става 11 == 8, т.е. false, което е 0 в ArnoldC+-.

    get_to_the_chopper new_bool
    here_is_my_invitation bool_var
    consider_that_a_divorce no_problemo
    enough_talk
    
    talk_to_the_hand new_bool
    

    Това пък извежда 1, защото new_bool първо става равно на bool_var, което е 0, а после става равно на 0 or no_problemo, което е 1, защото no_problemo е 1.

    Мисля, че условията на if трябва да са само променливи или числа.

  6. @Михаил, няма нужда. Няма да тестваме с каквато и да е вариация на невалиден ArnoldC+- код също.

    @Николина, what Петър said. И действително условията могат да са само променливи или числа.

    @Петър, да. main функцията е съвсем обикновена функция, с разликата, че се дефинира по различен начин и се изпълнява веднага след като се parse-не програмата. В нея (както и в другите функции) могат да се дефинират функции.

Трябва да сте влезли в системата, за да може да отговаряте на теми.