Як написати інтерпретатор
Прочитавши: 2826
Щоб створити інтерпретатор, треба написати парсер вихідного коду, цикл виконання байт-коду і величезна кількість кодів стандартної бібліотеки. Це не завжди весело і просто, якщо не скористатися інструментами, які будуть генерувати компілятор і парсер для вас. З ними написати інтерпретатор мови для знаючої людини буде простіше простого. Розглянемо на прикладі написання інтерпретатора з JIT на PyPy.
Інструкція
Оберіть мову для написання. В даному випадку це brainfuck. Він дуже простий і складається з стрічки цілих чисел, які ініціалізовані нулем, і 1 покажчика на поточну комірку у стрічці. У мові всього вісім команд: «>» - переміщення покажчика в наступну комірку, «
Напишіть інтерпретатор на звичайному Пітоні. Лічильник команд буде зберігати покажчики на поточну інструкцію. Перший вираз витягне інструкцію, після декілька операторів визначать, як її виконати. Опустіть реалізацію операторів «[» і «]», оскільки вони повинні поміняти лічильник команд на становище такий же дужки.
Реалізуйте клас Tape, який зберігає покажчик на поточне число і стрічку цілих чисел. Стрічка з потреби буде збільшуватися. Парс вихідний код заздалегідь, щоб безліч коментарів не читалися по одному байту. Зробіть заодно словник для дужок, щоб при необхідності можна було знайти в ньому парні дужки.
Виконайте def parse (program). Ця функція повертає рядки тільки з команд і словника парних дужок.
З'єднайте все, що вийшло, і ви отримаєте робочий інтерпретатор brainfuck. Запустіть інтерпретатор на Python і переконайтеся в його працездатності. Це лише одиничний випадок написання інтерпретатора з використанням найпростішого мови. При бажанні писати можна практично на будь-якій мові, ознайомившись з його властивостями і призначенням.