Як написати інтерпретатор

Як написати інтерпретатор

Щоб створити інтерпретатор, треба написати парсер вихідного коду, цикл виконання байт-коду і величезну кількість кодів стандартної бібліотеки. Це не завжди весело і просто, якщо не скористатися інструментами, які будуть генерувати компілятор і парсер для вас. З ними написати інтерпретатор мови для знаючої людини буде простіше простого. Розгляньмо на прикладі написання інтерпретатора з JIT на PyPy.

Інструкція

1. Виберіть мову для написання. У даному випадку це brainfuck. Він дуже простий і складається зі стрічки цілих чисел, які ініціалізовані нулем, і 1 покажчика на поточну комірку в стрічці. У мові всього вісім команд: ">" - пересування індексу до наступної комірки, "


2. Напишіть інтерпретатор на звичайному Пітоні. Лічильник команд зберігатиме вказівники на поточну інструкцію. Перший вираз витягне інструкцію, після кілька операторів визначать, як її виконати. Опустіть реалізацію операторів "[" і "]", оскільки вони повинні поміняти лічильник команд на положення такої ж дужки.

3. Реалізуйте клас Tape, що зберігає індекс на поточне число і стрічку цілих чисел. Стрічка за необхідності буде збільшуватися. Парсите початковий код заздалегідь, щоб безліч коментарів не читалися по одному байту. Зробіть заодно словник для дужок, щоб при необхідності можна було знайти в ньому парні дужки.

4. Виконайте def parse (program). Ця функція повертає рядки тільки з команд і словника парних дужок.


5. З 'єднайте все, що вийшло, і ви отримаєте робочий інтерпретатор brainfuck. Запустіть інтерпретатор на Пітоні і переконайтеся в його працездатності. Це лише одиничний випадок написання інтерпретатора з використанням найпростішої мови. При бажанні писати можна практично будь-якою мовою, ознайомившись з її властивостями і призначенням.


Надрукувати