Как написать интерпретатор?

3 ноября 2014 г. Просмотров: 669
Чтобы создать интерпретатор, надо написать парсер исходного кода, цикл исполнения байт-кода и огромное количество кодов стандартной библиотеки. Это не всегда весело и просто, если не воспользоваться инструментами, которые будут генерировать компилятор и парсер для вас. С ними написать интерпретатор языка для знающего человека будет проще простого. Рассмотрим на примере написания интерпретатора с JIT на PyPy.

Инструкция

  • Выберите язык для написания. В данном случае это brainfuck. Он очень прост и состоит из ленты целых чисел, которые инициализированы нулем, и 1 указателя на текущую ячейку в ленте. В языке всего восемь команд: «>» — перемещение указателя в следующую ячейку, «
  • Напишите интерпретатор на обыкновенном Питоне. Счетчик команд будет хранить указатели на текущую инструкцию. Первое выражение извлечет инструкцию, после несколько операторов определят, как ее выполнить. Опустите реализацию операторов «[» и «]», поскольку они должны поменять счетчик команд на положение такой же скобки.
  • Реализуйте класс Tape, хранящий указатель на текущее число и ленту целых чисел. Лента по необходимости будет увеличиваться. Парсите исходный код заранее, чтобы множество комментариев не читались по одному байту. Сделайте заодно словарь для скобок, чтобы при необходимости можно было найти в нем парные скобки.
  • Выполните def parse(program). Эта функция возвращает строки только из команд и словаря парных скобок.
  • Соедините все, что получилось, и вы получите рабочий интерпретатор brainfuck. Запустите интерпретатор на Питоне и убедитесь в его работоспособности. Это лишь единичный случай написания интерпретатора с использованием самого простого языка. При желании писать можно практически на любом языке, ознакомившись с его свойствами и назначением.
  • Оцените статью!