Вот это по-настоящему дельный совет. Я когда-то сам по тем же граблям ходил. http://c-fvm.sourceforge.net/index.php
Более 10 лет назад я сделал контроллер вот для этих ребят,
http://www.airtecasia.com/ Все работает на базе интерпретатора, благо пневматика не требует высокой производительности от контроллера. Интерпретируемый код лежит в I2C EEPROM.
Заказчикам нужна была гибкость, поэтому все настройки выведены в отдельные "таблицы", которые лежат в том же EEPROM. Интерпретируемый код лазит по этим таблицам и берет оттуда данные. В результате все настройки под потребности конечного потребителя делается на заводе "на лету", без малейшей модификации алгоритма. Я им написал несложный редактор, который представляет эти "таблицы" в читаемом виде и позволяет их модифицировать. В результате меня много лет никто не теребит с требованиями что-то подправить в софтинке, они все делают сами при помощи этого редактора.
А вот интерпретатор я по отсутствию опыта тогда наваял довольно угробищный. В качестве основы взял язычок IL, который для PLC, а это в общем-то отстой, по сути - ассемблер виртуального 16-битного процессора. Надо было Форт ставить.
И только потом, намного позже, осмыслив опыт этого и других проектов, я сделал более-менее универсальный "генератор интерпретаторов" пот подобные задачи, см. ссылку