Існує багато проблем, які кажуть "інтерпретувати X", де X - проста мова. На мою думку, це занадто нудно. Щоб дати людям, що зволікають в Інтернеті, щось цікаве зробити, ви можете спробувати зробити це завдання:
Виклик
Виберіть мову $LANG. $LANGможе бути будь-якою повною мовою програмування або повним підмножиною мови програмування. Пам’ятайте, що якщо ви пропустите функцію своєї мови $LANGдля інтерпретації, ви також не повинні використовувати її для власної програми, оскільки ваша публікація також повинна бути написана $LANG.
Напишіть компілятор / перекладач для $LANGнаписаного в $LANG. Ви можете використовувати всі засоби (включаючи evalта друзів) своєї мови, які доступні для написання цього компілятора. Щоб зробити завдання більш складним, існує одне обмеження: Ви маєте змогу інтерпретувати / компілювати всі дійсні програми, $LANGкрім самого вашого перекладача / компілятора. Якщо трапляється, що програма, яку слід інтерпретувати / компілювати, - це ваш інтерпретатор чи компілятор (незалежно від імені файлу), ваша програма повинна зробити щось зовсім не пов'язане з функціональністю інтерпретатора чи компілятора (наприклад, переробки або друку Hello, world!).
Щоб зробити це завдання ще складнішим, ваша програма не повинна читати власне джерело при складанні чи інтерпретації.
Технічні умови
- Це завдання - код гольфу. Виграє подання з найменшими значеннями, що є правильним. У випадку зрівноваження рішення, яке було подано першим, виграє.
- Ваша програма / сценарій має читати програму, яку слід інтерпретувати з файлу. Ви можете жорстко кодувати його шлях та ім'я. Коли файл читається, ви можете або компілювати його в інший файл (Це повинен бути виконаний у вашій системі), або запустити його безпосередньо. Якщо
$LANGне вистачає можливостей читання файлів, ви можете вибрати інший спосіб читання у відповідному коді$LANG. Ви не можете вибрати$LANGяк підмножину іншої мови, але з вилученими можливостями читання файлів. - Діють звичайні правила гольф-коду. Тобто: ваша особиста мова для домашніх тварин, яку ви створили тільки для вирішення цього завдання, заборонена, якщо рішення стає тривіальним за її допомогою (наприклад, визначення одночасної програми, яка точно реалізує рішення). Зловживання правилами заохочується.