Я написал виртуальную машину на c, основанную на виртуальной машине с розеттакодом, но со временем я ее сильно изменил, и теперь я сталкиваюсь с реальностью.
Я изменил его настолько, насколько моя машина теперь работает совершенно по-другому. Он имеет разные типы данных, инструкции, метки вместо вычисления смещения вручную и т. Д.
В Rosettacode VM также имеется синтаксический анализатор, который может интерпретировать очень простой язык сценариев, который вы можете использовать, если еще, в то время и так далее.
Проблема в том, что синтаксический анализатор, включенный в RC vm, очень хорошо интерпретирует синтаксис, но он не работает с метками, вместо меток вы должны определить смещение для пунктов назначения перехода. Конечно, есть больше различий, но я не собираюсь переносить парсер под мои нужды, если есть более простой способ.
Итак, мой актуальный вопрос
Когда у меня есть виртуальная машина с четко определенным набором команд и компилятором, который может преобразовать этот виртуальный набор команд в переносимый байт-код.
Каков наилучший способ создания синтаксического анализатора, который может интерпретировать базовый синтаксис в моих собственных инструкциях?
Было бы лучше всего, если бы уже был механизм (включая метки), так что мне просто нужно переопределить его, чтобы он соответствовал моему собственному набору инструкций.
Заранее спасибо