Я так понимаю что одна строка кода - одна перфокарта и иметь поля фиксированной длины и расположения позволит построить транслятор быстрее и компактнее по размеру.
Ранее делал на python с использованием библиотеки PLY небольшой вариант транслятора БЕМШ. По ходу стало ясно, что не смотря на возможность задавать грамматику в виде декларативных правил + действия к ним (PEG, flex, bison), код получается не сильно проще если кодировать парсер вручную. Ручные парсеры позволяют выдавать сообщения о синтаксических и семантических (некоторых) ошибках гораздо более читаемые + предлагать возможные исправления/предположения.
Потом надо будет посмотреть в сторону использования парсер-комбинаторов для построения ast и дальнейшего преобразования кусков этого ast в машинный код.
no subject
Date: 2021-05-01 01:53 am (UTC)Ранее делал на python с использованием библиотеки PLY небольшой вариант транслятора БЕМШ.
По ходу стало ясно, что не смотря на возможность задавать грамматику в виде декларативных правил + действия к ним (PEG, flex, bison), код получается не сильно проще если кодировать парсер вручную. Ручные парсеры позволяют выдавать сообщения о синтаксических и семантических (некоторых) ошибках гораздо более читаемые + предлагать возможные исправления/предположения.
https://github.com/x86128/py-bemsh
Потом надо будет посмотреть в сторону использования парсер-комбинаторов для построения ast и дальнейшего преобразования кусков этого ast в машинный код.