суббота, 6 мая 2017 г.

Интерпретация программного кода

Вот такая вот учебная, но отнюдь не простая задачка: написать  интерпретатор программных кодов, написанных на максимально упрощённом C-подобном языке.

Такого типа задачи могут на практике вылезать в самых разных случаях, и с самых разных языков ... описания чего-либо.

Я предполагаю написать это на C++. Такая задача куда проще решалась бы на ... скажем, Python ... или Lisp, Ocaml и т.д. Но ... "мы не ищем лёгких путей" 😉 - пусть будет C++.

Но не исключено, что в какой-то момент мне это наскучит 😉 ... и я продолжу делать то же на Python...

Развитие проекта, по ходу его рождения, описывается здесь: интерпретатор программного кода (на C++). Там уже есть готовый код работающего интерпретатора, который можно взять, скомпилировать и наслаждаться... : экспериментировать, вносить изменения.

А основная (и, как понимаете, самая сложная в реализации) часть - вычисление выражений - здесь: обратная польская запись. Там планируется параллельно рассмотреть 2 альтернативные реализации: а). метод рекурсивного спуска и б). алгоритм сортировочной станции Э.Дейкстры (как заметно чаще более известный). Пока представлен только 1-й из них ... именно как менее известный. 😉

Все, кого могут заинтересовать подобные вещи - присоединяйтесь!
Ваши соображения, пожелания, замечания и обсуждения могут существенным образом повлиять на конечный результат этого мини-проекта.

P.S. Всё это предоставляется под лицензией "Общественное достояние - на тех же условиях" (Creative Commons Attribution ShareAlike), см. Attribution-ShareAlike.

P.S. Там после 09.05.2017 (с Днём Победы! 😉) существенные расширения: для лексического разбора и трансляции операторов языка применены регулярные выражения в C++, использование которых ранее детально описывались в публикации Регулярные выражения C/C++.